From 7884f760943339e31b7cbfbe694308a355b52eea Mon Sep 17 00:00:00 2001 From: Artur Pryka Date: Thu, 8 Oct 2020 10:23:08 +0200 Subject: [PATCH] 3.14.5 --- dist/external_d3_c3/keen-dataviz.js | 269 ++++++++++-------- dist/external_d3_c3/keen-dataviz.js.map | 2 +- dist/external_d3_c3/keen-dataviz.min.js | 2 +- dist/external_d3_c3/keen-dataviz.min.js.map | 2 +- dist/external_d3_c3/node/keen-dataviz.js | 273 ++++++++++--------- dist/external_d3_c3/node/keen-dataviz.js.map | 2 +- dist/keen-dataviz.js | 269 ++++++++++-------- dist/keen-dataviz.js.map | 2 +- dist/keen-dataviz.min.js | 4 +- dist/keen-dataviz.min.js.map | 2 +- package-lock.json | 2 +- package.json | 2 +- 12 files changed, 456 insertions(+), 375 deletions(-) diff --git a/dist/external_d3_c3/keen-dataviz.js b/dist/external_d3_c3/keen-dataviz.js index ff1d301..920d61f 100644 --- a/dist/external_d3_c3/keen-dataviz.js +++ b/dist/external_d3_c3/keen-dataviz.js @@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 20); +/******/ return __webpack_require__(__webpack_require__.s = 21); /******/ }) /************************************************************************/ /******/ ([ @@ -610,27 +610,27 @@ var _append = __webpack_require__(8); var append = _interopRequireWildcard(_append); -var _delete = __webpack_require__(22); +var _delete = __webpack_require__(23); var del = _interopRequireWildcard(_delete); -var _filter = __webpack_require__(23); +var _filter = __webpack_require__(24); var filter = _interopRequireWildcard(_filter); -var _insert = __webpack_require__(24); +var _insert = __webpack_require__(25); var insert = _interopRequireWildcard(_insert); -var _select = __webpack_require__(25); +var _select = __webpack_require__(26); var select = _interopRequireWildcard(_select); -var _sort = __webpack_require__(26); +var _sort = __webpack_require__(27); var sort = _interopRequireWildcard(_sort); -var _update = __webpack_require__(27); +var _update = __webpack_require__(28); var update = _interopRequireWildcard(_update); @@ -640,7 +640,7 @@ var _analyses2 = _interopRequireDefault(_analyses); var _extend = __webpack_require__(5); -var _parsers = __webpack_require__(28); +var _parsers = __webpack_require__(29); var _parsers2 = _interopRequireDefault(_parsers); @@ -836,6 +836,40 @@ exports.default = { "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +exports.flatten = flatten; +// Pure awesomeness by Will Rayner (penguinboy) +// https://gist.github.com/penguinboy/762197 + +function flatten(ob) { + var toReturn = {}; + for (var i in ob) { + if (!ob.hasOwnProperty(i)) continue; + if (_typeof(ob[i]) == 'object' && ob[i] !== null) { + var flatObject = flatten(ob[i]); + for (var x in flatObject) { + if (!flatObject.hasOwnProperty(x)) continue; + toReturn[i + '.' + x] = flatObject[x]; + } + } else { + toReturn[i] = ob[i]; + } + } + return toReturn; +}; + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); @@ -856,7 +890,7 @@ function stripHtmlTags(inputString) { } /***/ }), -/* 15 */ +/* 16 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -886,7 +920,7 @@ function extendDeep(target) { } /***/ }), -/* 16 */ +/* 17 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -897,7 +931,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = renderDownloadButton; -var _downloadResults = __webpack_require__(40); +var _downloadResults = __webpack_require__(41); var _downloadResults2 = _interopRequireDefault(_downloadResults); @@ -930,7 +964,7 @@ function renderDownloadButton() { }; /***/ }), -/* 17 */ +/* 18 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -941,11 +975,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = exportImage; -var _domToImage = __webpack_require__(41); +var _domToImage = __webpack_require__(42); var _domToImage2 = _interopRequireDefault(_domToImage); -var _fileSaver = __webpack_require__(42); +var _fileSaver = __webpack_require__(43); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -969,7 +1003,7 @@ function exportImage(obj) { } /***/ }), -/* 18 */ +/* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1028,7 +1062,7 @@ function exportData(obj) { } /***/ }), -/* 19 */ +/* 20 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {/*! @@ -1045,7 +1079,7 @@ function exportData(obj) { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(7))) /***/ }), -/* 20 */ +/* 21 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1056,7 +1090,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.Dataset = exports.Dataviz = exports.keenGlobals = exports.extendKeenGlobalObject = undefined; -var _index = __webpack_require__(21); +var _index = __webpack_require__(22); Object.defineProperty(exports, 'Dataviz', { enumerable: true, @@ -1095,7 +1129,7 @@ exports.default = _index.Dataviz; /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(7))) /***/ }), -/* 21 */ +/* 22 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1131,11 +1165,11 @@ var _c = __webpack_require__(10); var _c2 = _interopRequireDefault(_c); -var _package = __webpack_require__(31); +var _package = __webpack_require__(32); var _package2 = _interopRequireDefault(_package); -var _data = __webpack_require__(32); +var _data = __webpack_require__(33); var _data2 = _interopRequireDefault(_data); @@ -1145,29 +1179,29 @@ var _assertDateString = __webpack_require__(11); var _assertDateString2 = _interopRequireDefault(_assertDateString); -var _stripHtmlTags = __webpack_require__(14); +var _stripHtmlTags = __webpack_require__(15); var _escapeHtml = __webpack_require__(4); -var _libraries = __webpack_require__(33); +var _libraries = __webpack_require__(34); var _libraries2 = _interopRequireDefault(_libraries); -var _extendDeep = __webpack_require__(15); +var _extendDeep = __webpack_require__(16); -var _exportSvg = __webpack_require__(17); +var _exportSvg = __webpack_require__(18); var _exportSvg2 = _interopRequireDefault(_exportSvg); -var _exportData = __webpack_require__(18); +var _exportData = __webpack_require__(19); var _exportData2 = _interopRequireDefault(_exportData); -var _renderDownloadBtn = __webpack_require__(16); +var _renderDownloadBtn = __webpack_require__(17); var _renderDownloadBtn2 = _interopRequireDefault(_renderDownloadBtn); -var _renderExecutionMetadata = __webpack_require__(53); +var _renderExecutionMetadata = __webpack_require__(54); var _renderExecutionMetadata2 = _interopRequireDefault(_renderExecutionMetadata); @@ -1175,7 +1209,7 @@ var _copyToClipboard = __webpack_require__(1); var _copyToClipboard2 = _interopRequireDefault(_copyToClipboard); -var _index = __webpack_require__(54); +var _index = __webpack_require__(55); var _index2 = _interopRequireDefault(_index); @@ -2171,7 +2205,7 @@ function domReady(fn) { exports.default = Dataviz; /***/ }), -/* 22 */ +/* 23 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2207,7 +2241,7 @@ function deleteRow(q) { } /***/ }), -/* 23 */ +/* 24 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2257,7 +2291,7 @@ function filterRows(fn) { } /***/ }), -/* 24 */ +/* 25 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2359,7 +2393,7 @@ function insertRow(index, str, input) { } /***/ }), -/* 25 */ +/* 26 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2396,7 +2430,7 @@ function selectRow(q) { } /***/ }), -/* 26 */ +/* 27 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2466,7 +2500,7 @@ function sortRows(str, comp) { } /***/ }), -/* 27 */ +/* 28 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2565,7 +2599,7 @@ function updateRow(q, input) { } /***/ }), -/* 28 */ +/* 29 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2578,10 +2612,12 @@ exports.default = initialize; var _each = __webpack_require__(0); -var _flatten = __webpack_require__(29); +var _flatten = __webpack_require__(14); var _object = __webpack_require__(30); +var _createExtractionKeys = __webpack_require__(31); + var Dataset = void 0; /* injected */ function initialize(lib) { @@ -2726,8 +2762,8 @@ function parseExtraction() { return function (res) { var datasetExtraction = new Dataset().type('extraction'); - // get keys of the Object, static schema - var names = Object.keys((0, _flatten.flatten)(res.result[0])); + var datasetKeys = (0, _createExtractionKeys.createExtractionKeys)(res.result); + var names = Array.from(datasetKeys); var tableConfig = config && config.table; if (tableConfig && tableConfig.schema === 'dynamic') { @@ -2801,7 +2837,7 @@ var parsers = { }; /***/ }), -/* 29 */ +/* 30 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2810,32 +2846,13 @@ var parsers = { Object.defineProperty(exports, "__esModule", { value: true }); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.flatten = flatten; -// Pure awesomeness by Will Rayner (penguinboy) -// https://gist.github.com/penguinboy/762197 - -function flatten(ob) { - var toReturn = {}; - for (var i in ob) { - if (!ob.hasOwnProperty(i)) continue; - if (_typeof(ob[i]) == 'object' && ob[i] !== null) { - var flatObject = flatten(ob[i]); - for (var x in flatObject) { - if (!flatObject.hasOwnProperty(x)) continue; - toReturn[i + '.' + x] = flatObject[x]; - } - } else { - toReturn[i] = ob[i]; - } - } - return toReturn; -}; +exports.valueAtDeepKey = valueAtDeepKey; +function valueAtDeepKey(obj, is, value) { + if (typeof is == 'string') return valueAtDeepKey(obj, is.split('.'), value);else if (is.length == 1 && value !== undefined && obj !== null && typeof obj[is[0]] !== 'undefined') return obj[is[0]] = value;else if (is.length == 0) return obj;else if (typeof is === 'undefined' || typeof obj === 'undefined' || is === null || obj === null || typeof obj[is[0]] === 'undefined') return null;else return valueAtDeepKey(obj[is[0]], is.slice(1), value); +} /***/ }), -/* 30 */ +/* 31 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2844,19 +2861,29 @@ function flatten(ob) { Object.defineProperty(exports, "__esModule", { value: true }); -exports.valueAtDeepKey = valueAtDeepKey; -function valueAtDeepKey(obj, is, value) { - if (typeof is == 'string') return valueAtDeepKey(obj, is.split('.'), value);else if (is.length == 1 && value !== undefined && obj !== null && typeof obj[is[0]] !== 'undefined') return obj[is[0]] = value;else if (is.length == 0) return obj;else if (typeof is === 'undefined' || typeof obj === 'undefined' || is === null || obj === null || typeof obj[is[0]] === 'undefined') return null;else return valueAtDeepKey(obj[is[0]], is.slice(1), value); +exports.createExtractionKeys = createExtractionKeys; + +var _flatten = __webpack_require__(14); + +function createExtractionKeys(results) { + var keys = new Set(); + results.forEach(function (result) { + Object.keys((0, _flatten.flatten)(result)).map(function (key) { + keys.add(key); + }); + }); + + return keys; } /***/ }), -/* 31 */ +/* 32 */ /***/ (function(module) { -module.exports = {"name":"keen-dataviz","description":"Data Visualization SDK for Keen IO","license":"MIT","version":"3.14.4","main":"dist/external_d3_c3/node/keen-dataviz.js","browser":"dist/external_d3_c3/keen-dataviz.js","style":"dist/keen-dataviz.css","scripts":{"start":"concurrently --kill-others \"NODE_ENV=development webpack-dev-server\" \"npm run postcss-watch\"","postcss-watch":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o test/demo/keen-dataviz.css --watch --config postcss.config.js","build":"NODE_ENV=production webpack -p && npm run build:css && NODE_ENV=production OPTIMIZE_MINIMIZE=1 webpack -p && npm run build:css && npm run build:css:min && npm run build:external_d3_c3 && npm run build:external_d3_c3:css && npm run build:external_d3_c3:css:min && npm run build:node","build:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.css --config postcss.config.js","build:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.css --config postcss.config.js","build:external_d3_c3:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3":"NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p && NODE_ENV=production EXTERNAL_D3_C3=1 OPTIMIZE_MINIMIZE=1 webpack -p","build:node":"TARGET=node NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p","profile":"webpack --profile --json > stats.json","analyze":"webpack-bundle-analyzer stats.json /dist","version":"npm run build && git add .","postversion":"git push && git push --tags && npm publish","test":"NODE_ENV=test jest","test:watch":"NODE_ENV=test jest --watch"},"repository":{"type":"git","url":"https://github.com/keen/keen-dataviz.js.git"},"bugs":"https://github.com/keen/keen-dataviz.js/issues","author":"Keen.IO (https://keen.io/)","contributors":["Dustin Larimer (https://github.com/dustinlarimer)","Joanne Cheng (https://github.com/joannecheng)","Eric Anderson (https://github.com/aroc)","Joe Wegner (https://github.com/josephwegner)","Sara Falkoff (https://github.com/adamkasprowicz)","Dariusz Łacheta (https://github.com/dariuszlacheta)"],"homepage":"https://keen.io","keywords":["d3","c3","Analytics","Stats","Statistics","Visualization","Visualizations","Data Visualization","Chart","Charts","Charting","Svg","Dataviz","Plots","Graphs","Funnels"],"dependencies":{"c3":"^0.7.2","d3":"^5.11.0","dom-to-image":"^2.6.0","file-saver":"^2.0.1","promise-polyfill":"^8.0.0","rangeable":"^0.1.6"},"devDependencies":{"autoprefixer":"^8.2.0","babel-loader":"^7.1.4","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0","concurrently":"^3.5.1","cssnano":"^3.10.0","eslint":"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0","jest":"^22.4.3","jest-environment-jsdom-c3":"^2.0.0","nock":"^9.2.6","postcss":"^6.0.21","postcss-cli":"^5.0.0","postcss-color-function":"^4.0.1","postcss-css-variables":"^0.8.1","postcss-cssnext":"^2.4.0","postcss-import":"^8.0.2","postcss-loader":"^2.1.3","precss":"^3.1.2","regenerator-runtime":"^0.11.1","replace-in-file":"^3.4.0","style-loader":"^0.20.3","webpack":"^4.29.0","webpack-bundle-analyzer":"^3.3.2","webpack-cli":"^3.2.1","webpack-dev-server":"^3.3.1","xhr-mock":"^2.3.2"}}; +module.exports = {"name":"keen-dataviz","description":"Data Visualization SDK for Keen IO","license":"MIT","version":"3.14.5","main":"dist/external_d3_c3/node/keen-dataviz.js","browser":"dist/external_d3_c3/keen-dataviz.js","style":"dist/keen-dataviz.css","scripts":{"start":"concurrently --kill-others \"NODE_ENV=development webpack-dev-server\" \"npm run postcss-watch\"","postcss-watch":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o test/demo/keen-dataviz.css --watch --config postcss.config.js","build":"NODE_ENV=production webpack -p && npm run build:css && NODE_ENV=production OPTIMIZE_MINIMIZE=1 webpack -p && npm run build:css && npm run build:css:min && npm run build:external_d3_c3 && npm run build:external_d3_c3:css && npm run build:external_d3_c3:css:min && npm run build:node","build:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.css --config postcss.config.js","build:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.css --config postcss.config.js","build:external_d3_c3:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3":"NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p && NODE_ENV=production EXTERNAL_D3_C3=1 OPTIMIZE_MINIMIZE=1 webpack -p","build:node":"TARGET=node NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p","profile":"webpack --profile --json > stats.json","analyze":"webpack-bundle-analyzer stats.json /dist","version":"npm run build && git add .","postversion":"git push && git push --tags && npm publish","test":"NODE_ENV=test jest","test:watch":"NODE_ENV=test jest --watch"},"repository":{"type":"git","url":"https://github.com/keen/keen-dataviz.js.git"},"bugs":"https://github.com/keen/keen-dataviz.js/issues","author":"Keen.IO (https://keen.io/)","contributors":["Dustin Larimer (https://github.com/dustinlarimer)","Joanne Cheng (https://github.com/joannecheng)","Eric Anderson (https://github.com/aroc)","Joe Wegner (https://github.com/josephwegner)","Sara Falkoff (https://github.com/adamkasprowicz)","Dariusz Łacheta (https://github.com/dariuszlacheta)"],"homepage":"https://keen.io","keywords":["d3","c3","Analytics","Stats","Statistics","Visualization","Visualizations","Data Visualization","Chart","Charts","Charting","Svg","Dataviz","Plots","Graphs","Funnels"],"dependencies":{"c3":"^0.7.2","d3":"^5.11.0","dom-to-image":"^2.6.0","file-saver":"^2.0.1","promise-polyfill":"^8.0.0","rangeable":"^0.1.6"},"devDependencies":{"autoprefixer":"^8.2.0","babel-loader":"^7.1.4","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0","concurrently":"^3.5.1","cssnano":"^3.10.0","eslint":"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0","jest":"^22.4.3","jest-environment-jsdom-c3":"^2.0.0","nock":"^9.2.6","postcss":"^6.0.21","postcss-cli":"^5.0.0","postcss-color-function":"^4.0.1","postcss-css-variables":"^0.8.1","postcss-cssnext":"^2.4.0","postcss-import":"^8.0.2","postcss-loader":"^2.1.3","precss":"^3.1.2","regenerator-runtime":"^0.11.1","replace-in-file":"^3.4.0","style-loader":"^0.20.3","webpack":"^4.29.0","webpack-bundle-analyzer":"^3.3.2","webpack-cli":"^3.2.1","webpack-dev-server":"^3.3.1","xhr-mock":"^2.3.2"}}; /***/ }), -/* 32 */ +/* 33 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2881,7 +2908,7 @@ var _dataset2 = _interopRequireDefault(_dataset); var _extend = __webpack_require__(5); -var _stripHtmlTags = __webpack_require__(14); +var _stripHtmlTags = __webpack_require__(15); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -3099,7 +3126,7 @@ function getDefaultType(parser) { } /***/ }), -/* 33 */ +/* 34 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3149,71 +3176,71 @@ var _each = __webpack_require__(0); var _extend = __webpack_require__(5); -var _extendDeep = __webpack_require__(15); +var _extendDeep = __webpack_require__(16); var _assertDateString = __webpack_require__(11); var _assertDateString2 = _interopRequireDefault(_assertDateString); -var _defaultDateFormat = __webpack_require__(34); +var _defaultDateFormat = __webpack_require__(35); var _defaultDateFormat2 = _interopRequireDefault(_defaultDateFormat); -var _paginatingLegend = __webpack_require__(35); +var _paginatingLegend = __webpack_require__(36); var _paginatingLegend2 = _interopRequireDefault(_paginatingLegend); -var _tooltipContents = __webpack_require__(36); +var _tooltipContents = __webpack_require__(37); var _tooltipContents2 = _interopRequireDefault(_tooltipContents); -var _calculateRange = __webpack_require__(37); +var _calculateRange = __webpack_require__(38); var _calculateRange2 = _interopRequireDefault(_calculateRange); -var _calculatePercents = __webpack_require__(38); +var _calculatePercents = __webpack_require__(39); -var _message = __webpack_require__(39); +var _message = __webpack_require__(40); var _message2 = _interopRequireDefault(_message); -var _metric = __webpack_require__(43); +var _metric = __webpack_require__(44); var _metric2 = _interopRequireDefault(_metric); -var _table = __webpack_require__(44); +var _table = __webpack_require__(45); var _table2 = _interopRequireDefault(_table); -var _spinner = __webpack_require__(45); +var _spinner = __webpack_require__(46); var _spinner2 = _interopRequireDefault(_spinner); -var _funnel = __webpack_require__(46); +var _funnel = __webpack_require__(47); var _funnel2 = _interopRequireDefault(_funnel); -var _funnel3d = __webpack_require__(47); +var _funnel3d = __webpack_require__(48); var _funnel3d2 = _interopRequireDefault(_funnel3d); -var _horizontalFunnel = __webpack_require__(48); +var _horizontalFunnel = __webpack_require__(49); var _horizontalFunnel2 = _interopRequireDefault(_horizontalFunnel); -var _horizontalFunnel3d = __webpack_require__(49); +var _horizontalFunnel3d = __webpack_require__(50); var _horizontalFunnel3d2 = _interopRequireDefault(_horizontalFunnel3d); -var _metricCombo = __webpack_require__(50); +var _metricCombo = __webpack_require__(51); var _metricCombo2 = _interopRequireDefault(_metricCombo); -var _heatmap = __webpack_require__(51); +var _heatmap = __webpack_require__(52); var _heatmap2 = _interopRequireDefault(_heatmap); -var _choropleth = __webpack_require__(52); +var _choropleth = __webpack_require__(53); var _choropleth2 = _interopRequireDefault(_choropleth); @@ -3586,7 +3613,7 @@ function bindResizeListener(fn) { } /***/ }), -/* 34 */ +/* 35 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3625,7 +3652,7 @@ exports.default = function (startDate, endDate) { }; /***/ }), -/* 35 */ +/* 36 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3849,7 +3876,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } /***/ }), -/* 36 */ +/* 37 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3896,7 +3923,7 @@ exports.default = function (d, defaultTitleFormat, defaultValueFormat, color) { var _escapeHtml = __webpack_require__(4); /***/ }), -/* 37 */ +/* 38 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3921,7 +3948,7 @@ function calculateRange(matrix) { } /***/ }), -/* 38 */ +/* 39 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3962,7 +3989,7 @@ function calculatePercents(matrix, sumArray) { } /***/ }), -/* 39 */ +/* 40 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3974,7 +4001,7 @@ Object.defineProperty(exports, "__esModule", { var _escapeHtml = __webpack_require__(4); -var _renderDownloadBtn = __webpack_require__(16); +var _renderDownloadBtn = __webpack_require__(17); var _renderDownloadBtn2 = _interopRequireDefault(_renderDownloadBtn); @@ -4056,7 +4083,7 @@ exports.default = { }; /***/ }), -/* 40 */ +/* 41 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4067,11 +4094,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = downloadResults; -var _exportSvg = __webpack_require__(17); +var _exportSvg = __webpack_require__(18); var _exportSvg2 = _interopRequireDefault(_exportSvg); -var _exportData = __webpack_require__(18); +var _exportData = __webpack_require__(19); var _exportData2 = _interopRequireDefault(_exportData); @@ -4119,7 +4146,7 @@ function downloadResults(obj) { } /***/ }), -/* 41 */ +/* 42 */ /***/ (function(module, exports, __webpack_require__) { (function (global) { @@ -4894,7 +4921,7 @@ function downloadResults(obj) { /***/ }), -/* 42 */ +/* 43 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b), @@ -4906,7 +4933,7 @@ function downloadResults(obj) { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(7))) /***/ }), -/* 43 */ +/* 44 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5064,7 +5091,7 @@ exports.default = { }; /***/ }), -/* 44 */ +/* 45 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5369,7 +5396,7 @@ var destroy = function destroy() {}; exports.default = { render: render, update: update, destroy: destroy }; /***/ }), -/* 45 */ +/* 46 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5412,7 +5439,7 @@ exports.default = { }; /***/ }), -/* 46 */ +/* 47 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5693,7 +5720,7 @@ var Funnel = function () { exports.default = Funnel; /***/ }), -/* 47 */ +/* 48 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5998,7 +6025,7 @@ var Funnel3d = function () { exports.default = Funnel3d; /***/ }), -/* 48 */ +/* 49 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6276,7 +6303,7 @@ var HorizontalFunnel = function () { exports.default = HorizontalFunnel; /***/ }), -/* 49 */ +/* 50 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6585,7 +6612,7 @@ var HorizontalFunnel3d = function () { exports.default = HorizontalFunnel3d; /***/ }), -/* 50 */ +/* 51 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6756,7 +6783,7 @@ var MetricCombo = function () { exports.default = MetricCombo; /***/ }), -/* 51 */ +/* 52 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6774,7 +6801,7 @@ var _d2 = __webpack_require__(2); var d3 = _interopRequireWildcard(_d2); -var _rangeable = __webpack_require__(19); +var _rangeable = __webpack_require__(20); var _rangeable2 = _interopRequireDefault(_rangeable); @@ -7017,7 +7044,7 @@ var Heatmap = function () { exports.default = Heatmap; /***/ }), -/* 52 */ +/* 53 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7037,7 +7064,7 @@ var _d2 = __webpack_require__(2); var d3 = _interopRequireWildcard(_d2); -var _rangeable = __webpack_require__(19); +var _rangeable = __webpack_require__(20); var _rangeable2 = _interopRequireDefault(_rangeable); @@ -7248,7 +7275,7 @@ var Choropleth = function () { exports.default = Choropleth; /***/ }), -/* 53 */ +/* 54 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7331,7 +7358,7 @@ function renderExecutionMetadata() { } /***/ }), -/* 54 */ +/* 55 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7341,15 +7368,15 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _autocollector = __webpack_require__(55); +var _autocollector = __webpack_require__(56); var _autocollector2 = _interopRequireDefault(_autocollector); -var _modern = __webpack_require__(56); +var _modern = __webpack_require__(57); var _modern2 = _interopRequireDefault(_modern); -var _dracula = __webpack_require__(57); +var _dracula = __webpack_require__(58); var _dracula2 = _interopRequireDefault(_dracula); @@ -7362,7 +7389,7 @@ exports.default = { }; /***/ }), -/* 55 */ +/* 56 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7378,7 +7405,7 @@ var palette = { exports.default = palette; /***/ }), -/* 56 */ +/* 57 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7394,7 +7421,7 @@ var palette = { exports.default = palette; /***/ }), -/* 57 */ +/* 58 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; diff --git a/dist/external_d3_c3/keen-dataviz.js.map b/dist/external_d3_c3/keen-dataviz.js.map index 9a303a0..ea94767 100644 --- a/dist/external_d3_c3/keen-dataviz.js.map +++ b/dist/external_d3_c3/keen-dataviz.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./lib/utils/each.js","webpack:///./lib/utils/copy-to-clipboard.js","webpack:///external \"d3\"","webpack:///./lib/utils/pretty-number.js","webpack:///./lib/utils/escape-html.js","webpack:///./lib/utils/extend.js","webpack:///./lib/utils/svg-text-wrap.js","webpack:///(webpack)/buildin/global.js","webpack:///./lib/dataset/modifiers/append.js","webpack:///./lib/dataset/utils/create-null-list.js","webpack:///external \"c3\"","webpack:///./lib/utils/assert-date-string.js","webpack:///./lib/dataset/index.js","webpack:///./lib/dataset/utils/analyses.js","webpack:///./lib/utils/strip-html-tags.js","webpack:///./lib/utils/extend-deep.js","webpack:///./lib/utils/render-download-btn.js","webpack:///./lib/utils/export-svg.js","webpack:///./lib/utils/export-data.js","webpack:///./node_modules/rangeable/dist/rangeable.min.js","webpack:///./lib/browser.js","webpack:///./lib/index.js","webpack:///./lib/dataset/modifiers/delete.js","webpack:///./lib/dataset/modifiers/filter.js","webpack:///./lib/dataset/modifiers/insert.js","webpack:///./lib/dataset/modifiers/select.js","webpack:///./lib/dataset/modifiers/sort.js","webpack:///./lib/dataset/modifiers/update.js","webpack:///./lib/dataset/utils/parsers.js","webpack:///./lib/dataset/utils/flatten.js","webpack:///./lib/dataset/utils/object.js","webpack:///./lib/data.js","webpack:///./lib/libraries/index.js","webpack:///./lib/libraries/c3/extensions/default-date-format.js","webpack:///./lib/libraries/c3/extensions/paginating-legend.js","webpack:///./lib/libraries/c3/extensions/tooltip-contents.js","webpack:///./lib/dataset/utils/calculate-range.js","webpack:///./lib/dataset/utils/calculate-percents.js","webpack:///./lib/libraries/default/message.js","webpack:///./lib/utils/download-results.js","webpack:///./node_modules/dom-to-image/src/dom-to-image.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./lib/libraries/default/metric.js","webpack:///./lib/libraries/default/table.js","webpack:///./lib/libraries/default/spinner.js","webpack:///./lib/libraries/default/funnel.js","webpack:///./lib/libraries/default/funnel-3d.js","webpack:///./lib/libraries/default/horizontal-funnel.js","webpack:///./lib/libraries/default/horizontal-funnel-3d.js","webpack:///./lib/libraries/default/metric-combo.js","webpack:///./lib/libraries/default/heatmap.js","webpack:///./lib/libraries/default/choropleth.js","webpack:///./lib/utils/render-execution-metadata.js","webpack:///./lib/palettes/index.js","webpack:///./lib/palettes/autocollector.js","webpack:///./lib/palettes/modern.js","webpack:///./lib/palettes/dracula.js"],"names":["each","o","cb","s","n","Array","length","call","hasOwnProperty","copyToClipboard","stickTooltip","event","tooltip","style","opacity","top","pageY","left","pageX","value","placeholder","document","createElement","body","appendChild","select","execCommand","removeChild","notification","padding","backgroundColor","fontSize","position","zIndex","transition","innerText","addEventListener","e","setTimeout","prettyNumber","input","Number","sciNo","toPrecision","prefix","suffixes","String","Math","abs","recurse","iteration","split","rhs","charAt","numNumerals","escapeHtml","matchHtmlRegExp","string","str","match","exec","escape","html","index","lastIndex","charCodeAt","substring","extend","target","i","arguments","prop","textWrap","d3","text","width","words","reverse","word","line","lineNumber","lineHeight","x","attr","y","dy","tspan","append","pop","push","join","node","getComputedTextLength","appendColumn","appendRow","self","args","prototype","slice","label","undefined","matrix","row","cell","concat","newRow","col","selectColumn","len","list","testObject","testString","getTime","isNaN","ISO_8601","test","del","filter","insert","sort","update","Dataset","config","meta","type","data","arr","set","coords","Error","colIndex","indexOf","rowIndex","colResult","rowResult","selectRow","analyses","parser","average","start","end","sum","avg","val","parseFloat","maximum","nums","max","apply","minimum","min","getColumnAverage","getRowAverage","getColumnSum","getRowSum","getColumnMaximum","getRowMaximum","getColumnMinimum","getRowMinimum","getColumnLabel","getRowIndex","stripHtmlTags","inputString","replace","extendDeep","key","renderDownloadButton","element","btnClass","isBtnRendered","parentNode","children","find","child","className","button","insertBefore","nextSibling","exportImage","obj","quality","bgcolor","domtoimage","toBlob","then","blob","exportData","generateCsvContent","csvContent","forEach","j","encodeURIComponent","supportedFormats","format","toLowerCase","includes","fileName","fileFormat","content","JSON","stringify","htmlElement","setAttribute","click","Dataviz","env","global","window","extendKeenGlobalObject","KeenDataviz","KeenDataset","Keen","keenGlobals","webpackKeenGlobals","options","c3","datavizInstance","defaultOptions","showDeprecationWarnings","showLoadingSpinner","container","containerElement","title","showTitle","subtitle","notes","theme","colors","colorMapping","ui","executionMetadata","utils","clickToCopyToClipboard","indexBy","labels","labelMapping","labelMappingRegExp","errorMapping","showErrorMessages","library","sortGroups","sortIntervals","results","stacked","dateFormat","legend","show","alignment","textMaxLength","pagination","offset","limit","pointer","axis","color","size","point","focus","expand","enabled","r","sensitivity","horizontal","order","selection","draggable","multiple","onselected","d","selectedItems","view","_artifacts","selected","reduce","prev","curr","grid","partialIntervalIndicator","timezone","table","schema","renderOnVisible","funnel","lines","resultValues","percents","countingMethod","decimals","marginBetweenElements","hover","effect3d","minimalSize","react","range","sparkline","choropleth","map","borders","showSlider","heatmap","palette","palettes","console","log","convertChartTypes","stacking","el","pattern","dataset","_prepared","_rendered","visuals","prepare","render","firstVisibilityState","visibilityState","callback","bind","libraries","default","register","name","actions","method","nodeName","querySelector","visual","attributes","fn","chartOptions","destroy","innerHTML","domReady","height","num","setLabels","updateColumn","updateRow","mapLabels","mapLabelsExec","valueAfterMatching","regExpAndLabel","regExpObj","labelMappingDimension","message","loader","spinner","firstResult","query","interval","timeframe","isArray","timeframes","resultItem","foundDifferent","timeframeItem","resultTimeframe","msg","error","deleteColumn","result","event_collection","analysis_type","ds2","Object","keys","returnValue","renderAsPromise","Promise","resolve","reject","customCallback","onrendered","shouldRenderExecutionMetadata","execution_metadata","shouldRenderDownloadBtn","buttons","download","mappedMsg","buildDomWrapper","IntersectionObserver","chartVisibleCallback","events","observer","isIntersecting","observe","hidden","visibilityChange","msHidden","webkitHidden","handleVisibilityChange","load","once","sortColumns","sortRows","bool","chartType","parseRawData","parseRequest","initialize","version","pkg","chart100percentWide","rangeChart","verticalAlignment","horizontalAlignment","align","legendItemsAlign","areachart","barchart","columnchart","linechart","piechart","testDom","readyState","DOMContentLoaded","removeEventListener","deleteRow","q","splice","filterColumns","filterRows","clone","selectedColumn","ri","insertColumn","insertRow","comp","head","cols","analysesUtilMethods","a","b","op","lib","parsers","parseMetric","res","parseInterval","record","parseGroupedMetric","parseGroupedInterval","group","parseDoubleGroupedMetric","rowLabel","parseDoubleGroupedInterval","parseFunnel","steps","parseList","parseExtraction","datasetExtraction","names","tableConfig","resultKeys","keyName","nameI","columns","iNames","parseHeatmapAxis","heatmapDataset","objKeys","metric","extraction","flatten","ob","toReturn","flatObject","valueAtDeepKey","is","parseResponse","response","parserArgs","selectedParser","metadata","filters","group_by","display_name","getDefaultTitle","visualization","chart_type","getDefaultType","Date","analysis","toUpperCase","timer","bindResizeListener","clearTimeout","delay","chart","c3Chart","parentWidth","offsetWidth","nextSiblingWidth","prevSiblingWidth","previousSibling","resize","defineC3","types","Funnel","Funnel3d","HorizontalFunnel","HorizontalFunnel3d","MetricCombo","Heatmap","Choropleth","c3Types","getPaddings","paddingName","parseInt","getComputedStyle","getDefaultOptions","ENFORCED_OPTIONS","bindto","renderingElement","offsetHeight","titleElement","subtitleElement","notesElement","DEFAULT_OPTIONS","extendedConfig","sumArray","oldMatrix","tick","clearOnRender","datasetMeta","spliceFrom","intervalTypes","removeLegend","rotated","culling","groups","categories","legendElement","remove","chartTypesWithPartialIntervalIndicator","partialResultsRegion","class","regions","contents","c3TooltipContents","ratio","id","valueFormatted","c3CustomTooltipFiltering","toFixed","c3options","c3CustomDataMapping","hide","generate","c3PaginatingLegend","onLegendRendered","onPaginated","flush","scope","onresize","attachEvent","startDate","endDate","timeDiff","months","ms","date","getMonth","getFullYear","getDate","domNode","legendConfig","round","total","columnsSorted","dataColumnsSorted","columnData","item","column","paginateHorizontalLeftElement","legendItemsElement","paginateVerticalElement","paginateHorizontalRightElement","paginateData","renderLegendComponent","renderPaginationComponent","labelShortened","legendItem","chartPartId","legendItemColorSample","prepend","tooltipElement","revert","isHidden","toggle","arrowUp","arrowDown","paginate","direction","diff","floor","clearSelectedText","empty","getSelection","removeAllRanges","defaultTitleFormat","defaultValueFormat","nameFormat","tooltip_format_name","titleFormat","tooltip_format_title","valueFormat","tooltip_format_value","CLASS","levelColor","tooltipName","calculateRange","newValues","calculateSumForPercents","calculatePercents","outer","inner","titleContainer","subtitleContainer","notesContainer","downloadResults","preventDefault","currentTarget","previousElementSibling","formatExtractionData","formattedResult","itemProp","acc","opts","prevValue","suffix","formattedNum","flexDifferenceStyle","resultDifference","differenceStyle","smallerValue","previousResults","isExtraction","comparedProp","resultClassName","previousResultsClassName","currentPage","_generateTableRows","defaultConfig","page","arrows","customConfig","datasetPaginated","pages","ceil","columnsArray","colNamesToMap","mapValues","mapDates","entries","rowColValue","rowColValueEscaped","pageNumber","prevPage","nextPage","_generateTableHeader","fieldNumber","columnNames","colName","colNameEscaped","isEmpty","querySelectorAll","sortOrder","getAttribute","checker","sortOrderNumber","nameA","nameB","first","shift","unshift","attachBtnEventListeners","btn","tableClass","artifacts","clearInterval","radius","marginBetweenSteps","margin","right","bottom","yMarginElement","funnelContainer","chartContainer","svgWidth","svgHeight","elemHeight","prevElemWidth","percent","minimalSizeStep","polygons","newPoints","points","selectAll","enter","p","handleMouseOver","polygonsHover","labelHover","thisLabel","handleMouseOut","on","handleClickToCopy","shadowCut","polygonsShadows","polygons3d","rgb","darker","xMarginElement","elemWidth","prevElemHeight","metricResults","c","prevResult","previous","currResult","current","count","percentDifference","labelClass","iconClass","containerTitle","containerSubtitle","chartRoot","currentCount","simpleTooltip","baseWidth","baseHeight","heatmapContainer","containerWidth","containerHeight","xLabel","Set","yLabel","formatData","timeFormat","timestamp","parse","formattedData","add","refValue","minRange","maxRange","getColor","defaultColor","baseColor","getColorAlpha","scaleLinear","domain","convertRGBAtoRGB","bg","getTileColor","alpha","solidColor","g","svg","rangeableInput","handleSliderChange","rects","nodes","rangeable","Rangeable","onChange","containerToString","customStyle","scriptRef","xLabelBase","yLabelBase","getAxisLabelRatio","base","labelSize","xAxis","scaleBand","axisBottom","tickSize","yAxis","axisLeft","chartTooltip","toString","raise","handleMouseMove","tooltipContent","clientX","clientY","handleMouseLeave","handleClick","bandwidth","choroplethContainer","heightChanges","onlyValues","minVal","maxVal","lightColor","hsl","brighter","l","darkColor","ramp","json","zoom","scaleExtent","translateExtent","zoomed","projection","geoMercator","fitSize","geoAlbersUsa","scale","path","geoPath","usData","features","theOne","properties","elementName","rangeContainer","tooltips","transform","renderExecutionMetadata","removeClassWithTimeOut","classList","handleCopyToClipboard","contains","dataList","dt","dd","autocollector","modern","dracula"],"mappings":"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C;AACvC;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oEAAoE,gBAAgB;;AAEpF;AACA;AACA,8EAA8E;AAC9E;;AAEA;;AAEA;AACA;AACA,wCAAwC,QAAQ;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,2CAA2C;AAC3C,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,YAAY;AAC3C;;AAEA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,sCAAsC;AACtC;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,yEAAyE;AACzE;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,iBAAiB;;AAEjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;;;;;;AChwBD,6JAAe,GAAG,IAAqC,CAAC,iCAAO,EAAE,oCAAC,CAAC;AAAA;AAAA;AAAA,oGAAC,CAAC,KAAK,EAA6E,CAAC,k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","file":"keen-dataviz.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"d3\"), require(\"c3\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"d3\", \"c3\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"d3\"), require(\"c3\")) : factory(root[\"d3\"], root[\"c3\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__10__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 20);\n","export function each(o, cb, s) {\n var n;\n if (!o) {\n return 0;\n }\n s = !s ? o : s;\n if (o instanceof Array) {\n // Indexed arrays, needed for Safari\n for (n = 0; n < o.length; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n // Hashtables\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false){\n return 0;\n }\n }\n }\n }\n return 1;\n}\n","function stickTooltip(event, tooltip) {\n tooltip.style.opacity = 0;\n tooltip.style.top = `${event.pageY}px`;\n tooltip.style.left = `${event.pageX + 10}px`;\n}\n\nexport default function copyToClipboard(value, event) {\n const placeholder = document.createElement('input');\n placeholder.value = value;\n document.body.appendChild(placeholder);\n placeholder.select();\n document.execCommand('copy');\n document.body.removeChild(placeholder);\n\n if (event) {\n const notification = document.createElement('div');\n notification.style.padding = '5px 10px';\n notification.style.backgroundColor = '#ffffff';\n notification.style.fontSize = '12px';\n notification.style.position = 'absolute';\n notification.style.top = `${event.pageY}px`;\n notification.style.left = `${event.pageX + 10}px`;\n notification.style.zIndex = '999';\n notification.style.opacity = 1;\n notification.style.transition = 'opacity 1s ease';\n notification.innerText = 'copied!';\n\n document.body.appendChild(notification);\n document.addEventListener('mousemove', e => stickTooltip(e, notification));\n\n setTimeout(() => {\n notification.style.opacity = 1;\n document.body.removeChild(notification);\n }, 1000);\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","export function prettyNumber(input) {\n // If it has 3 or fewer sig figs already, just return the number.\n var input = Number(input),\n sciNo = input.toPrecision(3),\n prefix = '',\n suffixes = ['', 'k', 'M', 'B', 'T'];\n\n if (Number(sciNo) == input && String(input).length <= 4) {\n return String(input);\n }\n\n if (Math.abs(input) >= 1000000000000000) {\n return sciNo;\n }\n\n if (input >= 1 || input <= -1) {\n if (input < 0){\n //Pull off the negative side and stash that.\n input = -input;\n prefix = '-';\n }\n return prefix + recurse(input, 0);\n }\n else {\n return input.toPrecision(3);\n }\n\n function recurse(input, iteration) {\n var input = String(input);\n var split = input.split('.');\n // If there's a dot\n if (split.length > 1) {\n // Keep the left hand side only\n input = split[0];\n var rhs = split[1];\n // If the left-hand side is too short, pad until it has 3 digits\n if (input.length == 2 && rhs.length > 0) {\n // Pad with right-hand side if possible\n if (rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n else if (input.length == 1 && rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n // Pad with right-hand side if possible\n if (rhs.length > 1) {\n input += rhs.charAt(1);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n }\n var numNumerals = input.length;\n // if it has a period, then numNumerals is 1 smaller than the string length:\n if (input.split('.').length > 1) {\n numNumerals--;\n }\n if (numNumerals <= 3) {\n return String(input) + suffixes[iteration];\n }\n else {\n return recurse(Number(input) / 1000, iteration + 1);\n }\n }\n}\n","const matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nexport function escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n for (var prop in arguments[i]){\n target[prop] = arguments[i][prop];\n }\n }\n return target;\n}\n","import * as d3 from 'd3';\n\nexport function textWrap(text, width) {\n text.each(function () {\n let text = d3.select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.1, // ems\n x = text.attr(\"x\"),\n y = text.attr(\"y\"),\n dy = 0, //parseFloat(text.attr(\"dy\")),\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\");\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n .text(word);\n }\n }\n });\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import createNullList from '../utils/create-null-list';\nimport { each } from '../../utils/each';\n\nexport function appendColumn(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n self.matrix[0].push(label);\n each(self.matrix, function(row, i) {\n let cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].push(cell);\n }\n });\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat(createNullList(self.matrix.length - 1 - input.length));\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String(self.matrix.length));\n }\n });\n }\n\n self.matrix[0].push(label);\n each(input, function(value, i){\n self.matrix[i+1][self.matrix[0].length-1] = value;\n });\n\n }\n\n return self;\n}\n\nexport function appendRow(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n const newRow = [];\n\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i){\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.push(newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length));\n }\n });\n }\n\n self.matrix.push(newRow.concat(input));\n }\n\n return self;\n}\n","export default function (len) {\n const list = [];\n for (let i = 0; i < len; i++) {\n list.push(null);\n }\n return list;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","export function testObject(input) {\n if (input !== null && typeof input.getTime === 'function' && !isNaN(input.getTime())) {\n return true;\n }\n return false;\n}\n\nexport function testString(input) {\n const ISO_8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n return ISO_8601.test(input);\n}\n\nexport default function (input) {\n if (typeof input === 'object') {\n return testObject(input);\n } else if (typeof input === 'string') {\n return testString(input);\n }\n return false;\n}\n","// Modifiers\nimport * as append from './modifiers/append';\nimport * as del from './modifiers/delete';\nimport * as filter from './modifiers/filter';\nimport * as insert from './modifiers/insert';\nimport * as select from './modifiers/select';\nimport * as sort from './modifiers/sort';\nimport * as update from './modifiers/update';\n\n// Utils\nimport analyses from './utils/analyses';\nimport { extend } from '../utils/extend';\nimport parsers from './utils/parsers';\n\nexport const Dataset = function (config = {}) {\n if (this instanceof Dataset === false) {\n return new Dataset(config);\n }\n\n this.matrix = [\n ['Index']\n ];\n this.meta = {\n type: undefined\n };\n this.config = config;\n}\n\nDataset.prototype.data = function (arr) {\n if (!arguments.length) return this.matrix;\n this.matrix = (arr instanceof Array ? arr : null);\n return this;\n};\n\nDataset.prototype.set = function (coords, value) {\n if (arguments.length < 2 || coords.length < 2) {\n throw Error('Incorrect arguments provided for #set method');\n }\n\n var colIndex = 'number' === typeof coords[0] ? coords[0] : this.matrix[0].indexOf(coords[0]),\n rowIndex = 'number' === typeof coords[1] ? coords[1] : select.selectColumn.call(this, 0).indexOf(coords[1]);\n\n var colResult = select.selectColumn.call(this, coords[0]),\n rowResult = select.selectRow.call(this, coords[1]);\n\n // Column doesn't exist, create and reset colIndex\n if (colResult.length < 1) {\n append.appendColumn.call(this, String(coords[0]));\n colIndex = this.matrix[0].length - 1;\n }\n\n // Row doesn't exist, create and reset rowIndex\n if (rowResult.length < 1) {\n append.appendRow.call(this, String(coords[1]));\n rowIndex = this.matrix.length - 1;\n }\n\n // Set provided value\n this.matrix[ rowIndex ][ colIndex ] = value;\n return this;\n};\n\nDataset.prototype.type = function(str){\n if (!arguments.length) return this.meta['type'];\n this.meta['type'] = (str ? String(str) : undefined);\n return this;\n};\n\nextend(Dataset.prototype, append);\nextend(Dataset.prototype, del);\nextend(Dataset.prototype, filter);\nextend(Dataset.prototype, insert);\nextend(Dataset.prototype, select);\nextend(Dataset.prototype, sort);\nextend(Dataset.prototype, update);\nextend(Dataset.prototype, analyses);\nDataset.parser = parsers(Dataset);\n\nexport default Dataset;\n","import { each } from '../../utils/each';\nimport { extend } from '../../utils/extend';\n\nfunction average(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0,\n avg = null;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum / set.length;\n}\n\nfunction maximum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.max.apply(Math, nums);\n}\n\nfunction minimum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.min.apply(Math, nums);\n}\n\nfunction sum(arr, start, end){\n // Copy set with given range\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum;\n}\n\nconst getColumnAverage = function (arr) {\n return average(arr, 1);\n};\nconst getRowAverage = getColumnAverage;\n\nconst getColumnSum = function (arr) {\n return sum(arr, 1);\n};\nconst getRowSum = getColumnSum;\n\nconst getColumnMaximum = function (arr) {\n return maximum(arr, 1);\n};\nconst getRowMaximum = getColumnMaximum;\n\nconst getColumnMinimum = function (arr) {\n return minimum(arr, 1);\n};\nconst getRowMinimum = getColumnMinimum;\n\nconst getColumnLabel = function (arr) {\n return arr[0];\n};\nconst getRowIndex = getColumnLabel;\n\nexport default {\n average,\n maximum,\n minimum,\n sum,\n getColumnAverage,\n getRowAverage,\n getColumnSum,\n getRowSum,\n getColumnMaximum,\n getRowMaximum,\n getColumnMinimum,\n getRowMinimum,\n getColumnLabel,\n getRowIndex,\n};\n","/**\n * Strip html tags from string\n *\n * @param {string} string The string to strip\n * @return {string}\n * @public\n */\n\nexport function stripHtmlTags(inputString) {\n if (typeof inputString !== 'string') {\n return inputString;\n }\n return inputString.replace(/(<([^>]+)>)/ig, '');\n}\n","import { each } from './each';\n\nexport function extendDeep(target) {\n for (var i = 1; i < arguments.length; i++) {\n each(arguments[i], function(prop, key){\n if (( typeof target[key] !== 'undefined' && typeof prop !== 'undefined' ) &&\n ( typeof target[key] === 'object' && typeof prop === 'object' ) &&\n ( target[key] !== null && prop !== null )) {\n extendDeep(target[key], prop);\n }\n else {\n target[key] = prop;\n }\n });\n }\n return target;\n}\n","import downloadResults from './download-results';\n\nexport default function renderDownloadButton({\n element,\n label = 'Download',\n type = 'json',\n data,\n} = {}) {\n const btnClass = 'keen-dataviz-button';\n const isBtnRendered = [...element.parentNode.children]\n .find(child => child.className === btnClass);\n if (isBtnRendered) return;\n\n const button = document.createElement('button');\n button.innerText = label;\n button.className = btnClass;\n button.addEventListener('click', event => downloadResults({ event, type, data}));\n element.parentNode.insertBefore(button, element.nextSibling);\n};","import domtoimage from 'dom-to-image';\nimport { saveAs } from 'file-saver';\n\nexport default function exportImage(obj) {\n const { node, quality, bgcolor } = obj;\n if (quality) {\n if (quality < 0 || quality > 1) throw Error('Please provide image quality between 0 and 1');\n domtoimage.toBlob(node, { quality, bgcolor })\n .then((blob) => {\n saveAs(blob, 'chart.jpeg');\n });\n }\n\n if (!quality) {\n domtoimage.toBlob(node)\n .then((blob) => {\n saveAs(blob, 'chart.png');\n });\n }\n}\n","function generateCsvContent(data) {\n let csvContent = '';\n\n data.forEach((row, i) => {\n row.forEach((cell, j) => {\n csvContent += String(cell).replace(/,/g, '');\n if (row.length > j + 1) {\n csvContent += ',';\n }\n });\n if (data.length > i + 1) {\n csvContent += '\\n';\n }\n });\n return `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n}\n\nexport default function exportData(obj) {\n const { type, data } = obj;\n const supportedFormats = ['json', 'csv'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = supportedFormats[0];\n let content = '';\n\n if (format === 'json') {\n content = `data:text/json;charset=utf-8, ${encodeURIComponent(JSON.stringify(data))}`;\n }\n\n if (format === 'csv') {\n content = generateCsvContent(data);\n fileFormat = format;\n }\n\n const htmlElement = document.createElement('a');\n htmlElement.setAttribute('href', content);\n htmlElement.setAttribute('download', `${fileName}.${fileFormat}`);\n document.body.appendChild(htmlElement);\n htmlElement.click();\n document.body.removeChild(htmlElement);\n}\n","/*!\n *\n * Rangeable\n * Copyright (c) 2018 Karl Saunders (mobius1(at)gmx(dot)com)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.1.6\n *\n */\n(function(i,j){\"object\"==typeof exports?module.exports=j(\"Rangeable\"):\"function\"==typeof define&&define.amd?define([],j):i.Rangeable=j(\"Rangeable\")})(\"undefined\"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&\"function\"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=[\"ruler\"],\"string\"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:\"single\",tooltips:\"always\",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:\"rangeable-input\",container:\"rangeable-container\",vertical:\"rangeable-vertical\",progress:\"rangeable-progress\",handle:\"rangeable-handle\",track:\"rangeable-track\",multiple:\"rangeable-multiple\",disabled:\"rangeable-disabled\",tooltips:\"rangeable-tooltips\",tooltip:\"rangeable-tooltip\",visible:\"rangeable-tooltips--visible\"}},t),this.mouseAxis={x:\"clientX\",y:\"clientY\"},this.trackSize={x:\"width\",y:\"height\"},this.trackPos={x:\"left\",y:\"top\"},this.lastPos=0,this.double=\"double\"===this.config.type||Array.isArray(this.config.value),this.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version=\"0.1.6\",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?\"y\":\"x\",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i(\"div\",u.container),w=i(\"div\",u.track),x=i(\"div\",u.progress),y=i(\"div\",u.handle),z=i(\"div\",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i(\"div\",u.handle),i(\"div\",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i(\"div\",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+\"px\"),t.tooltips&&(v.classList.add(u.tooltips),\"string\"==typeof t.tooltips&&\"always\"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i(\"div\",\"rangeable-buffers\");this.input.values.forEach(function(C,D){var E=i(\"div\",\"rangeable-buffer\");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i(\"div\",\"rangeable-buffer\"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return\"mousedown\"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add(\"dragging\"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add(\"active\"),this.setValueFromPosition(s),this.touch?(document.addEventListener(\"touchmove\",this.events.move,!1),document.addEventListener(\"touchend\",this.events.stop,!1),document.addEventListener(\"touchcancel\",this.events.stop,!1)):(document.addEventListener(\"mousemove\",this.events.move,!1),document.addEventListener(\"mouseup\",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove(\"dragging\"),this.onEnd(),this.activeHandle.classList.remove(\"active\"),this.activeHandle=!1,this.touch?(document.removeEventListener(\"touchmove\",this.events.move),document.removeEventListener(\"touchend\",this.events.stop),document.removeEventListener(\"touchcancel\",this.events.stop)):(document.removeEventListener(\"mousemove\",this.events.move),document.removeEventListener(\"mouseup\",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event(\"change\")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case\"ArrowRight\":case\"ArrowUp\":t.stepUp(v);break;case\"ArrowLeft\":case\"ArrowDown\":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle(\"combined-tooltip\",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+\" - \"+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event(\"input\")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?\"bottom\":\"left\"]=s+\"px\",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+\"px\"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest(\".\"+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute(\"tabindex\")}):this.nodes.handle.removeAttribute(\"tabindex\"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},\"start move stop update reset native keydown\".split(\" \").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener(\"scroll\",this.events.scroll,!1),window.addEventListener(\"resize\",this.events.resize,!1),document.addEventListener(\"keydown\",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.input.addEventListener(\"input\",this.events.native,!1),this.input.form&&this.input.form.addEventListener(\"reset\",this.events.reset,!1)},r.unbind=function(){document.removeEventListener(\"scroll\",this.events.scroll),window.removeEventListener(\"resize\",this.events.resize),document.removeEventListener(\"keydown\",this.events.keydown),this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.input.removeEventListener(\"input\",this.events.native),this.input.form&&this.input.form.removeEventListener(\"reset\",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q});","import { Dataviz, Dataset } from './index';\n\nconst env = typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {};\n\nexport const extendKeenGlobalObject = function(env) {\n env.KeenDataviz = Dataviz;\n env.KeenDataset = Dataset;\n\n // just for backward compatibility\n env.Keen = env.Keen || {};\n env.Keen.Dataset = Dataset;\n env.Keen.Dataviz = Dataviz;\n};\n\nif (typeof KEEN_GLOBAL_OBJECT !== 'undefined'\n && KEEN_GLOBAL_OBJECT) {\n extendKeenGlobalObject(env);\n}\n\nexport let keenGlobals = undefined;\nif (typeof webpackKeenGlobals !== 'undefined') {\n keenGlobals = webpackKeenGlobals;\n}\n\nexport { Dataviz, Dataset } from './index';\nexport default Dataviz;\n","/* eslint-env browser */\nimport * as d3 from 'd3';\nimport c3 from 'c3';\n\nimport pkg from '../package.json';\nimport data from './data';\nimport { Dataset } from './dataset';\n\n// Utils\nimport { each } from './utils/each';\nimport isDateString from './utils/assert-date-string';\nimport { stripHtmlTags } from './utils/strip-html-tags';\nimport { escapeHtml } from './utils/escape-html';\nimport libraries from './libraries';\nimport { extendDeep } from './utils/extend-deep';\nimport exportImage from './utils/export-svg';\nimport exportData from './utils/export-data';\nimport renderDownloadButton from './utils/render-download-btn';\nimport renderExecutionMetadata from './utils/render-execution-metadata';\nimport copyToClipboard from './utils/copy-to-clipboard';\n\nimport palettes from './palettes/index';\n\n// Constructor\nexport const Dataviz = function (options = {}) {\n if (this instanceof Dataviz === false) {\n return new Dataviz(options);\n }\n\n this.c3 = c3; // expose for use outside\n this.d3 = d3;\n\n const datavizInstance = this;\n const defaultOptions = {\n showDeprecationWarnings: true,\n showLoadingSpinner: false,\n\n container: undefined, // querySelector of container, for example '#someDiv'\n containerElement: undefined, // HTML parent element for the chart\n\n // width: undefined, *deprecated* - use CSS\n // height: undefined, *deprecated* - use CSS\n\n title: undefined,\n showTitle: true,\n\n subtitle: undefined,\n\n notes: undefined,\n theme: 'keen-dataviz',\n\n colors: [\n '#00bbde', '#fe6672', '#eeb058', '#8a8ad6', '#ff855c', '#00cfbb',\n '#5a9eed', '#73d483', '#c879bb', '#0099b6', '#d74d58', '#cb9141',\n '#6b6bb6', '#d86945', '#00aa99', '#4281c9', '#57b566', '#ac5c9e',\n '#27cceb', '#ff818b', '#f6bf71', '#9b9be1', '#ff9b79', '#26dfcd',\n '#73aff4', '#87e096', '#d88bcb',\n ],\n\n colorMapping: {},\n ui: {\n executionMetadata: true,\n },\n utils: {\n clickToCopyToClipboard: true,\n },\n\n indexBy: 'timeframe.start',\n labels: [],\n labelMapping: {},\n labelMappingRegExp: undefined,\n errorMapping: {},\n showErrorMessages: true,\n library: 'default',\n sortGroups: undefined,\n sortIntervals: undefined,\n\n results: undefined, // raw data\n\n // C3 chartOptions\n type: undefined,\n stacked: false,\n dateFormat: undefined,\n legend: {\n show: true,\n position: 'right',\n alignment: 'top',\n label: {\n textMaxLength: 12\n },\n pagination: {\n offset: 0, // start from\n limit: 5 // items per page\n },\n tooltip: {\n show: true,\n pointer: true\n },\n sort: undefined\n },\n\n axis: {},\n color: {},\n size: {\n // control it with CSS of .c3-chart\n },\n padding: {\n top: 15\n },\n point: {\n focus: {\n expand: {\n enabled: false\n }\n },\n r: 2,\n show: true,\n sensitivity: 300\n },\n tooltip: {\n horizontal: true,\n format: {\n // https://c3js.org/samples/tooltip_format.html\n }\n },\n transition: {\n // duration: 0\n },\n data: {\n order: null,\n selection: {\n enabled: true,\n draggable: true,\n multiple: true\n },\n onselected: (d, element) => {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n },\n },\n grid: {\n y: {\n show: true\n }\n },\n partialIntervalIndicator: {\n show: undefined,\n className: 'partial-interval-indicator'\n },\n timezone: 'UTC',\n table: {\n schema: 'static',\n },\n renderOnVisible: false,\n funnel: {\n lines: true,\n resultValues: true,\n percents: {\n show: false,\n countingMethod: 'absolute',\n decimals: 0\n },\n marginBetweenElements: false,\n hover: true,\n effect3d: 'both-sides',\n minimalSize: false,\n },\n react: false,\n range: false,\n sparkline: false,\n choropleth: {\n map: 'world',\n borders: {\n show: true,\n size: 0.5,\n color: '#000'\n },\n showSlider: false\n },\n heatmap: {},\n };\n\n this.config = { ...extendDeep(defaultOptions, options) };\n\n if (options.palette) {\n if (!palettes[options.palette]){\n console.log('Colors pallete not found', options.palette);\n }\n this.config.colors = palettes[options.palette].colors;\n }\n\n if (this.config.type) {\n // backward compatibility with v2016... areachart -> area\n this.config.type = convertChartTypes(this.config.type);\n }\n\n // overwriting options for range chart\n if(this.config.type && this.config.type.includes('-range')) {\n this.config.range = true;\n this.config.type = this.config.type.replace('-range', '');\n this.config.legend.show = false;\n this.config.stacking = 'normal';\n this.config.labels = ['Max', 'Min'];\n this.config.colors = [\n this.config.colors[0],\n this.config.colors[0],\n ];\n }\n\n // overwriting stacked when stacking added\n if (this.config.stacking) {\n this.config.stacked = true;\n }\n\n // overwriting options for sparkline chart\n if (this.config.sparkline) {\n this.config.legend.show = false;\n this.config.axis = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n this.config.grid = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n }\n\n // get DOM node by query\n if (this.config.container) {\n this.el(this.config.container);\n }\n\n if (options.legend !== undefined && !options.legend) {\n this.config.legend = {\n ...options,\n show: false\n };\n }\n\n if (options.color && options.color.pattern) {\n // to match c3 options\n this.config.colors = options.color.pattern;\n }\n\n if (this.config.legend\n && this.config.legend.tooltip\n && this.config.legend.tooltip.show === false\n && this.config.tooltip.show === undefined) {\n this.config.tooltip = { show: false };\n }\n\n this.dataset = new Dataset(this.config);\n this.view = {\n _prepared: false,\n _rendered: false,\n _artifacts: { /* state bin */ }\n };\n\n Dataviz.visuals.push(this);\n\n if (this.config.showLoadingSpinner) {\n this.prepare();\n }\n\n if (!!this.config.results) {\n this.render(this.config.results);\n }\n this.config.firstVisibilityState = document.visibilityState;\n\n if (!this.config.utils.clickToCopyToClipboard) {\n this.config.data.onselected = () => {};\n }\n\n if (options.data && options.data.onselected) {\n this.config.data.onselected = (d, element) => {\n const callback = options.data.onselected.bind(null, d, element);\n callback();\n\n if (this.config.utils.clickToCopyToClipboard) {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n }\n };\n }\n\n};\n\n\nDataviz.libraries = { default: {} };\nif (typeof window !== 'undefined') {\n Dataviz.libraries.default = libraries(Dataviz);\n}\nDataviz.visuals = [];\n\nDataviz.register = function (name, actions) {\n Dataviz.libraries[name] = Dataviz.libraries[name] || {};\n each(actions, function(method, key){\n Dataviz.libraries[name][key] = method;\n });\n};\n\nDataviz.find = function(target){\n if (!arguments.length) return Dataviz.visuals;\n const el = target.nodeName ? target : document.querySelector(target);\n let match = null;\n each(Dataviz.visuals, function(visual){\n if (el == visual.config.container){\n match = visual;\n return false;\n }\n });\n return match;\n};\n\n\n // Prototype\n // ------------\n\nDataviz.prototype.attributes = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n const view = this.config;\n each(obj, function(prop, key){\n // Handle deprecated property names\n if (key === 'chartType') {\n key = 'type';\n }\n view[key] = prop;\n });\n return this;\n};\n\nDataviz.prototype.call = function(fn){\n fn.call(this);\n return this;\n};\n\nDataviz.prototype.chartOptions = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n this.config = extendDeep(this.config, obj);\n return this;\n};\n\nDataviz.prototype.colors = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.colors;\n this.config.colors = (arr instanceof Array ? arr : []);\n return this;\n};\n\nDataviz.prototype.colorMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })');\n }\n const datavizInstance = this;\n if (!arguments.length) return this.config.colorMapping;\n if (obj === null) {\n this.config.colorMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n datavizInstance.config.colorMapping[key] = (value ? value : null);\n });\n }\n return this;\n};\n\nDataviz.prototype.data = data;\n\nDataviz.prototype.dateFormat = function(val){\n if (this.config.showDeprecationWarnings) {\n console.log('.dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.dateFormat;\n if (typeof val === 'string' || typeof val === 'function') {\n this.config.dateFormat = val;\n }\n else {\n this.config.dateFormat = undefined;\n }\n return this;\n};\n\nDataviz.prototype.destroy = function(){\n const library = this.library();\n const type = this.config.type;\n const element = this.el();\n\n // Call destroy method if present\n if (Dataviz.libraries[library]\n && Dataviz.libraries[library][type]){\n Dataviz.libraries[library][type].destroy.call(this);\n }\n\n // Clear rendered artifacts, state bin\n if (element) {\n element.innerHTML = '';\n }\n this.view._prepared = false;\n this.view._rendered = false;\n this.view._artifacts = {};\n return this;\n};\n\nDataviz.prototype.el = function(target){\n const datavizInstance = this;\n if (!arguments.length) return this.config.containerElement;\n domReady(function(){\n if (target && target !== null) {\n if (target.nodeName) {\n datavizInstance.config.containerElement = target;\n }\n else if (document.querySelector) {\n datavizInstance.config.containerElement = document.querySelector(target);\n }\n }\n else {\n datavizInstance.config.containerElement = undefined;\n }\n });\n return this;\n};\n\nDataviz.prototype.height = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.height() is deprecated - use CSS classes');\n }\n return this;\n};\n\n// IMPORTANT: Must be run before data parsing\nDataviz.prototype.indexBy = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.indexBy;\n this.config.indexBy = (str ? String(str) : 'timeframe.start');\n return this;\n};\n\nDataviz.prototype.labels = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })');\n }\n\n if (!arguments.length) return this.config.labels;\n this.config.labels = (arr instanceof Array ? arr : []);\n\n setLabels(this);\n\n return this;\n};\n\nfunction setLabels(datavizInstance){\n // Write labels\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.updateColumn(0, function(value, index){\n if (datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n else {\n datavizInstance.dataset.updateRow(0, function(value, index){\n if (index > 0 && datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.labelMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.labelMapping;\n if (obj === null) {\n this.config.labelMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n this.config.labelMapping[key] = (value ? value : null);\n }.bind(this));\n }\n\n mapLabels(this);\n\n return this;\n};\n\nfunction mapLabelsExec({ datavizInstance, value }){\n if (datavizInstance.config.labelMappingRegExp){\n let valueAfterMatching = value;\n datavizInstance.config.labelMappingRegExp.forEach(regExpAndLabel => {\n if (regExpAndLabel.length > 1) {\n let regExpObj = regExpAndLabel[0];\n if (regExpObj.test(value)){\n valueAfterMatching = regExpAndLabel[1];\n }\n }\n });\n return stripHtmlTags(valueAfterMatching);\n }\n if (datavizInstance.config.labelMapping[value]) {\n return stripHtmlTags(String(datavizInstance.config.labelMapping[value]));\n }\n return stripHtmlTags(value);\n}\n\nfunction mapLabels(datavizInstance){\n // Write labels\n if (!datavizInstance.config.labelMappingDimension) {\n // if not defined use deprecated auto-detecting\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.config.labelMappingDimension = 'row';\n } else {\n datavizInstance.config.labelMappingDimension = 'column';\n }\n }\n\n if (datavizInstance.config.labelMappingDimension === 'row'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateColumn(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n\n if (datavizInstance.config.labelMappingDimension === 'column'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateRow(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.library = function(str){\n if (!arguments.length) return this.config['library'];\n this.config['library'] = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.message = function(){\n if (this.view._rendered) {\n this.destroy();\n }\n if (this.el()) {\n this.el().innerHTML = '';\n const message = Dataviz.libraries.default.message;\n if (message.render) {\n message.render.apply(this, arguments);\n }\n }\n return this;\n};\n\nDataviz.prototype.notes = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.notes;\n this.config.notes = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.prepare = function(){\n const datavizInstance = this;\n\n if (!this.el()) {\n throw `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n return;\n }\n\n domReady(function(){\n if (datavizInstance.view._rendered) {\n datavizInstance.destroy();\n }\n if (datavizInstance.el()) {\n datavizInstance.el().innerHTML = '';\n const loader = Dataviz.libraries.default.spinner;\n if (loader.render) {\n loader.render.call(datavizInstance);\n }\n datavizInstance.view._prepared = true;\n }\n });\n\n return this;\n};\n\nDataviz.prototype.render = function(results = undefined){\n const datavizInstance = this;\n\n if (!!results) {\n const firstResult = results[0] || results;\n if (\n firstResult.query\n && firstResult.query.interval\n && firstResult.query.timeframe\n && typeof firstResult.query.timeframe === 'string'\n && firstResult.query.timeframe.includes('this_')\n && this.config.partialIntervalIndicator\n && this.config.partialIntervalIndicator.show === undefined\n )\n {\n this.config.partialIntervalIndicator.show = true;\n }\n\n if (Array.isArray(results)) {\n const timeframes = results.map(resultItem => resultItem.query.timeframe);\n timeframes.forEach(resultTimeframe => {\n let foundDifferent = timeframes.find(timeframeItem =>\n JSON.stringify(timeframeItem) !== JSON.stringify(resultTimeframe)\n );\n if (foundDifferent){\n const msg = 'Timeframes of the queries should be the same';\n console.error(msg);\n throw msg;\n }\n });\n // first result is important to prepare X on the chart\n return datavizInstance\n .data(results[0])\n .call(() => {\n const input = results[0];\n this.dataset.deleteColumn(1);\n for (let result of results) {\n let label = `${input.query.event_collection} ${input.query.analysis_type}`;\n let ds2 = Dataset.parser('interval')(result);\n datavizInstance.dataset.appendColumn(label, ds2.selectColumn(1).slice(1));\n }\n })\n .render();\n }\n\n return datavizInstance.data(results).render();\n }\n if (\n (!!this.config.labelMapping && Object.keys(this.config.labelMapping).length > 0)\n ||\n (!!this.config.labelMappingRegExp && this.config.labelMappingRegExp.length > 0)\n ){\n mapLabels(datavizInstance);\n }\n if (!!this.config.labels && Object.keys(this.config.labels).length > 0){\n setLabels(datavizInstance);\n }\n if (!!this.config.sortGroups) {\n sortGroups(datavizInstance);\n }\n if (!!this.config.sortIntervals) {\n sortIntervals(datavizInstance);\n }\n\n const loader = Dataviz.libraries.default.spinner;\n const library = this.config.library;\n const type = this.config.type;\n const containerElement = this.el();\n\n if (!containerElement || containerElement === undefined) {\n const msg = `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n console.error(msg);\n throw msg;\n return;\n }\n\n let returnValue = datavizInstance;\n\n if (datavizInstance.config.renderAsPromise) {\n returnValue = new Promise((resolve, reject) => {\n const customCallback = this.config.onrendered;\n datavizInstance.config.onrendered = () => {\n if (customCallback) {\n customCallback();\n }\n resolve(datavizInstance);\n }\n });\n }\n\n domReady(function(){\n const shouldRenderExecutionMetadata = datavizInstance.execution_metadata\n && datavizInstance.config.ui\n && datavizInstance.config.ui.executionMetadata;\n const shouldRenderDownloadBtn = datavizInstance.config.ui\n && datavizInstance.config.ui.buttons\n && datavizInstance.config.ui.buttons.download\n && datavizInstance.config.ui.buttons.download.type;\n if (datavizInstance.view._prepared && loader.destroy) {\n loader.destroy.apply(datavizInstance, arguments);\n }\n containerElement.innerHTML = '';\n\n if (Dataviz.libraries[library] === 'undefined'){\n // Error: Unregistered library\n const msg = `Incorrect library`;\n datavizInstance.message(msg);\n throw msg;\n return;\n }\n else {\n if (typeof Dataviz.libraries[library][type] === 'undefined') {\n const msg = `Incorrect chart type`;\n const mappedMsg = this.config.errorMapping[msg] || msg;\n datavizInstance.message(mappedMsg);\n throw msg;\n return;\n }\n else {\n buildDomWrapper(containerElement,\n datavizInstance.config\n );\n if (shouldRenderDownloadBtn) {\n renderDownloadButton({\n element: containerElement,\n data: datavizInstance.dataset.matrix,\n type: datavizInstance.config.ui.buttons.download.type,\n label: datavizInstance.config.ui.buttons.download.label,\n })\n }\n if (shouldRenderExecutionMetadata) {\n renderExecutionMetadata({\n element: containerElement,\n data: datavizInstance.execution_metadata,\n })\n }\n const { renderOnVisible } = datavizInstance.config;\n if(renderOnVisible){\n if(typeof IntersectionObserver !== 'undefined'){\n const chartVisibleCallback = (events, observer) => {\n events.forEach(el => {\n if(el.isIntersecting){\n if(!datavizInstance.view._rendered){\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n })\n }\n const observer = new IntersectionObserver(chartVisibleCallback);\n observer.observe(containerElement);\n return;\n }\n }\n if(datavizInstance.config.firstVisibilityState === 'hidden'){\n if(typeof document !== 'undefined') {\n let hidden, visibilityChange;\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n const handleVisibilityChange = () => {\n if(!document[hidden] && datavizInstance.view._artifacts.c3) {\n datavizInstance.view._artifacts.c3.load(datavizInstance.dataset.matrix);\n }\n }\n if(typeof document.addEventListener !== \"undefined\" ||\n hidden !== undefined){\n document.addEventListener(visibilityChange, handleVisibilityChange, {\n once: true\n });\n }\n }\n }\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n });\n\n return returnValue;\n};\n\nDataviz.prototype.sortGroups = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortGroups;\n this.config.sortGroups = (str ? String(str) : null);\n\n sortGroups(this, str);\n\n return this;\n};\n\nfunction sortGroups(datavizInstance){\n // Sort groups\n if (datavizInstance.config.sortGroups && datavizInstance.data().length > 1) {\n if (isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.sortColumns(datavizInstance.config.sortGroups, datavizInstance.dataset.getColumnSum);\n }\n else {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortGroups, datavizInstance.dataset.getRowSum);\n }\n }\n}\n\nDataviz.prototype.sortIntervals = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortIntervals;\n this.config.sortIntervals = (str ? String(str) : null);\n\n sortIntervals(this);\n\n return this;\n};\n\nfunction sortIntervals(datavizInstance){\n if (datavizInstance.config.sortIntervals) {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortIntervals);\n }\n}\n\nDataviz.prototype.stacked = function(bool){\n if (this.config.showDeprecationWarnings) {\n console.log('.stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.stacked;\n this.config.stacked = bool ? true : false;\n return this;\n};\n\nDataviz.prototype.theme = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.theme;\n this.config.theme = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.title = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.title;\n this.config.title = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.type = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.type;\n this.config.type = (str ? convertChartTypes(str) : null);\n return this;\n};\n\nDataviz.prototype.update = function(){\n const library = this.config.library;\n const type = this.config.type;\n const element = this.el();\n if (library && type && element && Dataviz.libraries[library][type].update) {\n Dataviz.libraries[library][type].update.apply(this, arguments);\n }\n return this;\n};\n\nDataviz.prototype.width = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.width() is deprecated - use CSS classes');\n }\n return this;\n};\n\nDataviz.prototype.exportImage = function({ quality = 0, bgcolor = '#fff' } = {}) {\n exportImage({\n node: this.config.containerElement,\n quality,\n bgcolor,\n });\n};\n\nDataviz.prototype.exportData = function(type='json') {\n exportData({\n data: this.dataset.matrix,\n type,\n });\n};\n\n// Deprecations\nDataviz.prototype.chartType = Dataviz.prototype.type;\nDataviz.prototype.error = Dataviz.prototype.message;\nDataviz.prototype.parseRawData = Dataviz.prototype.data;\nDataviz.prototype.parseRequest = function(){\n // this.emit('error', 'This method is no longer supported. Use .data() instead: https://github.com/keen/keen-dataviz.js#data');\n return this;\n};\nDataviz.prototype.initialize = function(){\n // this.emit('error', 'This method is no longer supported, and can be omitted as it has no impact');\n return this;\n};\n\nDataviz.version = pkg.version;\n\n// Private\n\nfunction buildDomWrapper(el, options) {\n let html = '';\n let chart100percentWide = '';\n let rangeChart = '';\n if (options.legend.position === 'top' || options.legend.position === 'bottom') {\n chart100percentWide = 'c3-chart-100-percent';\n }\n if (options.range) {\n rangeChart = 'keen-dataviz-range';\n }\n let container = `
`;\n const verticalAlignment = ['top', 'middle', 'bottom'];\n const horizontalAlignment = ['left', 'center', 'right'];\n let align = 'horizontal';\n let legendItemsAlign = 'center';\n if (horizontalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n if (options.legend.position === 'left' || options.legend.position === 'right') {\n align = 'vertical';\n if (verticalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n }\n if (options.legend && options.legend.show) {\n if (options.legend.position === 'top' || options.legend.position === 'left') {\n container = `
${container}`;\n } else {\n container = `${container}
`;\n }\n }\n if(!options.react){\n html += `
`;\n }\n if (options.title && options.showTitle) {\n html += `
${options.title}
`;\n }\n if (options.subtitle) {\n html += `
${options.subtitle}
`;\n }\n html += `
${container}
`;\n if (options.notes) {\n html += `
${options.notes}
`;\n }\n if(!options.react){\n html += '
';\n }\n\n el.innerHTML = html;\n}\n\nfunction convertChartTypes(str) {\n const map = {\n areachart: 'area',\n barchart: 'horizontal-bar',\n columnchart: 'bar',\n linechart: 'line',\n piechart: 'pie',\n };\n return map[str] || str;\n}\n\nfunction testDom(fn) {\n if (/in/.test(document.readyState)) {\n setTimeout(() => {\n testDom(fn);\n }, 9);\n } else {\n fn();\n }\n}\n\nfunction domReady(fn) {\n if (typeof document !== 'undefined' || typeof window === 'undefined') {\n fn();\n return;\n }\n // Firefox 3.5 shim\n if (document.readyState == null && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', function DOMContentLoaded() {\n document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);\n document.readyState = 'complete';\n }, false);\n document.readyState = 'loading';\n }\n testDom(fn);\n}\n\nexport { Dataset } from './dataset';\n\nexport default Dataviz;\n","import { each } from '../../utils/each';\n\nexport function deleteColumn(q) {\n const self = this;\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n each(self.matrix, function(row, i){\n self.matrix[i].splice(index, 1);\n });\n }\n return self;\n}\n\nexport function deleteRow(q) {\n var index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n this.matrix.splice(index, 1);\n }\n return this;\n}\n","import { each } from '../../utils/each';\n\nexport function filterColumns(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i) {\n clone.push([]);\n });\n\n each(self.matrix[0], function(col, i){\n var selectedColumn = self.selectColumn(i);\n if (i == 0 || fn.call(self, selectedColumn, i)) {\n each(selectedColumn, function(cell, ri){\n clone[ri].push(cell);\n });\n }\n });\n\n self.data(clone);\n return self;\n}\n\nexport function filterRows(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i){\n if (i == 0 || fn.call(self, row, i)) {\n clone.push(row);\n }\n });\n\n self.data(clone);\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function insertColumn(index, str, input) {\n const self = this;\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n\n self.matrix[0].splice(index, 0, label);\n each(self.matrix, function(row, i) {\n var cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].splice(index, 0, cell);\n }\n });\n\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat( createNullList(self.matrix.length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n self.matrix[0].splice(index, 0, label);\n each(input, function(value, i){\n self.matrix[i+1].splice(index, 0, value);\n });\n\n }\n return self;\n}\n\nexport function insertRow(index, str, input) {\n const self = this;\n const newRow = [];\n const label = (str !== undefined) ? str : null;\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i) {\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.splice(index, 0, newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n self.matrix.splice(index, 0, newRow.concat(input) );\n }\n\n return self;\n}\n","import { each } from '../../utils/each';\n\nexport function selectColumn(q) {\n const result = [];\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1 && typeof this.matrix[0][index] !== 'undefined') {\n each(this.matrix, function(row, i) {\n result.push(row[index]);\n });\n }\n return result;\n}\n\nexport function selectRow(q) {\n let result = [];\n const index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1 && typeof this.matrix[index] !== 'undefined') {\n result = this.matrix[index];\n }\n return result;\n}\n","import { each } from '../../utils/each';\nimport analysesUtilMethods from '../utils/analyses';\n\nexport function sortColumns(str, comp) {\n var self = this,\n head = this.matrix[0].slice(1), // minus index\n cols = [],\n clone = [],\n fn = comp || analysesUtilMethods.getColumnLabel;\n\n // Isolate each column (except the index)\n each(head, function(cell, i) {\n cols.push(self.selectColumn(i+1).slice(0));\n });\n cols.sort(function(a,b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n each(cols, function(col, i) {\n self\n .deleteColumn(i+1)\n .insertColumn(i+1, col[0], col.slice(1));\n });\n return self;\n}\n\nexport function sortRows(str, comp) {\n var self = this,\n head = this.matrix.slice(0,1),\n body = this.matrix.slice(1),\n fn = comp || analysesUtilMethods.getRowIndex;\n body.sort(function(a, b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n self.data(head.concat(body));\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function updateColumn(q, input) {\n var self = this,\n index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data(), function(row, i){\n var cell;\n if (i > 0) {\n cell = input.call(self, row[index], i, row);\n if (typeof cell !== 'undefined') {\n self.matrix[i][index] = cell;\n }\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.data().length - 1) {\n input = input.concat( createNullList(self.data().length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[i+1][index] = value;\n });\n\n }\n\n }\n return self;\n}\n\nexport function updateRow(q, input){\n var self = this,\n index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data()[index], function(value, i){\n var col = self.selectColumn(i),\n cell = input.call(self, value, i, col);\n if (typeof cell !== 'undefined') {\n self.matrix[index][i] = cell;\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[index][i+1] = value;\n });\n }\n\n }\n return self;\n}\n","let Dataset; /* injected */\n\nimport { each } from '../../utils/each';\nimport { flatten } from '../utils/flatten';\nimport { valueAtDeepKey } from '../utils/object';\n\nexport default function initialize(lib){\n Dataset = lib;\n return function(name){\n var options = Array.prototype.slice.call(arguments, 1);\n\n if (!parsers[name]) {\n throw 'Requested parser does not exist';\n }\n else {\n return parsers[name].apply(this, options);\n }\n };\n}\n\nfunction parseMetric(){\n return function(res){\n return new Dataset()\n .set(['Value', 'Result'], res.result)\n .type('metric');\n }\n}\n\n//var myParser = Dataset.parser('interval', 'timeframe.end');\nfunction parseInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n dataset.set(['Result', index], record.value);\n });\n return dataset;\n }\n}\n\nfunction parseGroupedMetric(){\n return function(res){\n var dataset = new Dataset()\n .type('grouped-metric');\n each(res.result, function(record, i){\n var label;\n each(record, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set(['Result', String(record[label])], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('grouped-interval', 'timeframe.end');\nfunction parseGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('grouped-interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n if (record.value.length) {\n each(record.value, function(group, j){\n var label;\n each(group, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set([ String(group[label]), index ], group.result);\n });\n }\n else {\n dataset.appendRow(index);\n }\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-metric', ['first', 'second']);\nfunction parseDoubleGroupedMetric(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-metric');\n each(res.result, function(record, i){\n var rowLabel = record[options[0][0]] + ' ' + record[options[0][1]];\n dataset.set([ 'Result', rowLabel ], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-interval', ['first', 'second'], 'timeframe.end');\nfunction parseDoubleGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-interval');\n each(res.result, function(record, i){\n var index = options[1] && options[1] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n each(record['value'], function(value, j){\n var label = value[options[0][0]] + ' ' + value[options[0][1]];\n dataset.set([ label, index ], value.result);\n });\n });\n return dataset;\n }\n}\n\nfunction parseFunnel(){\n return function(res){\n var result, steps, dataset;\n if (typeof res.steps !== 'undefined'\n && typeof res.result !== 'undefined'\n && res.result instanceof Array) {\n // Ad-hoc funnel response\n result = res.result;\n steps = res.steps;\n }\n else if (typeof res.result.steps !== 'undefined'\n && typeof res.result.result !== 'undefined'\n && res.result.result instanceof Array) {\n // Saved funnel response\n result = res.result.result;\n steps = res.result.steps;\n }\n dataset = new Dataset().type('funnel');\n dataset.appendColumn('Step Value');\n each(result, function(value, i){\n if (typeof steps !== 'undefined' && steps[i]) {\n dataset.appendRow(String(steps[i].event_collection), [value]);\n }\n });\n return dataset;\n }\n}\n\nfunction parseList(){\n return function(res){\n var dataset = new Dataset()\n .type('list');\n each(res.result, function(value, i){\n dataset.set( [ 'Result', String(i+1) ], value );\n });\n return dataset;\n }\n}\n\nfunction parseExtraction(){\n let config = this.config;\n return function(res){\n const datasetExtraction = new Dataset()\n .type('extraction');\n\n // get keys of the Object, static schema\n let names = Object.keys(flatten(res.result[0]));\n\n const tableConfig = config && config.table;\n if (tableConfig && tableConfig.schema === 'dynamic') {\n const results = res.result;\n const keys = {};\n results.forEach(resultItem => {\n const resultKeys = Object.keys(flatten(resultItem));\n if (resultKeys && resultKeys.length) {\n resultKeys.forEach(keyName => {\n if (!keys[keyName]) {\n keys[keyName] = true;\n }\n });\n }\n });\n names = Object.keys(keys);\n }\n \n let nameI = 0;\n names.forEach(value => {\n datasetExtraction.set([ value, '0' ], value);\n nameI++;\n });\n \n if (Dataset) {\n if (config\n && config.table\n && config.table.columns) {\n names = config.table.columns;\n }\n }\n\n for (let i=0; i 1) {\n parser = 'double-grouped-metric';\n parserArgs.push(query.group_by);\n }\n else {\n parser = 'grouped-metric';\n }\n }\n else if (query.interval && !query.group_by) {\n parser = 'interval';\n parserArgs.push(indexBy);\n }\n else if (query.group_by && query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-interval';\n parserArgs.push(query.group_by);\n parserArgs.push(indexBy);\n }\n else {\n parser = 'grouped-interval';\n parserArgs.push(indexBy);\n }\n }\n }\n\n if (!parser) {\n\n // Metric\n // -------------------------------\n if (typeof response.result === 'number'){\n parser = 'metric';\n }\n\n // Everything else\n // -------------------------------\n if (response.result instanceof Array && response.result.length > 0){\n\n // Interval w/ single value\n // -------------------------------\n if (response.result[0].timeframe && (typeof response.result[0].value == 'number' || response.result[0].value == null)) {\n parser = 'interval';\n parserArgs.push(indexBy)\n }\n\n // Static GroupBy\n // -------------------------------\n if (typeof response.result[0].result == 'number'){\n parser = 'grouped-metric';\n }\n\n // x, y, value for heatmap\n if (this.config.type === 'heatmap' && Object.keys(response.result[0] === 3 && typeof response.result[0].result === 'number')) {\n parser = 'heatmap-axis';\n }\n\n // Grouped Interval\n // -------------------------------\n if (response.result[0].value instanceof Array){\n parser = 'grouped-interval';\n parserArgs.push(indexBy)\n }\n\n // Funnel\n // -------------------------------\n if (typeof response.result[0] === 'number'\n && typeof response.steps !== 'undefined'){\n parser = 'funnel';\n // Move steps into query object\n query.steps = response.steps;\n }\n\n // Select Unique\n // -------------------------------\n if ((typeof response.result[0] === 'string' || typeof response.result[0] == 'number') && typeof response.steps === 'undefined'){\n parser = 'list';\n }\n\n // Extraction\n // -------------------------------\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n // Set title from saved query body, or create a default title\n if (this.config.title === undefined) {\n if (meta.display_name) {\n title = meta.display_name;\n }\n else {\n title = getDefaultTitle(query);\n }\n this.config.title = title;\n }\n\n // Set type from saved query body, or use a default type\n if (!this.config.type) {\n if (meta.visualization && meta.visualization.chart_type) {\n type = meta.visualization.chart_type;\n }\n else {\n type = getDefaultType(parser);\n }\n this.config.type = type;\n }\n\n // Define the appropriate parser\n selectedParser = Dataset.parser.apply(this, [parser].concat(parserArgs));\n\n // Parse the response with augmented query body\n dataset = selectedParser(extend(response, { 'query': query }));\n\n // Set true dates for 'interval' data\n if (parser.indexOf('interval') > -1) {\n dataset.updateColumn(0, function(value, i){\n return new Date(value);\n });\n }\n\n dataset.updateRow(0, function(value, i){\n return stripHtmlTags(value);\n });\n\n this.dataset = dataset;\n\n if (response.execution_metadata) {\n this.execution_metadata = response.execution_metadata;\n }\n\n return this;\n}\n\nfunction getDefaultTitle(query) {\n var analysis = query.analysis_type ? query.analysis_type.replace('_', ' ') : '',\n title;\n\n title = analysis.replace( /\\b./g, function(a){\n return a.toUpperCase();\n });\n\n if (query.event_collection) {\n title += ' - ' + query.event_collection;\n }\n return title;\n}\n\nfunction getDefaultType(parser) {\n let type;\n switch (parser) {\n case 'metric':\n type = 'metric';\n break;\n case 'interval':\n type = 'area';\n break;\n case 'grouped-metric':\n case 'double-grouped-metric':\n type = 'bar';\n break;\n case 'grouped-interval':\n case 'double-grouped-interval':\n type = 'line';\n break;\n case 'funnel':\n type = 'horizontal-bar';\n break;\n case 'list':\n case 'extraction':\n default:\n type = 'table';\n }\n return type;\n}\n","import c3 from 'c3';\n\nimport { each } from '../utils/each';\nimport { extend } from '../utils/extend';\nimport { extendDeep } from '../utils/extend-deep';\nimport isDateString from '../utils/assert-date-string';\nimport c3DefaultDateFormat from './c3/extensions/default-date-format';\nimport c3PaginatingLegend from './c3/extensions/paginating-legend';\nimport c3TooltipContents from './c3/extensions/tooltip-contents';\n\nimport calculateRange from '../dataset/utils/calculate-range';\nimport { calculateSumForPercents, calculatePercents } from '../dataset/utils/calculate-percents';\n\nimport message from './default/message';\nimport metric from './default/metric';\nimport table from './default/table';\nimport spinner from './default/spinner';\nimport Funnel from './default/funnel';\nimport Funnel3d from './default/funnel-3d';\nimport HorizontalFunnel from './default/horizontal-funnel';\nimport HorizontalFunnel3d from './default/horizontal-funnel-3d';\nimport MetricCombo from './default/metric-combo';\nimport Heatmap from './default/heatmap';\nimport Choropleth from './default/choropleth';\n\nexport default function(lib) {\n let timer;\n bindResizeListener(function(){\n if (timer) {\n clearTimeout(timer);\n }\n const delay = (lib.visuals.length > 12) ? 1000 : 250;\n timer = setTimeout(function(){\n each(lib.visuals, function(chart){\n const c3Chart = chart.view._artifacts.c3;\n if (c3Chart) {\n const parentWidth = c3Chart.element.parentNode.parentNode.offsetWidth;\n let width = parentWidth;\n if (chart.config.legend && chart.config.legend.show && (chart.config.legend.position === 'left' || chart.config.legend.position === 'right')) {\n const nextSiblingWidth = c3Chart.element.nextSibling ? c3Chart.element.nextSibling.offsetWidth : 0;\n const prevSiblingWidth = c3Chart.element.previousSibling ? c3Chart.element.previousSibling.offsetWidth : 0;\n width = parentWidth - prevSiblingWidth - nextSiblingWidth;\n }\n\n c3Chart.resize({\n width,\n });\n\n }\n });\n }, delay);\n });\n\n return defineC3();\n};\n\nfunction defineC3(){\n const types = {\n message,\n metric,\n table,\n spinner,\n 'funnel': new Funnel,\n 'funnel-3d': new Funnel3d,\n 'horizontal-funnel': new HorizontalFunnel,\n 'horizontal-funnel-3d': new HorizontalFunnel3d,\n 'metric-combo': new MetricCombo,\n 'heatmap': new Heatmap,\n 'choropleth': new Choropleth\n };\n\n const c3Types = [\n // Standard types\n 'area',\n 'area-spline',\n 'area-step',\n 'bar',\n 'donut',\n 'gauge',\n 'line',\n 'pie',\n 'step',\n 'spline',\n\n // Horizontal variant types\n 'horizontal-area',\n 'horizontal-area-spline',\n 'horizontal-area-step',\n 'horizontal-bar',\n 'horizontal-line',\n 'horizontal-step',\n 'horizontal-spline',\n ];\n\n const getPaddings = (element, paddingName) => {\n return parseInt(window.getComputedStyle(element)[`padding${paddingName}`].replace('px', ''));\n }\n\n function getDefaultOptions(){\n const ENFORCED_OPTIONS = {\n bindto: this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'),\n color: {\n pattern: this.config.colors\n },\n data: {\n colors: { ...this.config.colorMapping },\n columns: [],\n type: this.config.type.replace('horizontal-', '')\n },\n };\n\n const renderingElement = this.el();\n\n let height = renderingElement.offsetHeight;\n\n height -= (getPaddings(renderingElement, 'Top') + getPaddings(renderingElement, 'Bottom'));\n\n if (this.config.showTitle) {\n const titleElement = this.el().querySelector('.keen-dataviz-title');\n if (titleElement) {\n height -= titleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.subtitle) {\n const subtitleElement = this.el().querySelector('.keen-dataviz-subtitle');\n if (subtitleElement) {\n height -= subtitleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.notes) {\n const notesElement = this.el().querySelector('.keen-dataviz-notes');\n if (notesElement) {\n height -= notesElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n let width = this.el().querySelector('.c3-chart').offsetWidth\n - (getPaddings(renderingElement, 'Left') + getPaddings(renderingElement, 'Right'));\n if (width < 0) {\n width = 0;\n }\n\n const DEFAULT_OPTIONS = {\n size: {\n width,\n height:\n height > 0 ?\n height\n : undefined,\n }\n };\n\n const extendedConfig = extendDeep({}, DEFAULT_OPTIONS, this.config, ENFORCED_OPTIONS);\n\n return extendedConfig;\n }\n\n each(c3Types, function(type, index) {\n types[type] = {\n render: function(){\n const options = getDefaultOptions.call(this);\n\n // 100% for charts\n const sumArray = calculateSumForPercents(this.dataset.matrix);\n let oldMatrix = [];\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' || type === 'area-step' || type === 'area-spline')) {\n oldMatrix = this.dataset.matrix;\n this.dataset.matrix = [this.dataset.matrix[0], ...calculatePercents(this.dataset.matrix, sumArray)];\n if(!options.sparkline){\n options.axis = {\n y: {\n padding: {\n top: 0,\n },\n tick: {\n format: d => `${d}%`,\n },\n },\n };\n }\n }\n\n // range charts\n if (options.range) {\n this.dataset.matrix = [this.dataset.matrix[0], ...calculateRange(this.dataset.matrix)];\n }\n\n if (!!this.config.clearOnRender && options.data.columns.length && this.dataset && this.dataset.meta) {\n const datasetMeta = this.dataset.meta || {};\n const { type = '' } = datasetMeta;\n let spliceFrom = 0;\n const intervalTypes = ['interval'];\n if (intervalTypes.includes(type)) {\n spliceFrom = 1;\n }\n options.data.columns.splice(spliceFrom);\n }\n\n if (this.data()[0].length === 1 || this.data().length === 1) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n let removeLegend = false;\n\n if (type === 'gauge') {\n // Accommodate a neat bug:\n options.legend.show = false;\n options.data.columns = [[\n this.config.title || this.data()[1][0],\n this.data()[1][1]\n ]];\n removeLegend = true;\n }\n else if (type === 'pie' || type === 'donut') {\n options.data.columns = this.data().slice(1);\n }\n else {\n\n // Apply formatting for horizontal variant types\n if (type.indexOf('horizontal-') > -1) {\n options.axis.rotated = type.indexOf('horizontal-') > -1;\n }\n\n if (isDateString(this.data()[1][0])) {\n // TIMESERIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'timeseries';\n options.axis.x.tick = options.axis.x.tick || {\n format: this.config.dateFormat || c3DefaultDateFormat(this.data()[1][0], this.data()[2] ? this.data()[2][0] : this.data()[1][0]),\n culling: { max: 5 }\n };\n\n options.data.columns[0] = [];\n each(this.dataset.selectColumn(0), function(cell, i){\n if (i > 0) {\n cell = new Date(cell);\n }\n options.data.columns[0][i] = cell;\n });\n options.data.columns[0][0] = 'x';\n options.data.x = 'x';\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n else {\n // CATEGORIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'category';\n options.axis.x.categories = this.dataset.selectColumn(0).slice(1);\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n\n if (this.data()[0].length === 2) {\n options.legend.show = false;\n removeLegend = true;\n }\n\n each(this.data()[0], function(cell, i){\n if (i > 0) {\n options.data.columns.push(this.dataset.selectColumn(i));\n }\n }.bind(this));\n }\n\n if (removeLegend){\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n legendElement.remove();\n options.size.width = this.el().querySelector('.c3-chart').offsetWidth;\n }\n options.legend.show = false;\n }\n\n const chartTypesWithPartialIntervalIndicator = ['area', 'area-spline', 'area-step', 'line', 'spline', 'step'];\n\n if (options.partialIntervalIndicator\n && options.partialIntervalIndicator.show\n && chartTypesWithPartialIntervalIndicator.indexOf(options.type) > -1\n ) {\n const results = options.data.columns && options.data.columns[0];\n if (results && results.length > 1) {\n const partialResultsRegion = {\n axis: 'x',\n start: new Date(results[results.length - 2]),\n class: options.partialIntervalIndicator.className\n };\n options.regions = [...(options.regions || []), partialResultsRegion];\n }\n }\n \n if (\n !(options.tooltip && options.tooltip.show === false)\n &&\n (options.legend.show === true ||\n (options.legend\n && options.legend.tooltip\n && options.legend.tooltip.show)\n )) {\n \n // Apply custom tooltip\n options.tooltip = {\n contents: c3TooltipContents,\n format: {\n title: this.config.tooltip.format.title,\n value: (value, ratio, id, index) => {\n let valueFormatted = c3CustomTooltipFiltering.call(this, value, ratio, id, index);\n if (this.config.tooltip && this.config.tooltip.format && this.config.tooltip.format.value)\n {\n valueFormatted = this.config.tooltip.format.value.call(this, valueFormatted, ratio, id, index);\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = parseFloat(((valueFormatted / 100) * sumArray[index]).toFixed(2));\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = ((valueFormatted / 100) * sumArray[index]).toFixed(2);\n return parseFloat(valueFormatted);\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n }\n };\n }\n\n if (options.legend.show === true) {\n const c3options = { ...options };\n // Apply custom color handling\n c3options.data.color = c3CustomDataMapping.bind(this);\n\n c3options.legend.hide = true; // hide default c3 legend\n\n // Render artifacts\n this.view._artifacts['c3'] = c3.generate(c3options);\n\n c3PaginatingLegend.call(this, {...options, onLegendRendered: () => {\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n if (\n options.legend.position === 'top' ||\n options.legend.position === 'bottom'\n ) {\n c3options.size.height -= legendElement.offsetHeight;\n this.view._artifacts['c3'].resize({ height: c3options.size.height });\n } else {\n if (c3options.size.width === 0) {\n c3options.size.width = this.el().offsetWidth\n - getPaddings(this.el(), 'Left')\n - getPaddings(this.el(), 'Right');\n }\n c3options.size.width -= legendElement.offsetWidth;\n this.view._artifacts['c3'].resize({ width: c3options.size.width });\n }\n }\n },\n onPaginated: () => {\n this.view._artifacts['c3'].flush();\n }\n });\n }\n else {\n this.view._artifacts['c3'] = c3.generate(options);\n }\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts['c3']) {\n this.view._artifacts['c3'].destroy();\n this.view._artifacts['c3'] = null;\n }\n }\n };\n });\n\n return types;\n}\n\nfunction c3CustomDataMapping(color, d) {\n const type = this.config.type;\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if ((d.id && scope.indexOf(d.id) > -1)\n || (d && !d.id && scope.indexOf(d) > -1)) {\n return color;\n }\n else {\n if (type === 'donut' || type === 'pie') {\n return 'rgba(0,0,0,.1)';\n }\n else {\n return 'rgba(0,0,0,.07)';\n }\n }\n }\n else {\n return color;\n }\n}\n\nfunction c3CustomTooltipFiltering(value, ratio, id, index) {\n const type = this.config.type;\n\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if (scope.indexOf(id) > -1) {\n return value;\n }\n }\n else {\n return value;\n }\n}\n\nfunction bindResizeListener(fn){\n if (typeof window === 'undefined') return;\n window.onresize = window.resize = function(){};\n if (window.addEventListener) {\n window.addEventListener('resize', fn, true);\n }\n else if (window.attachEvent) {\n window.attachEvent('onresize', fn);\n }\n}\n","export default function (startDate, endDate) {\n const timeDiff = Math.abs(new Date(startDate).getTime() - new Date(endDate).getTime());\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'June',\n 'July',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n // Yearly (31536000000) + Monthly\n if (timeDiff >= 2419200000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getFullYear();\n };\n }\n // Daily\n else if (timeDiff >= 86400000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getDate();\n };\n }\n // Hourly\n else if (timeDiff >= 3600000) {\n return '%I:%M %p';\n }\n // Minutely\n else {\n return '%I:%M:%S %p';\n }\n}\n","import * as d3 from 'd3';\n\nimport isDateString from '../../../utils/assert-date-string';\n\nexport default function (options) {\n const cols = options.data.columns;\n const datavizInstance = this;\n const chart = this.view._artifacts.c3;\n let columns = [];\n const domNode = this.el().querySelector('.' + datavizInstance.config.theme + '-rendering');\n const legendConfig = datavizInstance.config.legend;\n\n const pagination = this.view._artifacts.pagination = {\n ...{\n hidden: [],\n labels: [],\n offset: 0,\n limit: Math.round((domNode.offsetHeight - 78) / 20),\n total: 0\n },\n ...legendConfig.pagination\n };\n\n if (options.legend.sort) {\n columns = options.legend.sort(cols);\n\n // update column order in the data, so tooltip will be the same order\n const columnsSorted = [];\n const dataColumnsSorted = [];\n if (cols[0][0] === 'x') {\n dataColumnsSorted.push(cols[0]);\n }\n columns.forEach(column => {\n let columnData = options.data.columns.find(item => item[0] === column);\n dataColumnsSorted.push(columnData);\n });\n options.data.columns = dataColumnsSorted;\n } else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i][0] !== 'x' && !isDateString(cols[i][1])) {\n columns.push(cols[i][0]);\n }\n }\n }\n\n const legendElement = this.el().querySelector('.keen-c3-legend');\n\n let align = 'vertical';\n if (legendConfig.position === 'top' || legendConfig.position === 'bottom') {\n align = 'horizontal';\n }\n\n const paginateHorizontalLeftElement = document.createElement('div');\n paginateHorizontalLeftElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-left');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalLeftElement);\n }\n\n const legendItemsElement = document.createElement('div');\n legendItemsElement.setAttribute('class', `keen-c3-legend-items keen-c3-legend-${align}-items`);\n legendElement.append(legendItemsElement);\n\n const paginateVerticalElement = document.createElement('div');\n paginateVerticalElement.setAttribute('class', 'keen-c3-legend-pagination keen-c3-legend-pagination-icons');\n if (align === 'vertical') {\n legendElement.append(paginateVerticalElement);\n }\n\n const paginateHorizontalRightElement = document.createElement('div');\n paginateHorizontalRightElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalRightElement);\n }\n\n paginateData();\n\n function paginateData(){\n pagination.labels = columns.slice(pagination.offset, pagination.offset + pagination.limit);\n pagination.total = columns.length;\n renderLegendComponent.call(datavizInstance, pagination.labels);\n if (pagination.total > pagination.limit) {\n renderPaginationComponent.call(datavizInstance);\n }\n if (options.onPaginated){\n options.onPaginated();\n }\n }\n\n function renderLegendComponent(){\n legendItemsElement.innerHTML = '';\n\n pagination.labels.forEach(label => {\n const labelShortened = legendConfig.label.textMaxLength ? label.slice(0, legendConfig.label.textMaxLength - 1) : label;\n const legendItem = document.createElement(\"div\");\n legendItem.innerHTML = `${labelShortened}`;\n legendItem.chartPartId = label;\n legendItem.setAttribute('class', 'legend-item');\n legendItemsElement.append(legendItem);\n\n const legendItemColorSample = document.createElement(\"span\");\n legendItemColorSample.setAttribute('class', 'legend-item-color-sample');\n legendItemColorSample.style.backgroundColor = chart.color(legendItem.chartPartId);\n legendItem.prepend(legendItemColorSample);\n\n const tooltipElement = document.createElement(\"div\");\n legendItem.addEventListener('mouseover', (event) => {\n chart.focus(legendItem.chartPartId);\n if (legendConfig.tooltip.show && legendItem.chartPartId.length > legendConfig.label.textMaxLength) {\n tooltipElement.setAttribute('class', `keen-c3-legend-label-overlay keen-c3-legend-position-${legendConfig.position}`);\n tooltipElement.innerHTML =\n `${\n options.legend.tooltip.pointer ? `
` : ``\n }${legendItem.chartPartId}`;\n legendItem.append(tooltipElement);\n }\n });\n legendItem.addEventListener('mouseout', (event) => {\n chart.revert();\n tooltipElement.remove();\n });\n legendItem.addEventListener('click', (event) => {\n let opacity = 1;\n const isHidden = pagination.hidden.indexOf(legendItem.chartPartId);\n if (isHidden < 0) {\n pagination.hidden.push(legendItem.chartPartId);\n opacity = .35;\n }\n else {\n pagination.hidden.splice(isHidden, 1);\n opacity = 1;\n }\n legendItem.style.opacity = opacity;\n chart.toggle(legendItem.chartPartId);\n });\n });\n\n if (options.onLegendRendered){\n options.onLegendRendered();\n options.onLegendRendered = null;\n }\n\n }\n\n function renderPaginationComponent(){\n paginateVerticalElement.innerHTML = '';\n paginateHorizontalLeftElement.innerHTML = '';\n paginateHorizontalRightElement.innerHTML = '';\n\n const arrowUp = document.createElement('i');\n const arrowDown = document.createElement('i');\n\n const paginate = (direction) => {\n if (direction === 'forward') {\n const diff = pagination.offset + pagination.limit;\n if (diff < pagination.total) {\n pagination.offset = diff;\n return;\n }\n pagination.offset = 0;\n return;\n }\n\n const diff = pagination.offset - pagination.limit;\n if (diff >= 0) {\n pagination.offset = diff;\n return;\n }\n\n pagination.offset = Math.floor(pagination.total/pagination.limit) * pagination.limit;\n };\n\n arrowDown.addEventListener('click', () => {\n paginate('forward');\n paginateData();\n clearSelectedText();\n });\n\n arrowUp.addEventListener('click', () => {\n paginate('backward');\n paginateData();\n clearSelectedText();\n });\n\n if (legendConfig.position === 'left' || legendConfig.position === 'right') {\n arrowUp.setAttribute('class', 'up');\n arrowDown.setAttribute('class', 'down');\n paginateVerticalElement.append(arrowDown);\n paginateVerticalElement.append(arrowUp);\n } else {\n // bottom top\n arrowUp.setAttribute('class', 'left');\n arrowDown.setAttribute('class', 'right');\n paginateHorizontalLeftElement.append(arrowUp);\n paginateHorizontalRightElement.append(arrowDown);\n }\n\n }\n\n function clearSelectedText() {\n let selection;\n if (document.selection && document.selection.empty) {\n selection = document.selection;\n selection.empty();\n }\n else if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n }\n }\n}\n","import { escapeHtml } from '../../../utils/escape-html';\n\nexport default function (d, defaultTitleFormat, defaultValueFormat, color) {\n let text;\n let title;\n // Set config options or defaults\n const nameFormat = this.config.tooltip_format_name || function (name) { return name; };\n const titleFormat = this.config.tooltip_format_title || defaultTitleFormat;\n const valueFormat = this.config.tooltip_format_value || defaultValueFormat;\n\n // Reverse list to match legend\n for (let i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n if (!text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n let name = nameFormat(d[i].name);\n let value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n let bgcolor = this.levelColor ? this.levelColor(d[i].value) : color(d[i].id);\n if (value && !isNaN(value)) {\n text += \"\";\n if (name.indexOf('__tooltip_ignore_name_field__') === -1) {\n text += \"\";\n }\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + escapeHtml(title) + \"
\" + escapeHtml(name) + \"\" + escapeHtml(value) + \"
\";\n}\n","export default function calculateRange(matrix) {\n const newValues = matrix.slice(1).map(d => d.map((e, i) => {\n if (typeof e === 'number') {\n if (i === 1) {\n return e - d[i + 1];\n }\n }\n return e;\n }));\n return newValues;\n}","export function calculateSumForPercents(matrix) {\n const sumArray = [];\n matrix.slice(1).forEach((d, i) => {\n d.forEach((e) => {\n if (typeof e === 'number') {\n if (!sumArray[i]) {\n sumArray[i] = e;\n return sumArray[i];\n }\n sumArray[i] += e;\n }\n return sumArray[i];\n });\n });\n return sumArray;\n}\n\nexport function calculatePercents(matrix, sumArray) {\n const newValues = matrix.slice(1).map((d, i) => d.map((e) => {\n if (typeof e === 'number') {\n return (e / sumArray[i]) * 100;\n }\n return e;\n }));\n return newValues;\n}\n","import { escapeHtml } from '../../utils/escape-html';\nimport renderDownloadButton from '../../utils/render-download-btn';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default {\n render: function(text){\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n const msg = document.createElement('span');\n\n const titleContainer = document.createElement('div');\n const subtitleContainer = document.createElement('div');\n const notesContainer = document.createElement('div');\n\n outer.className = this.config.theme + ' keen-dataviz-box';\n inner.className = this.config.theme + '-message';\n\n // Create title and notes for message\n titleContainer.className = this.config.theme + '-title';\n titleContainer.innerHTML = escapeHtml(this.config.title || '');\n subtitleContainer.className = this.config.theme + '-subtitle';\n subtitleContainer.innerHTML = escapeHtml(this.config.subtitle || '');\n notesContainer.className = this.config.theme + '-notes';\n notesContainer.innerHTML = escapeHtml(this.config.notes || '');\n\n msg.innerHTML = escapeHtml(text) || '';\n inner.appendChild(msg);\n\n if (this.config.title && this.config.showTitle) {\n outer.appendChild(titleContainer);\n }\n\n if (this.config.subtitle) {\n outer.appendChild(subtitleContainer);\n }\n\n outer.appendChild(inner);\n\n if (this.config.notes) {\n outer.appendChild(notesContainer);\n }\n\n if (this.config.ui\n && this.config.ui.buttons\n && this.config.ui.buttons.download\n && this.config.ui.buttons.download.type) {\n renderDownloadButton({\n element: this.el(),\n data: escapeHtml(text) || '',\n type: this.config.ui.buttons.download.type,\n label: this.config.ui.buttons.download.label,\n })\n }\n\n if (this.config.utils\n && this.config.utils.clickToCopyToClipboard) {\n titleContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n notesContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n msg.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n\n this.el().innerHTML = '';\n this.el().appendChild(outer);\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import exportImage from './export-svg';\nimport exportData from './export-data';\n\nexport default function downloadResults(obj) {\n const { event, type, data } = obj;\n event.preventDefault();\n const supportedFormats = ['json', 'csv', 'jpg', 'jpeg', 'png'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = '';\n let content = '';\n\n if (format === 'png') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n });\n return;\n }\n\n if (format === 'jpg' || format === 'jpeg') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n quality: 1,\n bgcolor: '#fff',\n });\n return;\n }\n\n if (format === 'json') {\n exportData({ type: format, data });\n }\n\n if (format === 'csv') {\n exportData({ type: format, data });\n }\n}\n","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { prettyNumber } from '../../utils/pretty-number';\nimport { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nfunction formatExtractionData(res, prop) {\n const { query, result } = res;\n const formattedResult = [];\n if (query.analysis_type !== 'extraction') throw new Error('Analysis type is not an extraction!');\n if (Array.isArray(result)) {\n result.forEach((item) => {\n const itemProp = prop.split('.').reduce((acc, val) => (acc && acc[val]) || null, item);\n const obj = {\n query,\n result: itemProp,\n };\n formattedResult.push(obj);\n });\n }\n return formattedResult;\n}\n\nexport default {\n render: function(){\n let color = this.config.colors[0];\n const theme = this.config.theme;\n const title = this.config.title;\n const subtitle = this.config.subtitle;\n const opts = this.config;\n let value = '-';\n let prevValue= '';\n let html = '';\n let prefix = '';\n let suffix = '';\n let formattedNum;\n let flexDifferenceStyle = '';\n let resultDifference = '';\n let differenceStyle = '';\n let smallerValue = '';\n const { results, previousResults, isExtraction, comparedProp } = this.config;\n if(results && previousResults){\n flexDifferenceStyle = previousResults ? ' metric-comparison' : '';\n smallerValue = previousResults && title ? '-smaller' : '';\n resultDifference = results.result - previousResults.result;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n if (this.data() && this.data()[1] && this.data()[1][1] && typeof this.data()[1][1] === 'number') {\n value = this.data()[1][1];\n }\n\n if (isExtraction && comparedProp) {\n const formattedResult = formatExtractionData(results, comparedProp);\n \n value = formattedResult[0].result;\n prevValue = formattedResult[1].result;\n\n flexDifferenceStyle = prevValue ? ' metric-comparison' : '';\n smallerValue = prevValue && title ? '-smaller' : '';\n resultDifference = value - prevValue;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n formattedNum = value;\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(value)) ) {\n formattedNum = prettyNumber(value);\n if(results && previousResults){\n resultDifference = prettyNumber(resultDifference);\n }\n }\n\n if (opts['prefix']) {\n prefix = '' + opts['prefix'] + '';\n }\n if (opts['suffix']) {\n suffix = '' + opts['suffix'] + '';\n }\n html += '
';\n html += '
';\n if (results && previousResults) {\n html += '
' + escapeHtml(resultDifference) + '
';\n }\n if (isExtraction && comparedProp) {\n if (value && prevValue) {\n html += '
' + escapeHtml(resultDifference) + '
';\n html += '' + prevValue + '';\n } else {\n html += '

No data to display

';\n }\n }\n html += '
' + prefix + escapeHtml(formattedNum) + suffix + '
';\n if (title) {\n html += '
' + escapeHtml(title) + '
';\n }\n if (subtitle) {\n html += '
' + escapeHtml(subtitle) + '
';\n }\n html += '
';\n html += '
';\n\n this.el().innerHTML = html;\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const resultClassName = `.${theme}-metric-value${smallerValue}`;\n document.querySelector(resultClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n\n if (results && previousResults) {\n const previousResultsClassName = `.${theme}-metric${differenceStyle}`;\n document.querySelector(previousResultsClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n }\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nlet currentPage;\nfunction _generateTableRows(datavizInstance, dataset) {\n let html = '';\n const defaultConfig = {\n page: 1,\n limit: 0,\n arrows: true\n };\n let customConfig = {};\n if (datavizInstance.config.table && datavizInstance.config.table.pagination) {\n customConfig = datavizInstance.config.table.pagination;\n }\n const config = {\n ...defaultConfig,\n ...customConfig\n };\n\n if (!currentPage){\n currentPage = config.page;\n }\n\n let datasetPaginated;\n let pages = 0;\n if (config.limit === 0) {\n datasetPaginated = dataset.slice(1); // remove header\n } else {\n const start = config.limit * (currentPage - 1) + 1;\n const end = start + config.limit;\n datasetPaginated = dataset.slice(start, end);\n pages = Math.ceil((dataset.length - 1) / config.limit);\n }\n\n let columnsArray = datavizInstance.config.table.columns ?\n datavizInstance.config.table.columns :\n datavizInstance.dataset.matrix[0];\n\n const colNamesToMap = {};\n const {\n mapValues,\n mapDates,\n } = datavizInstance.config.table;\n for (let key in mapValues){\n colNamesToMap[columnsArray.indexOf(key)] = key;\n }\n\n for (let row of datasetPaginated) {\n html += '';\n for (let [index, rowColValue] of row.entries()) {\n if (mapDates && rowColValue instanceof Date) {\n rowColValue = mapDates(rowColValue);\n }\n\n let rowColValueEscaped = escapeHtml(rowColValue);\n if(colNamesToMap[index]){\n html += `${mapValues[colNamesToMap[index]](rowColValueEscaped)}`;\n continue;\n }\n html += `${rowColValueEscaped}`\n }\n html += '';\n }\n\n if (pages > 1){\n html += ``;\n let pageNumber = 1;\n const prevPage = (currentPage === 1) ? 1 : (currentPage - 1);\n const nextPage = (currentPage === pages) ? pages : (currentPage + 1);\n if (config.arrows){\n html += `«`;\n }\n while (pageNumber <= pages){\n html += `${pageNumber}`;\n pageNumber++;\n }\n if (config.arrows){\n html += `»`;\n }\n html += '';\n }\n\n return html;\n}\n\nfunction _generateTableHeader(datavizInstance, dataset) {\n let html = '';\n let fieldNumber = -1;\n const tableConfig = datavizInstance.config.table;\n const columnNames =\n (tableConfig && tableConfig.columns)\n || dataset[0];\n for (let colName of columnNames) {\n let colNameEscaped = escapeHtml(colName);\n fieldNumber +=1;\n html += `${colNameEscaped}`;\n }\n return html;\n}\n\n\n const render = function() {\n const dataset = this.dataset.matrix;\n\n const el = this.el();\n const theme = this.config.theme;\n const datavizInstance = this;\n\n let html = '';\n\n const isEmpty = dataset.length === 1 && dataset[0].length === 0;\n if (isEmpty) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n // Open wrapper\n html += `
`;\n\n // Static, scrollable table\n html += ``;\n html += '';\n html += '';\n html += _generateTableHeader(datavizInstance, dataset);\n html += '';\n html += '';\n // Table data\n html += '';\n html += _generateTableRows(datavizInstance, dataset);\n html += '';\n html += '
';\n/* */\n // Close wrapper\n html += '
';\n\n // Inject HTML string\n el.querySelector(`.${theme}-rendering`).innerHTML = html;\n\n el\n .querySelectorAll(`.${theme}-rendering th`)\n .forEach((item) => {\n item.addEventListener('click', (event) => {\n let sortOrder = event.target.getAttribute('order') || 'asc';\n let fieldNumber = event.target.getAttribute('fieldNumber');\n let checker = function (a, b) {\n let sortOrderNumber = (sortOrder === 'asc') ? 1 : -1;\n\n if (typeof a[fieldNumber] === 'string') {\n let nameA = a[fieldNumber].toUpperCase(); // ignore upper and lowercase\n let nameB = b[fieldNumber].toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1 * sortOrderNumber;\n }\n if (nameA > nameB) {\n return 1* sortOrderNumber;\n }\n\n // names must be equal\n return 0;\n }\n return (a[fieldNumber] - b[fieldNumber]) * sortOrderNumber;\n };\n\n if (sortOrder === 'asc') {\n sortOrder = 'desc';\n } else {\n sortOrder = 'asc'\n }\n event.target.setAttribute('order', sortOrder);\n\n const first = this.dataset.matrix.shift();\n this.dataset.matrix.sort(checker);\n this.dataset.matrix.unshift(first);\n\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n });\n });\n\n\n const attachBtnEventListeners = () => {\n el.querySelectorAll('.btn').forEach(btn => {\n btn.addEventListener('click', (event) => {\n currentPage = parseInt(event.target.getAttribute('data-page'));\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n }, true);\n });\n };\n\n attachBtnEventListeners(datavizInstance, el, theme);\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const tableClass = `.${theme}-table-dataset`;\n document.querySelector(tableClass)\n .addEventListener('click', (e) => {\n const { nodeName, innerText } = e.target;\n if (nodeName === 'TD') {\n copyToClipboard(innerText, e);\n }\n });\n }\n };\n\n\n\nconst update = function(){\n // no special update handling\n this.render();\n };\n\nconst destroy= function(){};\n\nexport default { render, update, destroy };\n","export default {\n render: function(){\n let html = '';\n const artifacts = this.view._artifacts.spinner = {};\n\n // Build DOM element\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n this.el().innerHTML = html;\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts.spinner) {\n if (this.view._artifacts.spinner.interval) {\n clearInterval(this.view._artifacts.spinner.interval);\n }\n this.view._artifacts.spinner.radius = 0;\n try {\n delete this.view._artifacts.spinner;\n }\n catch (e) {\n this.view._artifacts.spinner = undefined;\n }\n }\n this.el().innerHTML = '';\n }\n};\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 30, left: 200 };\n let yMarginElement = 0;\n if(marginBetweenSteps){\n yMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if (countingMethod === \"relative\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth =\n (prevElemWidth * d[1]) / matrix[i][1]);\n percent = ((d[1] / matrix[i][1]) * 100).toFixed(decimals);\n }\n if (countingMethod === \"absolute\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth = (svgWidth * d[1]) / matrix[1][1]);\n percent = ((d[1] / matrix[1][1]) * 100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n \n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('x2', (d) => { return d.points[1].x + margin.left; })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('x2', polygons[polygons.length-1].points[2].x + margin.left)\n .attr('y2', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2)\n + (margin.left * 0.9);\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 16\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 12\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top;\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement - 5;\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 60, left: 200 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n const yMarginElement = elemHeight * 0.3;\n const shadowCut = (yMarginElement * 2.5);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = prevElemWidth * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = svgWidth * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[3].x,\n y: d.points[3].y\n },\n {\n x: d.points[2].x,\n y: d.points[2].y\n },\n {\n x: effect3d === 'left'\n ? d.points[2].x\n : d.points[2].x - shadowCut < svgWidth/2\n ? svgWidth/2 + 5\n : d.points[2].x - shadowCut,\n y: effect3d === 'left'\n ? d.points[2].y\n : d.points[2].y + (yMarginElement/1.5)\n },\n {\n x: effect3d === 'right'\n ? d.points[3].x\n : d.points[3].x + shadowCut > svgWidth/2\n ? svgWidth/2 - 5\n : d.points[3].x + shadowCut,\n y: effect3d === 'right'\n ? d.points[3].y\n : d.points[3].y + (yMarginElement/1.5)\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('x2', (d, i) => {\n if(i === 0){\n return d.points[1].x + margin.left;\n }\n return d.points[1].x + margin.left - shadowCut;\n })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('x2', polygons[polygons.length-1].points[2].x\n + margin.left - shadowCut )\n .attr('y2', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5 + (yMarginElement/4)\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2) + 130;\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 18\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 3\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n let xMarginElement = 0;\n if(marginBetweenSteps){\n xMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined'\n || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left - (xMarginElement/2))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/2))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight + (margin.bottom * 0.5) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', (d) => {\n if(d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) > svgHeight + margin.bottom - 40 + margin.top){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n return d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n const xMarginElement = elemWidth * 0.3;\n const shadowCut = (xMarginElement/1.5);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[0].x,\n y: d.points[0].y\n },\n {\n x: d.points[1].x,\n y: d.points[1].y\n },\n {\n x: effect3d === 'top'\n ? d.points[1].x\n : d.points[1].x - shadowCut,\n y: effect3d === 'top'\n ? d.points[1].y\n : d.points[1].y - xMarginElement < svgHeight/2\n ? svgHeight/2 + 5\n : d.points[1].y - xMarginElement\n },\n {\n x: effect3d === 'bottom'\n ? d.points[0].x\n : d.points[0].x - shadowCut,\n y: effect3d === 'bottom'\n ? d.points[0].y\n : d.points[0].y + xMarginElement > svgHeight/2\n ? svgHeight/2 - 5\n : d.points[0].y + xMarginElement\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left + (xMarginElement/4))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/4))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', svgHeight + (margin.bottom * 0.4) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', (d) => {\n if(d.points[2].y + (elemWidth/4) >\n svgHeight + margin.bottom - 40){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n if(d.points[2].y + (elemWidth/4) < d.points[1].y){\n return d.points[1].y + 20 + margin.top;\n }\n return d.points[2].y + (elemWidth/4) + 10 + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","/* eslint-env browser */\nimport c3 from 'c3';\nimport { each } from '../../utils/each';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class MetricCombo {\n render() {\n const {\n container,\n metricResults,\n title,\n showTitle,\n subtitle,\n tooltip,\n utils,\n } = this.config;\n\n const colors = ['#c3c4cc'];\n const columns = [];\n columns[0] = [];\n each(this.dataset.selectColumn(0), (c, i) => {\n let cell;\n if (i > 0) {\n cell = new Date(c);\n }\n columns[0][i] = cell;\n });\n columns[0][0] = 'x';\n\n each(this.data()[0], (c, i) => {\n if (i > 0) {\n columns.push(this.dataset.selectColumn(i));\n }\n });\n\n const prevResult = (metricResults && metricResults.previous && metricResults.previous.result)\n || 0;\n const currResult = (metricResults && metricResults.current && metricResults.current.result)\n || 0;\n const count = currResult - prevResult;\n const percentDifference = prevResult === 0 ? '-' : prettyNumber(Math.round((count / prevResult) * 100));\n let labelClass = 'keen-dataviz-metric-green';\n let iconClass = 'arrow-green';\n\n if (percentDifference < 0) {\n labelClass = 'keen-dataviz-metric-red';\n iconClass = 'arrow-red';\n }\n\n const containerTitle = (showTitle && title) ? `
${title}
` : '';\n const containerSubtitle = subtitle ? `
${subtitle}
` : '';\n const containerElement = document.querySelector(container);\n containerElement.innerHTML = `\n
\n
\n
\n ${containerTitle}\n ${containerSubtitle}\n
${percentDifference} %
\n
${prettyNumber(count)}
\n
\n
\n
\n
\n
\n
`;\n const chartRoot = containerElement.querySelector('.c3-chart');\n const chart = c3.generate({\n bindto: chartRoot,\n color: {\n pattern: colors,\n },\n title,\n legend: {\n show: false,\n },\n data: {\n x: 'x',\n columns,\n type: 'area-spline',\n selection: {\n draggable: false,\n enabled: true,\n multiple: true,\n },\n },\n point: {\n r: 0,\n focus: {\n expand: {\n r: 5,\n enabled: true,\n },\n },\n select: {\n r: 5,\n enabled: true,\n },\n },\n axis: {\n y: {\n show: false,\n },\n x: {\n show: false,\n },\n },\n grid: {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n },\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: -4,\n },\n tooltip,\n });\n\n if (utils && utils.clickToCopyToClipboard) {\n const currentCount = document.querySelector('.current-count').innerText;\n document.querySelector('.keen-dataviz-metric-combo')\n .addEventListener('click', e => copyToClipboard(currentCount, e));\n }\n }\n\n update() {\n this.destroy();\n this.render();\n }\n\n destroy() {\n const { container } = this.config;\n const containerElement = document.querySelector(container);\n const chartContainer = containerElement.querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport Rangeable from 'rangeable';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Heatmap {\n render() {\n const {\n colors,\n container,\n heatmap: { showSlider, simpleTooltip },\n } = this.config;\n const {\n matrix,\n meta,\n } = this.dataset;\n const margin = {\n top: 10,\n right: 10,\n bottom: 50,\n left: 50,\n };\n const baseWidth = 600;\n const baseHeight = 600;\n const heatmapContainer = d3.select(container);\n const containerWidth = parseInt(heatmapContainer.style('width'), 10) || baseWidth;\n const containerHeight = parseInt(heatmapContainer.style('height'), 10) || baseHeight;\n const chartContainer = this.el().querySelector('.c3-chart');\n const svgWidth = containerWidth - margin.right - margin.left;\n const svgHeight = containerHeight - margin.top - margin.bottom;\n\n const xLabel = new Set();\n const yLabel = new Set();\n\n const formatData = () => {\n const dateFormat = d3.timeFormat('%B %d');\n const timeFormat = d3.timeFormat('%H:%M');\n const arr = [];\n matrix.forEach((element) => {\n if (meta.type === 'heatmap') {\n if (typeof element[0][2] === 'number') {\n const obj = {\n x: element[0][0],\n y: element[0][1],\n value: element[0][2],\n };\n arr.push(obj);\n }\n } else {\n const timestamp = Date.parse(element[0]);\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(timestamp)) {\n const obj = {\n x: dateFormat(new Date(element[0])),\n y: timeFormat(new Date(element[0])),\n value: element[1],\n };\n arr.push(obj);\n }\n }\n });\n return arr;\n };\n\n const formattedData = formatData();\n\n formattedData.forEach((item) => {\n xLabel.add(item.x);\n yLabel.add(item.y);\n });\n\n const refValue = formattedData[0].value;\n const minRange = formattedData\n .reduce((min, curr) => (curr.value < min ? curr.value : min), refValue);\n const maxRange = formattedData\n .reduce((max, curr) => (curr.value > max ? curr.value : max), refValue);\n\n const getColor = () => {\n const defaultColor = '#00BBDE';\n const baseColor = colors[0];\n let rgb = d3.rgb(defaultColor);\n if (d3.color(baseColor)) {\n rgb = d3.rgb(baseColor);\n }\n return rgb;\n };\n\n const getColorAlpha = d3.scaleLinear()\n .domain([0, d3.max(formattedData, d => d.value)])\n .range([0, 1]);\n\n const convertRGBAtoRGB = (color, bg = [255, 255, 255]) => {\n const opacity = color[3];\n\n return [Math.floor(((1 - opacity) * bg[0]) + (opacity * color[0]) + 0.5),\n Math.floor(((1 - opacity) * bg[1]) + (opacity * color[1]) + 0.5),\n Math.floor(((1 - opacity) * bg[2]) + (opacity * color[2]) + 0.5)];\n };\n\n const getTileColor = (value) => {\n const alpha = getColorAlpha(value);\n const rgb = getColor();\n const solidColor = convertRGBAtoRGB([rgb.r, rgb.g, rgb.b, alpha]);\n const color = `rgb(${solidColor[0]}, ${solidColor[1]}, ${solidColor[2]})`;\n return color;\n };\n\n const svg = d3.select(chartContainer)\n .append('svg')\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${containerWidth} ${containerHeight}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr(\n 'transform',\n `translate(${margin.left},${margin.top})`,\n );\n\n if (showSlider) {\n // eslint-disable-next-line no-unused-vars\n const rangeableInput = d3.select(container)\n .append('input')\n .attr('type', 'range')\n .attr('class', 'keen-dataviz-slider');\n\n const handleSliderChange = (data) => {\n const rects = svg.selectAll('rect');\n const [min, max] = data;\n\n rects.each((d, i, nodes) => {\n d3.select(nodes[i])\n .style('visibility', () => ((d.value > max || d.value < min) ? 'hidden' : 'visible'));\n });\n };\n\n // eslint-disable-next-line no-unused-vars\n const rangeable = new Rangeable('.keen-dataviz-slider', {\n multiple: true,\n min: minRange,\n max: maxRange,\n value: [minRange, maxRange],\n onChange: data => handleSliderChange(data),\n });\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${getColor()};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${getColor()} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${getColor()};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement('style');\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector('script');\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const xLabelBase = 5;\n const yLabelBase = 10;\n\n const getAxisLabelRatio = (base, labelSize) => Math.floor(labelSize / base) + 1;\n const xAxis = d3.scaleBand()\n .range([0, svgWidth])\n .domain([...xLabel])\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .attr('transform', `translate(0, ${svgHeight})`)\n .call(d3.axisBottom(xAxis).tickSize(0))\n .selectAll('text')\n .attr('dy', '1em')\n .filter((d, i) => i % getAxisLabelRatio(xLabelBase, xLabel.size))\n .style('display', 'none');\n\n const yAxis = d3.scaleBand()\n .range([svgHeight, 0])\n .domain([...yLabel].sort())\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .call(d3.axisLeft(yAxis).tickSize(0))\n .selectAll('text')\n .filter((d, i) => i % getAxisLabelRatio(yLabelBase, yLabel.size))\n .style('display', 'none');\n\n const chartTooltip = d3.select(container)\n .append('div')\n .attr('class', 'keen-dataviz-tooltip')\n .style('opacity', 0)\n .style('background-color', 'white')\n .style('border', `2px solid ${getColor().toString()}`)\n .style('font-size', '14px')\n .style('padding', '2px 8px')\n .style('box-shadow', '2px 2px 4px rgba(0,0,0,0.25')\n .style('display', 'none')\n .style('position', 'fixed');\n\n const handleMouseOver = () => {\n d3.select(d3.event.target)\n .raise()\n .style('transition', 'transform 150ms ease-out')\n .style('outline', `1px solid ${getColor()}`)\n .style('transform', 'translate(0px, -4px)');\n\n chartTooltip\n .style('opacity', 1)\n .style('display', 'block');\n };\n\n const handleMouseMove = (d) => {\n let tooltipContent = `\n \n value:\n ${d.value}\n `;\n if (!simpleTooltip) {\n tooltipContent = `\n \n xAxis:\n ${d.x}\n \n \n yAxis:\n ${d.y}\n \n ${tooltipContent}\n `;\n }\n chartTooltip\n .html(`\n \n ${tooltipContent}\n
\n `)\n .style('left', `${d3.event.clientX + 10}px`)\n .style('top', `${d3.event.clientY + 10}px`);\n };\n\n const handleMouseLeave = () => {\n d3.select(d3.event.target)\n .style('outline', 'none')\n .style('transform', 'none');\n\n chartTooltip\n .style('opacity', 0)\n .style('display', 'none');\n };\n\n const handleClick = d => copyToClipboard(d.value);\n\n svg.selectAll()\n .data(formattedData, d => `${d.x}:${d.y}`)\n .enter()\n .append('rect')\n .attr('x', d => xAxis(d.x))\n .attr('y', d => yAxis(d.y))\n .attr('width', xAxis.bandwidth())\n .attr('height', yAxis.bandwidth())\n .style('fill', d => getTileColor(d.value))\n .style('cursor', 'pointer')\n .on('mouseover', handleMouseOver)\n .on('mousemove', handleMouseMove)\n .on('mouseleave', handleMouseLeave)\n .on('click', handleClick);\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = this.el().querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from \"d3\";\nimport Rangeable from \"rangeable\";\nimport { prettyNumber } from \"../../utils/pretty-number\";\nimport copyToClipboard from \"../../utils/copy-to-clipboard\";\n\nexport default class Choropleth {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n utils,\n title,\n choropleth: {\n map,\n borders: { show, size, color },\n showSlider\n }\n } = this.config;\n const opts = this.config;\n const choroplethContainer = d3.select(container);\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n const width = Number(choroplethContainer.style(\"width\").slice(0, -2));\n const height = Number(choroplethContainer.style(\"height\").slice(0, -2));\n let heightChanges = 0;\n if (title) heightChanges += 31;\n if (showSlider) heightChanges += 20;\n const chart = chartContainer\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height - heightChanges);\n\n const onlyValues = matrix.slice(1).map(el => el[1]);\n let minVal = d3.min(onlyValues);\n const maxVal = d3.max(onlyValues);\n if(minVal === maxVal) minVal = 0;\n const lightColor = d3.hsl(colors[0]).brighter(1);\n lightColor.l = 0.95;\n const darkColor = colors[0];\n const ramp = d3\n .scaleLinear()\n .domain([minVal === undefined ? 0 : minVal, maxVal === undefined ? 0 : maxVal])\n .range([lightColor, darkColor]);\n\n d3.json(\n `https://cdn.jsdelivr.net/npm/keen-dataviz-maps@1.0.0/maps/${map}.json`\n ).then(data => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 5])\n .translateExtent([[0, 0], [width, height - 50]])\n .on(\"zoom\", zoomed);\n\n let projection;\n switch (map) {\n case \"world\":\n projection = d3.geoMercator().fitSize([width, height - 50], data);\n break;\n case \"us\":\n projection = d3\n .geoAlbersUsa()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n\n default:\n projection = d3\n .geoMercator()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n }\n\n const path = d3.geoPath().projection(projection);\n\n const usData = data.features.map(el => {\n const theOne = matrix.filter(d => d[0] === el.properties.name);\n if (theOne[0])\n return {\n ...el,\n properties: { ...el.properties, result: theOne[0][1] }\n };\n return {\n ...el,\n properties: { ...el.properties, result: 0 }\n };\n });\n\n if (showSlider) {\n const handleSliderChange = data => {\n const el = chart.selectAll(`.${elementName}`);\n const [min, max] = data;\n\n el.each((d, i, nodes) => {\n d3.select(nodes[i]).style(\"visibility\", () =>\n d.properties.result > max || d.properties.result < min\n ? \"hidden\"\n : \"visible\"\n );\n });\n };\n\n chartContainer\n .style(\"display\", \"flex\")\n .style(\"flex-direction\", \"column\")\n .style(\"justify-content\", \"center\");\n\n const rangeContainer = chartContainer\n .append(\"div\")\n .style(\"width\", \"95%\")\n .style(\"margin\", \"auto\");\n rangeContainer.append(\"input\").attr(\"id\", \"rangeSlider\");\n\n const rangeable = new Rangeable(\"#rangeSlider\", {\n type: \"double\",\n tooltips: true,\n min: 0,\n max: maxVal,\n onChange: data => handleSliderChange(data)\n });\n\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${colors[0]};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${colors[0]} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${colors[0]};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement(\"style\");\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector(\"script\");\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const elementName = map === \"world\" ? \"country\" : \"state\";\n\n chart\n .selectAll(\"path\")\n .data(usData)\n .enter()\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"class\", elementName)\n .attr(\n \"id\",\n d =>\n `${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .attr(\"cursor\", \"pointer\")\n .on(\"mouseover\", handleMouseOver)\n .on(\"mousemove\", handleMouseMove)\n .on(\"mouseout\", handleMouseOut);\n\n //borders\n if (show) {\n chart\n .selectAll(`.${elementName}`)\n .style(\"stroke\", color)\n .style(\"stroke-width\", size);\n }\n\n //tooltip\n const tooltip = d3\n .select(\".c3-chart\")\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"c3-tooltip-container\")\n .style(\"display\", \"none\")\n .style(\"position\", \"fixed\");\n\n //hover handling\n function handleMouseOver(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(1.2 * maxVal))\n .style(\"stroke-width\", 1.5 * size);\n\n tooltip.style(\"opacity\", 1).style(\"display\", \"block\");\n }\n\n function handleMouseMove(d) {\n let result = d.properties.result;\n if (\n (typeof opts[\"prettyNumber\"] === \"undefined\" ||\n opts[\"prettyNumber\"] === true) &&\n !isNaN(parseInt(d.properties.result))\n ) {\n result = prettyNumber(d.properties.result);\n }\n tooltip\n .html(\n `\n \n \n \n \n \n \n \n
${d.properties.name}
${result}
\n `\n )\n .style(\"left\", `${d3.event.clientX + 10}px`)\n .style(\"top\", `${d3.event.clientY + 10}px`);\n }\n function handleMouseOut(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .style(\"stroke-width\", size);\n\n tooltip.style(\"opacity\", 0).style(\"display\", \"none\");\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll(`.${elementName}`);\n\n label.on(\"click\", handleClickToCopy);\n\n function handleClickToCopy(data) {\n const {\n properties: { result }\n } = data;\n copyToClipboard(result, d3.event);\n }\n }\n function zoomed() {\n chart\n .selectAll(`.${elementName}`)\n .attr(\"transform\", d3.event.transform);\n }\n chart.call(zoom);\n chart.call(zoom).on(\"mousedown.zoom\", null);\n });\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n chartContainer.remove();\n }\n}\n","import copyToClipboard from './copy-to-clipboard';\n\nfunction removeClassWithTimeOut(element, className = 'copied', ms = 1000) {\n setTimeout(() => {\n element.classList.remove(className);\n }, ms);\n}\n\nfunction handleCopyToClipboard(event) {\n const { target, target: { nodeName } } = event;\n\n let value;\n if (nodeName === 'DD') {\n value = target.innerText;\n if (!target.classList.contains('copied')) {\n target.classList.add('copied');\n removeClassWithTimeOut(target);\n }\n }\n if (nodeName === 'DT') {\n value = target.nextSibling.innerText;\n if (!target.nextSibling.classList.contains('copied')) {\n target.nextSibling.classList.add('copied');\n removeClassWithTimeOut(target.nextSibling);\n }\n }\n\n copyToClipboard(value);\n}\n\nexport default function renderExecutionMetadata({\n element,\n data,\n} = {}) {\n const dataList = document.createElement('dl');\n dataList.classList = 'keen-dataviz-execution-meta';\n\n if (Object.keys(data).length) {\n Object.keys(data).forEach((item) => {\n const dt = document.createElement('dt');\n dt.innerText = item.replace(/_/g, ' ');\n dt.addEventListener('click', e => handleCopyToClipboard(e));\n\n const dd = document.createElement('dd');\n dd.innerText = data[item];\n dd.addEventListener('click', e => handleCopyToClipboard(e));\n\n dataList.append(dt);\n dataList.append(dd);\n });\n } else {\n dataList.innerText = 'No execution metadata available';\n }\n\n element.append(dataList);\n}\n","import autocollector from './autocollector';\nimport modern from './modern';\nimport dracula from './dracula';\n\nexport default {\n autocollector,\n modern,\n dracula,\n};","const palette = {\n colors: [\n '#5E77FF',\n '#9C60FE',\n '#F162FE',\n '#FD65B7',\n '#FD6768',\n '#FDB86A',\n '#F2FC6C',\n '#A5FC6E',\n '#71FB85',\n '#73FBD0',\n '#76DDFA',\n '#76f4fa',\n '#bb76fa',\n '#fa76bf'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#45B2E8',\n '#D9540D',\n '#2CAB72',\n '#2C4BAB',\n '#EDDD02',\n '#E84545',\n '#E845CE',\n '#5FCEC9',\n '#E89F45',\n '#28E43F',\n '#B765C0',\n '#458AE8',\n '#AB2C2C',\n '#AB2C75',\n '#27E5FF',\n '#7168F2',\n '#FF932B',\n '#855D00',\n '#ACE845',\n '#1C91B4'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#8be9fd',\n '#50fa7b',\n '#ffb86c',\n '#ff79c6',\n '#bd93f9',\n '#ff5555',\n '#f1fa8c',\n ]\n};\n\nexport default palette;"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./lib/utils/each.js","webpack:///./lib/utils/copy-to-clipboard.js","webpack:///external \"d3\"","webpack:///./lib/utils/pretty-number.js","webpack:///./lib/utils/escape-html.js","webpack:///./lib/utils/extend.js","webpack:///./lib/utils/svg-text-wrap.js","webpack:///(webpack)/buildin/global.js","webpack:///./lib/dataset/modifiers/append.js","webpack:///./lib/dataset/utils/create-null-list.js","webpack:///external \"c3\"","webpack:///./lib/utils/assert-date-string.js","webpack:///./lib/dataset/index.js","webpack:///./lib/dataset/utils/analyses.js","webpack:///./lib/dataset/utils/flatten.js","webpack:///./lib/utils/strip-html-tags.js","webpack:///./lib/utils/extend-deep.js","webpack:///./lib/utils/render-download-btn.js","webpack:///./lib/utils/export-svg.js","webpack:///./lib/utils/export-data.js","webpack:///./node_modules/rangeable/dist/rangeable.min.js","webpack:///./lib/browser.js","webpack:///./lib/index.js","webpack:///./lib/dataset/modifiers/delete.js","webpack:///./lib/dataset/modifiers/filter.js","webpack:///./lib/dataset/modifiers/insert.js","webpack:///./lib/dataset/modifiers/select.js","webpack:///./lib/dataset/modifiers/sort.js","webpack:///./lib/dataset/modifiers/update.js","webpack:///./lib/dataset/utils/parsers.js","webpack:///./lib/dataset/utils/object.js","webpack:///./lib/dataset/utils/create-extraction-keys.js","webpack:///./lib/data.js","webpack:///./lib/libraries/index.js","webpack:///./lib/libraries/c3/extensions/default-date-format.js","webpack:///./lib/libraries/c3/extensions/paginating-legend.js","webpack:///./lib/libraries/c3/extensions/tooltip-contents.js","webpack:///./lib/dataset/utils/calculate-range.js","webpack:///./lib/dataset/utils/calculate-percents.js","webpack:///./lib/libraries/default/message.js","webpack:///./lib/utils/download-results.js","webpack:///./node_modules/dom-to-image/src/dom-to-image.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./lib/libraries/default/metric.js","webpack:///./lib/libraries/default/table.js","webpack:///./lib/libraries/default/spinner.js","webpack:///./lib/libraries/default/funnel.js","webpack:///./lib/libraries/default/funnel-3d.js","webpack:///./lib/libraries/default/horizontal-funnel.js","webpack:///./lib/libraries/default/horizontal-funnel-3d.js","webpack:///./lib/libraries/default/metric-combo.js","webpack:///./lib/libraries/default/heatmap.js","webpack:///./lib/libraries/default/choropleth.js","webpack:///./lib/utils/render-execution-metadata.js","webpack:///./lib/palettes/index.js","webpack:///./lib/palettes/autocollector.js","webpack:///./lib/palettes/modern.js","webpack:///./lib/palettes/dracula.js"],"names":["each","o","cb","s","n","Array","length","call","hasOwnProperty","copyToClipboard","stickTooltip","event","tooltip","style","opacity","top","pageY","left","pageX","value","placeholder","document","createElement","body","appendChild","select","execCommand","removeChild","notification","padding","backgroundColor","fontSize","position","zIndex","transition","innerText","addEventListener","e","setTimeout","prettyNumber","input","Number","sciNo","toPrecision","prefix","suffixes","String","Math","abs","recurse","iteration","split","rhs","charAt","numNumerals","escapeHtml","matchHtmlRegExp","string","str","match","exec","escape","html","index","lastIndex","charCodeAt","substring","extend","target","i","arguments","prop","textWrap","d3","text","width","words","reverse","word","line","lineNumber","lineHeight","x","attr","y","dy","tspan","append","pop","push","join","node","getComputedTextLength","appendColumn","appendRow","self","args","prototype","slice","label","undefined","matrix","row","cell","concat","newRow","col","selectColumn","len","list","testObject","testString","getTime","isNaN","ISO_8601","test","del","filter","insert","sort","update","Dataset","config","meta","type","data","arr","set","coords","Error","colIndex","indexOf","rowIndex","colResult","rowResult","selectRow","analyses","parser","average","start","end","sum","avg","val","parseFloat","maximum","nums","max","apply","minimum","min","getColumnAverage","getRowAverage","getColumnSum","getRowSum","getColumnMaximum","getRowMaximum","getColumnMinimum","getRowMinimum","getColumnLabel","getRowIndex","flatten","ob","toReturn","flatObject","stripHtmlTags","inputString","replace","extendDeep","key","renderDownloadButton","element","btnClass","isBtnRendered","parentNode","children","find","child","className","button","insertBefore","nextSibling","exportImage","obj","quality","bgcolor","domtoimage","toBlob","then","blob","exportData","generateCsvContent","csvContent","forEach","j","encodeURIComponent","supportedFormats","format","toLowerCase","includes","fileName","fileFormat","content","JSON","stringify","htmlElement","setAttribute","click","Dataviz","env","global","window","extendKeenGlobalObject","KeenDataviz","KeenDataset","Keen","keenGlobals","webpackKeenGlobals","options","c3","datavizInstance","defaultOptions","showDeprecationWarnings","showLoadingSpinner","container","containerElement","title","showTitle","subtitle","notes","theme","colors","colorMapping","ui","executionMetadata","utils","clickToCopyToClipboard","indexBy","labels","labelMapping","labelMappingRegExp","errorMapping","showErrorMessages","library","sortGroups","sortIntervals","results","stacked","dateFormat","legend","show","alignment","textMaxLength","pagination","offset","limit","pointer","axis","color","size","point","focus","expand","enabled","r","sensitivity","horizontal","order","selection","draggable","multiple","onselected","d","selectedItems","view","_artifacts","selected","reduce","prev","curr","grid","partialIntervalIndicator","timezone","table","schema","renderOnVisible","funnel","lines","resultValues","percents","countingMethod","decimals","marginBetweenElements","hover","effect3d","minimalSize","react","range","sparkline","choropleth","map","borders","showSlider","heatmap","palette","palettes","console","log","convertChartTypes","stacking","el","pattern","dataset","_prepared","_rendered","visuals","prepare","render","firstVisibilityState","visibilityState","callback","bind","libraries","default","register","name","actions","method","nodeName","querySelector","visual","attributes","fn","chartOptions","destroy","innerHTML","domReady","height","num","setLabels","updateColumn","updateRow","mapLabels","mapLabelsExec","valueAfterMatching","regExpAndLabel","regExpObj","labelMappingDimension","message","loader","spinner","firstResult","query","interval","timeframe","isArray","timeframes","resultItem","foundDifferent","timeframeItem","resultTimeframe","msg","error","deleteColumn","result","event_collection","analysis_type","ds2","Object","keys","returnValue","renderAsPromise","Promise","resolve","reject","customCallback","onrendered","shouldRenderExecutionMetadata","execution_metadata","shouldRenderDownloadBtn","buttons","download","mappedMsg","buildDomWrapper","IntersectionObserver","chartVisibleCallback","events","observer","isIntersecting","observe","hidden","visibilityChange","msHidden","webkitHidden","handleVisibilityChange","load","once","sortColumns","sortRows","bool","chartType","parseRawData","parseRequest","initialize","version","pkg","chart100percentWide","rangeChart","verticalAlignment","horizontalAlignment","align","legendItemsAlign","areachart","barchart","columnchart","linechart","piechart","testDom","readyState","DOMContentLoaded","removeEventListener","deleteRow","q","splice","filterColumns","filterRows","clone","selectedColumn","ri","insertColumn","insertRow","comp","head","cols","analysesUtilMethods","a","b","op","lib","parsers","parseMetric","res","parseInterval","record","parseGroupedMetric","parseGroupedInterval","group","parseDoubleGroupedMetric","rowLabel","parseDoubleGroupedInterval","parseFunnel","steps","parseList","parseExtraction","datasetExtraction","datasetKeys","names","from","tableConfig","resultKeys","keyName","nameI","columns","iNames","parseHeatmapAxis","heatmapDataset","objKeys","metric","extraction","valueAtDeepKey","is","createExtractionKeys","Set","add","parseResponse","response","parserArgs","selectedParser","metadata","filters","group_by","display_name","getDefaultTitle","visualization","chart_type","getDefaultType","Date","analysis","toUpperCase","timer","bindResizeListener","clearTimeout","delay","chart","c3Chart","parentWidth","offsetWidth","nextSiblingWidth","prevSiblingWidth","previousSibling","resize","defineC3","types","Funnel","Funnel3d","HorizontalFunnel","HorizontalFunnel3d","MetricCombo","Heatmap","Choropleth","c3Types","getPaddings","paddingName","parseInt","getComputedStyle","getDefaultOptions","ENFORCED_OPTIONS","bindto","renderingElement","offsetHeight","titleElement","subtitleElement","notesElement","DEFAULT_OPTIONS","extendedConfig","sumArray","oldMatrix","tick","clearOnRender","datasetMeta","spliceFrom","intervalTypes","removeLegend","rotated","culling","groups","categories","legendElement","remove","chartTypesWithPartialIntervalIndicator","partialResultsRegion","class","regions","contents","c3TooltipContents","ratio","id","valueFormatted","c3CustomTooltipFiltering","toFixed","c3options","c3CustomDataMapping","hide","generate","c3PaginatingLegend","onLegendRendered","onPaginated","flush","scope","onresize","attachEvent","startDate","endDate","timeDiff","months","ms","date","getMonth","getFullYear","getDate","domNode","legendConfig","round","total","columnsSorted","dataColumnsSorted","columnData","item","column","paginateHorizontalLeftElement","legendItemsElement","paginateVerticalElement","paginateHorizontalRightElement","paginateData","renderLegendComponent","renderPaginationComponent","labelShortened","legendItem","chartPartId","legendItemColorSample","prepend","tooltipElement","revert","isHidden","toggle","arrowUp","arrowDown","paginate","direction","diff","floor","clearSelectedText","empty","getSelection","removeAllRanges","defaultTitleFormat","defaultValueFormat","nameFormat","tooltip_format_name","titleFormat","tooltip_format_title","valueFormat","tooltip_format_value","CLASS","levelColor","tooltipName","calculateRange","newValues","calculateSumForPercents","calculatePercents","outer","inner","titleContainer","subtitleContainer","notesContainer","downloadResults","preventDefault","currentTarget","previousElementSibling","formatExtractionData","formattedResult","itemProp","acc","opts","prevValue","suffix","formattedNum","flexDifferenceStyle","resultDifference","differenceStyle","smallerValue","previousResults","isExtraction","comparedProp","resultClassName","previousResultsClassName","currentPage","_generateTableRows","defaultConfig","page","arrows","customConfig","datasetPaginated","pages","ceil","columnsArray","colNamesToMap","mapValues","mapDates","entries","rowColValue","rowColValueEscaped","pageNumber","prevPage","nextPage","_generateTableHeader","fieldNumber","columnNames","colName","colNameEscaped","isEmpty","querySelectorAll","sortOrder","getAttribute","checker","sortOrderNumber","nameA","nameB","first","shift","unshift","attachBtnEventListeners","btn","tableClass","artifacts","clearInterval","radius","marginBetweenSteps","margin","right","bottom","yMarginElement","funnelContainer","chartContainer","svgWidth","svgHeight","elemHeight","prevElemWidth","percent","minimalSizeStep","polygons","newPoints","points","selectAll","enter","p","handleMouseOver","polygonsHover","labelHover","thisLabel","handleMouseOut","on","handleClickToCopy","shadowCut","polygonsShadows","polygons3d","rgb","darker","xMarginElement","elemWidth","prevElemHeight","metricResults","c","prevResult","previous","currResult","current","count","percentDifference","labelClass","iconClass","containerTitle","containerSubtitle","chartRoot","currentCount","simpleTooltip","baseWidth","baseHeight","heatmapContainer","containerWidth","containerHeight","xLabel","yLabel","formatData","timeFormat","timestamp","parse","formattedData","refValue","minRange","maxRange","getColor","defaultColor","baseColor","getColorAlpha","scaleLinear","domain","convertRGBAtoRGB","bg","getTileColor","alpha","solidColor","g","svg","rangeableInput","handleSliderChange","rects","nodes","rangeable","Rangeable","onChange","containerToString","customStyle","scriptRef","xLabelBase","yLabelBase","getAxisLabelRatio","base","labelSize","xAxis","scaleBand","axisBottom","tickSize","yAxis","axisLeft","chartTooltip","toString","raise","handleMouseMove","tooltipContent","clientX","clientY","handleMouseLeave","handleClick","bandwidth","choroplethContainer","heightChanges","onlyValues","minVal","maxVal","lightColor","hsl","brighter","l","darkColor","ramp","json","zoom","scaleExtent","translateExtent","zoomed","projection","geoMercator","fitSize","geoAlbersUsa","scale","path","geoPath","usData","features","theOne","properties","elementName","rangeContainer","tooltips","transform","renderExecutionMetadata","removeClassWithTimeOut","classList","handleCopyToClipboard","contains","dataList","dt","dd","autocollector","modern","dracula"],"mappings":"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A;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oEAAoE,gBAAgB;;AAEpF;AACA;AACA,8EAA8E;AAC9E;;AAEA;;AAEA;AACA;AACA,wCAAwC,QAAQ;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,2CAA2C;AAC3C,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,YAAY;AAC3C;;AAEA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,sCAAsC;AACtC;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,yEAAyE;AACzE;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,yBAAy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","file":"keen-dataviz.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"d3\"), require(\"c3\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"d3\", \"c3\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"d3\"), require(\"c3\")) : factory(root[\"d3\"], root[\"c3\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__10__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 21);\n","export function each(o, cb, s) {\n var n;\n if (!o) {\n return 0;\n }\n s = !s ? o : s;\n if (o instanceof Array) {\n // Indexed arrays, needed for Safari\n for (n = 0; n < o.length; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n // Hashtables\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false){\n return 0;\n }\n }\n }\n }\n return 1;\n}\n","function stickTooltip(event, tooltip) {\n tooltip.style.opacity = 0;\n tooltip.style.top = `${event.pageY}px`;\n tooltip.style.left = `${event.pageX + 10}px`;\n}\n\nexport default function copyToClipboard(value, event) {\n const placeholder = document.createElement('input');\n placeholder.value = value;\n document.body.appendChild(placeholder);\n placeholder.select();\n document.execCommand('copy');\n document.body.removeChild(placeholder);\n\n if (event) {\n const notification = document.createElement('div');\n notification.style.padding = '5px 10px';\n notification.style.backgroundColor = '#ffffff';\n notification.style.fontSize = '12px';\n notification.style.position = 'absolute';\n notification.style.top = `${event.pageY}px`;\n notification.style.left = `${event.pageX + 10}px`;\n notification.style.zIndex = '999';\n notification.style.opacity = 1;\n notification.style.transition = 'opacity 1s ease';\n notification.innerText = 'copied!';\n\n document.body.appendChild(notification);\n document.addEventListener('mousemove', e => stickTooltip(e, notification));\n\n setTimeout(() => {\n notification.style.opacity = 1;\n document.body.removeChild(notification);\n }, 1000);\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","export function prettyNumber(input) {\n // If it has 3 or fewer sig figs already, just return the number.\n var input = Number(input),\n sciNo = input.toPrecision(3),\n prefix = '',\n suffixes = ['', 'k', 'M', 'B', 'T'];\n\n if (Number(sciNo) == input && String(input).length <= 4) {\n return String(input);\n }\n\n if (Math.abs(input) >= 1000000000000000) {\n return sciNo;\n }\n\n if (input >= 1 || input <= -1) {\n if (input < 0){\n //Pull off the negative side and stash that.\n input = -input;\n prefix = '-';\n }\n return prefix + recurse(input, 0);\n }\n else {\n return input.toPrecision(3);\n }\n\n function recurse(input, iteration) {\n var input = String(input);\n var split = input.split('.');\n // If there's a dot\n if (split.length > 1) {\n // Keep the left hand side only\n input = split[0];\n var rhs = split[1];\n // If the left-hand side is too short, pad until it has 3 digits\n if (input.length == 2 && rhs.length > 0) {\n // Pad with right-hand side if possible\n if (rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n else if (input.length == 1 && rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n // Pad with right-hand side if possible\n if (rhs.length > 1) {\n input += rhs.charAt(1);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n }\n var numNumerals = input.length;\n // if it has a period, then numNumerals is 1 smaller than the string length:\n if (input.split('.').length > 1) {\n numNumerals--;\n }\n if (numNumerals <= 3) {\n return String(input) + suffixes[iteration];\n }\n else {\n return recurse(Number(input) / 1000, iteration + 1);\n }\n }\n}\n","const matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nexport function escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n for (var prop in arguments[i]){\n target[prop] = arguments[i][prop];\n }\n }\n return target;\n}\n","import * as d3 from 'd3';\n\nexport function textWrap(text, width) {\n text.each(function () {\n let text = d3.select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.1, // ems\n x = text.attr(\"x\"),\n y = text.attr(\"y\"),\n dy = 0, //parseFloat(text.attr(\"dy\")),\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\");\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n .text(word);\n }\n }\n });\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import createNullList from '../utils/create-null-list';\nimport { each } from '../../utils/each';\n\nexport function appendColumn(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n self.matrix[0].push(label);\n each(self.matrix, function(row, i) {\n let cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].push(cell);\n }\n });\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat(createNullList(self.matrix.length - 1 - input.length));\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String(self.matrix.length));\n }\n });\n }\n\n self.matrix[0].push(label);\n each(input, function(value, i){\n self.matrix[i+1][self.matrix[0].length-1] = value;\n });\n\n }\n\n return self;\n}\n\nexport function appendRow(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n const newRow = [];\n\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i){\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.push(newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length));\n }\n });\n }\n\n self.matrix.push(newRow.concat(input));\n }\n\n return self;\n}\n","export default function (len) {\n const list = [];\n for (let i = 0; i < len; i++) {\n list.push(null);\n }\n return list;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","export function testObject(input) {\n if (input !== null && typeof input.getTime === 'function' && !isNaN(input.getTime())) {\n return true;\n }\n return false;\n}\n\nexport function testString(input) {\n const ISO_8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n return ISO_8601.test(input);\n}\n\nexport default function (input) {\n if (typeof input === 'object') {\n return testObject(input);\n } else if (typeof input === 'string') {\n return testString(input);\n }\n return false;\n}\n","// Modifiers\nimport * as append from './modifiers/append';\nimport * as del from './modifiers/delete';\nimport * as filter from './modifiers/filter';\nimport * as insert from './modifiers/insert';\nimport * as select from './modifiers/select';\nimport * as sort from './modifiers/sort';\nimport * as update from './modifiers/update';\n\n// Utils\nimport analyses from './utils/analyses';\nimport { extend } from '../utils/extend';\nimport parsers from './utils/parsers';\n\nexport const Dataset = function (config = {}) {\n if (this instanceof Dataset === false) {\n return new Dataset(config);\n }\n\n this.matrix = [\n ['Index']\n ];\n this.meta = {\n type: undefined\n };\n this.config = config;\n}\n\nDataset.prototype.data = function (arr) {\n if (!arguments.length) return this.matrix;\n this.matrix = (arr instanceof Array ? arr : null);\n return this;\n};\n\nDataset.prototype.set = function (coords, value) {\n if (arguments.length < 2 || coords.length < 2) {\n throw Error('Incorrect arguments provided for #set method');\n }\n\n var colIndex = 'number' === typeof coords[0] ? coords[0] : this.matrix[0].indexOf(coords[0]),\n rowIndex = 'number' === typeof coords[1] ? coords[1] : select.selectColumn.call(this, 0).indexOf(coords[1]);\n\n var colResult = select.selectColumn.call(this, coords[0]),\n rowResult = select.selectRow.call(this, coords[1]);\n\n // Column doesn't exist, create and reset colIndex\n if (colResult.length < 1) {\n append.appendColumn.call(this, String(coords[0]));\n colIndex = this.matrix[0].length - 1;\n }\n\n // Row doesn't exist, create and reset rowIndex\n if (rowResult.length < 1) {\n append.appendRow.call(this, String(coords[1]));\n rowIndex = this.matrix.length - 1;\n }\n\n // Set provided value\n this.matrix[ rowIndex ][ colIndex ] = value;\n return this;\n};\n\nDataset.prototype.type = function(str){\n if (!arguments.length) return this.meta['type'];\n this.meta['type'] = (str ? String(str) : undefined);\n return this;\n};\n\nextend(Dataset.prototype, append);\nextend(Dataset.prototype, del);\nextend(Dataset.prototype, filter);\nextend(Dataset.prototype, insert);\nextend(Dataset.prototype, select);\nextend(Dataset.prototype, sort);\nextend(Dataset.prototype, update);\nextend(Dataset.prototype, analyses);\nDataset.parser = parsers(Dataset);\n\nexport default Dataset;\n","import { each } from '../../utils/each';\nimport { extend } from '../../utils/extend';\n\nfunction average(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0,\n avg = null;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum / set.length;\n}\n\nfunction maximum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.max.apply(Math, nums);\n}\n\nfunction minimum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.min.apply(Math, nums);\n}\n\nfunction sum(arr, start, end){\n // Copy set with given range\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum;\n}\n\nconst getColumnAverage = function (arr) {\n return average(arr, 1);\n};\nconst getRowAverage = getColumnAverage;\n\nconst getColumnSum = function (arr) {\n return sum(arr, 1);\n};\nconst getRowSum = getColumnSum;\n\nconst getColumnMaximum = function (arr) {\n return maximum(arr, 1);\n};\nconst getRowMaximum = getColumnMaximum;\n\nconst getColumnMinimum = function (arr) {\n return minimum(arr, 1);\n};\nconst getRowMinimum = getColumnMinimum;\n\nconst getColumnLabel = function (arr) {\n return arr[0];\n};\nconst getRowIndex = getColumnLabel;\n\nexport default {\n average,\n maximum,\n minimum,\n sum,\n getColumnAverage,\n getRowAverage,\n getColumnSum,\n getRowSum,\n getColumnMaximum,\n getRowMaximum,\n getColumnMinimum,\n getRowMinimum,\n getColumnLabel,\n getRowIndex,\n};\n","// Pure awesomeness by Will Rayner (penguinboy)\n// https://gist.github.com/penguinboy/762197\n\nexport function flatten(ob){\n var toReturn = {};\n for (var i in ob) {\n if (!ob.hasOwnProperty(i)) continue;\n if ((typeof ob[i]) == 'object' && ob[i] !== null) {\n var flatObject = flatten(ob[i]);\n for (var x in flatObject) {\n if (!flatObject.hasOwnProperty(x)) continue;\n toReturn[i + '.' + x] = flatObject[x];\n }\n } else {\n toReturn[i] = ob[i];\n }\n }\n return toReturn;\n};\n","/**\n * Strip html tags from string\n *\n * @param {string} string The string to strip\n * @return {string}\n * @public\n */\n\nexport function stripHtmlTags(inputString) {\n if (typeof inputString !== 'string') {\n return inputString;\n }\n return inputString.replace(/(<([^>]+)>)/ig, '');\n}\n","import { each } from './each';\n\nexport function extendDeep(target) {\n for (var i = 1; i < arguments.length; i++) {\n each(arguments[i], function(prop, key){\n if (( typeof target[key] !== 'undefined' && typeof prop !== 'undefined' ) &&\n ( typeof target[key] === 'object' && typeof prop === 'object' ) &&\n ( target[key] !== null && prop !== null )) {\n extendDeep(target[key], prop);\n }\n else {\n target[key] = prop;\n }\n });\n }\n return target;\n}\n","import downloadResults from './download-results';\n\nexport default function renderDownloadButton({\n element,\n label = 'Download',\n type = 'json',\n data,\n} = {}) {\n const btnClass = 'keen-dataviz-button';\n const isBtnRendered = [...element.parentNode.children]\n .find(child => child.className === btnClass);\n if (isBtnRendered) return;\n\n const button = document.createElement('button');\n button.innerText = label;\n button.className = btnClass;\n button.addEventListener('click', event => downloadResults({ event, type, data}));\n element.parentNode.insertBefore(button, element.nextSibling);\n};","import domtoimage from 'dom-to-image';\nimport { saveAs } from 'file-saver';\n\nexport default function exportImage(obj) {\n const { node, quality, bgcolor } = obj;\n if (quality) {\n if (quality < 0 || quality > 1) throw Error('Please provide image quality between 0 and 1');\n domtoimage.toBlob(node, { quality, bgcolor })\n .then((blob) => {\n saveAs(blob, 'chart.jpeg');\n });\n }\n\n if (!quality) {\n domtoimage.toBlob(node)\n .then((blob) => {\n saveAs(blob, 'chart.png');\n });\n }\n}\n","function generateCsvContent(data) {\n let csvContent = '';\n\n data.forEach((row, i) => {\n row.forEach((cell, j) => {\n csvContent += String(cell).replace(/,/g, '');\n if (row.length > j + 1) {\n csvContent += ',';\n }\n });\n if (data.length > i + 1) {\n csvContent += '\\n';\n }\n });\n return `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n}\n\nexport default function exportData(obj) {\n const { type, data } = obj;\n const supportedFormats = ['json', 'csv'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = supportedFormats[0];\n let content = '';\n\n if (format === 'json') {\n content = `data:text/json;charset=utf-8, ${encodeURIComponent(JSON.stringify(data))}`;\n }\n\n if (format === 'csv') {\n content = generateCsvContent(data);\n fileFormat = format;\n }\n\n const htmlElement = document.createElement('a');\n htmlElement.setAttribute('href', content);\n htmlElement.setAttribute('download', `${fileName}.${fileFormat}`);\n document.body.appendChild(htmlElement);\n htmlElement.click();\n document.body.removeChild(htmlElement);\n}\n","/*!\n *\n * Rangeable\n * Copyright (c) 2018 Karl Saunders (mobius1(at)gmx(dot)com)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.1.6\n *\n */\n(function(i,j){\"object\"==typeof exports?module.exports=j(\"Rangeable\"):\"function\"==typeof define&&define.amd?define([],j):i.Rangeable=j(\"Rangeable\")})(\"undefined\"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&\"function\"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=[\"ruler\"],\"string\"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:\"single\",tooltips:\"always\",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:\"rangeable-input\",container:\"rangeable-container\",vertical:\"rangeable-vertical\",progress:\"rangeable-progress\",handle:\"rangeable-handle\",track:\"rangeable-track\",multiple:\"rangeable-multiple\",disabled:\"rangeable-disabled\",tooltips:\"rangeable-tooltips\",tooltip:\"rangeable-tooltip\",visible:\"rangeable-tooltips--visible\"}},t),this.mouseAxis={x:\"clientX\",y:\"clientY\"},this.trackSize={x:\"width\",y:\"height\"},this.trackPos={x:\"left\",y:\"top\"},this.lastPos=0,this.double=\"double\"===this.config.type||Array.isArray(this.config.value),this.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version=\"0.1.6\",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?\"y\":\"x\",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i(\"div\",u.container),w=i(\"div\",u.track),x=i(\"div\",u.progress),y=i(\"div\",u.handle),z=i(\"div\",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i(\"div\",u.handle),i(\"div\",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i(\"div\",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+\"px\"),t.tooltips&&(v.classList.add(u.tooltips),\"string\"==typeof t.tooltips&&\"always\"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i(\"div\",\"rangeable-buffers\");this.input.values.forEach(function(C,D){var E=i(\"div\",\"rangeable-buffer\");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i(\"div\",\"rangeable-buffer\"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return\"mousedown\"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add(\"dragging\"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add(\"active\"),this.setValueFromPosition(s),this.touch?(document.addEventListener(\"touchmove\",this.events.move,!1),document.addEventListener(\"touchend\",this.events.stop,!1),document.addEventListener(\"touchcancel\",this.events.stop,!1)):(document.addEventListener(\"mousemove\",this.events.move,!1),document.addEventListener(\"mouseup\",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove(\"dragging\"),this.onEnd(),this.activeHandle.classList.remove(\"active\"),this.activeHandle=!1,this.touch?(document.removeEventListener(\"touchmove\",this.events.move),document.removeEventListener(\"touchend\",this.events.stop),document.removeEventListener(\"touchcancel\",this.events.stop)):(document.removeEventListener(\"mousemove\",this.events.move),document.removeEventListener(\"mouseup\",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event(\"change\")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case\"ArrowRight\":case\"ArrowUp\":t.stepUp(v);break;case\"ArrowLeft\":case\"ArrowDown\":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle(\"combined-tooltip\",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+\" - \"+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event(\"input\")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?\"bottom\":\"left\"]=s+\"px\",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+\"px\"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest(\".\"+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute(\"tabindex\")}):this.nodes.handle.removeAttribute(\"tabindex\"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},\"start move stop update reset native keydown\".split(\" \").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener(\"scroll\",this.events.scroll,!1),window.addEventListener(\"resize\",this.events.resize,!1),document.addEventListener(\"keydown\",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.input.addEventListener(\"input\",this.events.native,!1),this.input.form&&this.input.form.addEventListener(\"reset\",this.events.reset,!1)},r.unbind=function(){document.removeEventListener(\"scroll\",this.events.scroll),window.removeEventListener(\"resize\",this.events.resize),document.removeEventListener(\"keydown\",this.events.keydown),this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.input.removeEventListener(\"input\",this.events.native),this.input.form&&this.input.form.removeEventListener(\"reset\",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q});","import { Dataviz, Dataset } from './index';\n\nconst env = typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {};\n\nexport const extendKeenGlobalObject = function(env) {\n env.KeenDataviz = Dataviz;\n env.KeenDataset = Dataset;\n\n // just for backward compatibility\n env.Keen = env.Keen || {};\n env.Keen.Dataset = Dataset;\n env.Keen.Dataviz = Dataviz;\n};\n\nif (typeof KEEN_GLOBAL_OBJECT !== 'undefined'\n && KEEN_GLOBAL_OBJECT) {\n extendKeenGlobalObject(env);\n}\n\nexport let keenGlobals = undefined;\nif (typeof webpackKeenGlobals !== 'undefined') {\n keenGlobals = webpackKeenGlobals;\n}\n\nexport { Dataviz, Dataset } from './index';\nexport default Dataviz;\n","/* eslint-env browser */\nimport * as d3 from 'd3';\nimport c3 from 'c3';\n\nimport pkg from '../package.json';\nimport data from './data';\nimport { Dataset } from './dataset';\n\n// Utils\nimport { each } from './utils/each';\nimport isDateString from './utils/assert-date-string';\nimport { stripHtmlTags } from './utils/strip-html-tags';\nimport { escapeHtml } from './utils/escape-html';\nimport libraries from './libraries';\nimport { extendDeep } from './utils/extend-deep';\nimport exportImage from './utils/export-svg';\nimport exportData from './utils/export-data';\nimport renderDownloadButton from './utils/render-download-btn';\nimport renderExecutionMetadata from './utils/render-execution-metadata';\nimport copyToClipboard from './utils/copy-to-clipboard';\n\nimport palettes from './palettes/index';\n\n// Constructor\nexport const Dataviz = function (options = {}) {\n if (this instanceof Dataviz === false) {\n return new Dataviz(options);\n }\n\n this.c3 = c3; // expose for use outside\n this.d3 = d3;\n\n const datavizInstance = this;\n const defaultOptions = {\n showDeprecationWarnings: true,\n showLoadingSpinner: false,\n\n container: undefined, // querySelector of container, for example '#someDiv'\n containerElement: undefined, // HTML parent element for the chart\n\n // width: undefined, *deprecated* - use CSS\n // height: undefined, *deprecated* - use CSS\n\n title: undefined,\n showTitle: true,\n\n subtitle: undefined,\n\n notes: undefined,\n theme: 'keen-dataviz',\n\n colors: [\n '#00bbde', '#fe6672', '#eeb058', '#8a8ad6', '#ff855c', '#00cfbb',\n '#5a9eed', '#73d483', '#c879bb', '#0099b6', '#d74d58', '#cb9141',\n '#6b6bb6', '#d86945', '#00aa99', '#4281c9', '#57b566', '#ac5c9e',\n '#27cceb', '#ff818b', '#f6bf71', '#9b9be1', '#ff9b79', '#26dfcd',\n '#73aff4', '#87e096', '#d88bcb',\n ],\n\n colorMapping: {},\n ui: {\n executionMetadata: true,\n },\n utils: {\n clickToCopyToClipboard: true,\n },\n\n indexBy: 'timeframe.start',\n labels: [],\n labelMapping: {},\n labelMappingRegExp: undefined,\n errorMapping: {},\n showErrorMessages: true,\n library: 'default',\n sortGroups: undefined,\n sortIntervals: undefined,\n\n results: undefined, // raw data\n\n // C3 chartOptions\n type: undefined,\n stacked: false,\n dateFormat: undefined,\n legend: {\n show: true,\n position: 'right',\n alignment: 'top',\n label: {\n textMaxLength: 12\n },\n pagination: {\n offset: 0, // start from\n limit: 5 // items per page\n },\n tooltip: {\n show: true,\n pointer: true\n },\n sort: undefined\n },\n\n axis: {},\n color: {},\n size: {\n // control it with CSS of .c3-chart\n },\n padding: {\n top: 15\n },\n point: {\n focus: {\n expand: {\n enabled: false\n }\n },\n r: 2,\n show: true,\n sensitivity: 300\n },\n tooltip: {\n horizontal: true,\n format: {\n // https://c3js.org/samples/tooltip_format.html\n }\n },\n transition: {\n // duration: 0\n },\n data: {\n order: null,\n selection: {\n enabled: true,\n draggable: true,\n multiple: true\n },\n onselected: (d, element) => {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n },\n },\n grid: {\n y: {\n show: true\n }\n },\n partialIntervalIndicator: {\n show: undefined,\n className: 'partial-interval-indicator'\n },\n timezone: 'UTC',\n table: {\n schema: 'static',\n },\n renderOnVisible: false,\n funnel: {\n lines: true,\n resultValues: true,\n percents: {\n show: false,\n countingMethod: 'absolute',\n decimals: 0\n },\n marginBetweenElements: false,\n hover: true,\n effect3d: 'both-sides',\n minimalSize: false,\n },\n react: false,\n range: false,\n sparkline: false,\n choropleth: {\n map: 'world',\n borders: {\n show: true,\n size: 0.5,\n color: '#000'\n },\n showSlider: false\n },\n heatmap: {},\n };\n\n this.config = { ...extendDeep(defaultOptions, options) };\n\n if (options.palette) {\n if (!palettes[options.palette]){\n console.log('Colors pallete not found', options.palette);\n }\n this.config.colors = palettes[options.palette].colors;\n }\n\n if (this.config.type) {\n // backward compatibility with v2016... areachart -> area\n this.config.type = convertChartTypes(this.config.type);\n }\n\n // overwriting options for range chart\n if(this.config.type && this.config.type.includes('-range')) {\n this.config.range = true;\n this.config.type = this.config.type.replace('-range', '');\n this.config.legend.show = false;\n this.config.stacking = 'normal';\n this.config.labels = ['Max', 'Min'];\n this.config.colors = [\n this.config.colors[0],\n this.config.colors[0],\n ];\n }\n\n // overwriting stacked when stacking added\n if (this.config.stacking) {\n this.config.stacked = true;\n }\n\n // overwriting options for sparkline chart\n if (this.config.sparkline) {\n this.config.legend.show = false;\n this.config.axis = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n this.config.grid = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n }\n\n // get DOM node by query\n if (this.config.container) {\n this.el(this.config.container);\n }\n\n if (options.legend !== undefined && !options.legend) {\n this.config.legend = {\n ...options,\n show: false\n };\n }\n\n if (options.color && options.color.pattern) {\n // to match c3 options\n this.config.colors = options.color.pattern;\n }\n\n if (this.config.legend\n && this.config.legend.tooltip\n && this.config.legend.tooltip.show === false\n && this.config.tooltip.show === undefined) {\n this.config.tooltip = { show: false };\n }\n\n this.dataset = new Dataset(this.config);\n this.view = {\n _prepared: false,\n _rendered: false,\n _artifacts: { /* state bin */ }\n };\n\n Dataviz.visuals.push(this);\n\n if (this.config.showLoadingSpinner) {\n this.prepare();\n }\n\n if (!!this.config.results) {\n this.render(this.config.results);\n }\n this.config.firstVisibilityState = document.visibilityState;\n\n if (!this.config.utils.clickToCopyToClipboard) {\n this.config.data.onselected = () => {};\n }\n\n if (options.data && options.data.onselected) {\n this.config.data.onselected = (d, element) => {\n const callback = options.data.onselected.bind(null, d, element);\n callback();\n\n if (this.config.utils.clickToCopyToClipboard) {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n }\n };\n }\n\n};\n\n\nDataviz.libraries = { default: {} };\nif (typeof window !== 'undefined') {\n Dataviz.libraries.default = libraries(Dataviz);\n}\nDataviz.visuals = [];\n\nDataviz.register = function (name, actions) {\n Dataviz.libraries[name] = Dataviz.libraries[name] || {};\n each(actions, function(method, key){\n Dataviz.libraries[name][key] = method;\n });\n};\n\nDataviz.find = function(target){\n if (!arguments.length) return Dataviz.visuals;\n const el = target.nodeName ? target : document.querySelector(target);\n let match = null;\n each(Dataviz.visuals, function(visual){\n if (el == visual.config.container){\n match = visual;\n return false;\n }\n });\n return match;\n};\n\n\n // Prototype\n // ------------\n\nDataviz.prototype.attributes = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n const view = this.config;\n each(obj, function(prop, key){\n // Handle deprecated property names\n if (key === 'chartType') {\n key = 'type';\n }\n view[key] = prop;\n });\n return this;\n};\n\nDataviz.prototype.call = function(fn){\n fn.call(this);\n return this;\n};\n\nDataviz.prototype.chartOptions = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n this.config = extendDeep(this.config, obj);\n return this;\n};\n\nDataviz.prototype.colors = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.colors;\n this.config.colors = (arr instanceof Array ? arr : []);\n return this;\n};\n\nDataviz.prototype.colorMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })');\n }\n const datavizInstance = this;\n if (!arguments.length) return this.config.colorMapping;\n if (obj === null) {\n this.config.colorMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n datavizInstance.config.colorMapping[key] = (value ? value : null);\n });\n }\n return this;\n};\n\nDataviz.prototype.data = data;\n\nDataviz.prototype.dateFormat = function(val){\n if (this.config.showDeprecationWarnings) {\n console.log('.dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.dateFormat;\n if (typeof val === 'string' || typeof val === 'function') {\n this.config.dateFormat = val;\n }\n else {\n this.config.dateFormat = undefined;\n }\n return this;\n};\n\nDataviz.prototype.destroy = function(){\n const library = this.library();\n const type = this.config.type;\n const element = this.el();\n\n // Call destroy method if present\n if (Dataviz.libraries[library]\n && Dataviz.libraries[library][type]){\n Dataviz.libraries[library][type].destroy.call(this);\n }\n\n // Clear rendered artifacts, state bin\n if (element) {\n element.innerHTML = '';\n }\n this.view._prepared = false;\n this.view._rendered = false;\n this.view._artifacts = {};\n return this;\n};\n\nDataviz.prototype.el = function(target){\n const datavizInstance = this;\n if (!arguments.length) return this.config.containerElement;\n domReady(function(){\n if (target && target !== null) {\n if (target.nodeName) {\n datavizInstance.config.containerElement = target;\n }\n else if (document.querySelector) {\n datavizInstance.config.containerElement = document.querySelector(target);\n }\n }\n else {\n datavizInstance.config.containerElement = undefined;\n }\n });\n return this;\n};\n\nDataviz.prototype.height = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.height() is deprecated - use CSS classes');\n }\n return this;\n};\n\n// IMPORTANT: Must be run before data parsing\nDataviz.prototype.indexBy = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.indexBy;\n this.config.indexBy = (str ? String(str) : 'timeframe.start');\n return this;\n};\n\nDataviz.prototype.labels = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })');\n }\n\n if (!arguments.length) return this.config.labels;\n this.config.labels = (arr instanceof Array ? arr : []);\n\n setLabels(this);\n\n return this;\n};\n\nfunction setLabels(datavizInstance){\n // Write labels\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.updateColumn(0, function(value, index){\n if (datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n else {\n datavizInstance.dataset.updateRow(0, function(value, index){\n if (index > 0 && datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.labelMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.labelMapping;\n if (obj === null) {\n this.config.labelMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n this.config.labelMapping[key] = (value ? value : null);\n }.bind(this));\n }\n\n mapLabels(this);\n\n return this;\n};\n\nfunction mapLabelsExec({ datavizInstance, value }){\n if (datavizInstance.config.labelMappingRegExp){\n let valueAfterMatching = value;\n datavizInstance.config.labelMappingRegExp.forEach(regExpAndLabel => {\n if (regExpAndLabel.length > 1) {\n let regExpObj = regExpAndLabel[0];\n if (regExpObj.test(value)){\n valueAfterMatching = regExpAndLabel[1];\n }\n }\n });\n return stripHtmlTags(valueAfterMatching);\n }\n if (datavizInstance.config.labelMapping[value]) {\n return stripHtmlTags(String(datavizInstance.config.labelMapping[value]));\n }\n return stripHtmlTags(value);\n}\n\nfunction mapLabels(datavizInstance){\n // Write labels\n if (!datavizInstance.config.labelMappingDimension) {\n // if not defined use deprecated auto-detecting\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.config.labelMappingDimension = 'row';\n } else {\n datavizInstance.config.labelMappingDimension = 'column';\n }\n }\n\n if (datavizInstance.config.labelMappingDimension === 'row'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateColumn(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n\n if (datavizInstance.config.labelMappingDimension === 'column'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateRow(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.library = function(str){\n if (!arguments.length) return this.config['library'];\n this.config['library'] = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.message = function(){\n if (this.view._rendered) {\n this.destroy();\n }\n if (this.el()) {\n this.el().innerHTML = '';\n const message = Dataviz.libraries.default.message;\n if (message.render) {\n message.render.apply(this, arguments);\n }\n }\n return this;\n};\n\nDataviz.prototype.notes = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.notes;\n this.config.notes = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.prepare = function(){\n const datavizInstance = this;\n\n if (!this.el()) {\n throw `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n return;\n }\n\n domReady(function(){\n if (datavizInstance.view._rendered) {\n datavizInstance.destroy();\n }\n if (datavizInstance.el()) {\n datavizInstance.el().innerHTML = '';\n const loader = Dataviz.libraries.default.spinner;\n if (loader.render) {\n loader.render.call(datavizInstance);\n }\n datavizInstance.view._prepared = true;\n }\n });\n\n return this;\n};\n\nDataviz.prototype.render = function(results = undefined){\n const datavizInstance = this;\n\n if (!!results) {\n const firstResult = results[0] || results;\n if (\n firstResult.query\n && firstResult.query.interval\n && firstResult.query.timeframe\n && typeof firstResult.query.timeframe === 'string'\n && firstResult.query.timeframe.includes('this_')\n && this.config.partialIntervalIndicator\n && this.config.partialIntervalIndicator.show === undefined\n )\n {\n this.config.partialIntervalIndicator.show = true;\n }\n\n if (Array.isArray(results)) {\n const timeframes = results.map(resultItem => resultItem.query.timeframe);\n timeframes.forEach(resultTimeframe => {\n let foundDifferent = timeframes.find(timeframeItem =>\n JSON.stringify(timeframeItem) !== JSON.stringify(resultTimeframe)\n );\n if (foundDifferent){\n const msg = 'Timeframes of the queries should be the same';\n console.error(msg);\n throw msg;\n }\n });\n // first result is important to prepare X on the chart\n return datavizInstance\n .data(results[0])\n .call(() => {\n const input = results[0];\n this.dataset.deleteColumn(1);\n for (let result of results) {\n let label = `${input.query.event_collection} ${input.query.analysis_type}`;\n let ds2 = Dataset.parser('interval')(result);\n datavizInstance.dataset.appendColumn(label, ds2.selectColumn(1).slice(1));\n }\n })\n .render();\n }\n\n return datavizInstance.data(results).render();\n }\n if (\n (!!this.config.labelMapping && Object.keys(this.config.labelMapping).length > 0)\n ||\n (!!this.config.labelMappingRegExp && this.config.labelMappingRegExp.length > 0)\n ){\n mapLabels(datavizInstance);\n }\n if (!!this.config.labels && Object.keys(this.config.labels).length > 0){\n setLabels(datavizInstance);\n }\n if (!!this.config.sortGroups) {\n sortGroups(datavizInstance);\n }\n if (!!this.config.sortIntervals) {\n sortIntervals(datavizInstance);\n }\n\n const loader = Dataviz.libraries.default.spinner;\n const library = this.config.library;\n const type = this.config.type;\n const containerElement = this.el();\n\n if (!containerElement || containerElement === undefined) {\n const msg = `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n console.error(msg);\n throw msg;\n return;\n }\n\n let returnValue = datavizInstance;\n\n if (datavizInstance.config.renderAsPromise) {\n returnValue = new Promise((resolve, reject) => {\n const customCallback = this.config.onrendered;\n datavizInstance.config.onrendered = () => {\n if (customCallback) {\n customCallback();\n }\n resolve(datavizInstance);\n }\n });\n }\n\n domReady(function(){\n const shouldRenderExecutionMetadata = datavizInstance.execution_metadata\n && datavizInstance.config.ui\n && datavizInstance.config.ui.executionMetadata;\n const shouldRenderDownloadBtn = datavizInstance.config.ui\n && datavizInstance.config.ui.buttons\n && datavizInstance.config.ui.buttons.download\n && datavizInstance.config.ui.buttons.download.type;\n if (datavizInstance.view._prepared && loader.destroy) {\n loader.destroy.apply(datavizInstance, arguments);\n }\n containerElement.innerHTML = '';\n\n if (Dataviz.libraries[library] === 'undefined'){\n // Error: Unregistered library\n const msg = `Incorrect library`;\n datavizInstance.message(msg);\n throw msg;\n return;\n }\n else {\n if (typeof Dataviz.libraries[library][type] === 'undefined') {\n const msg = `Incorrect chart type`;\n const mappedMsg = this.config.errorMapping[msg] || msg;\n datavizInstance.message(mappedMsg);\n throw msg;\n return;\n }\n else {\n buildDomWrapper(containerElement,\n datavizInstance.config\n );\n if (shouldRenderDownloadBtn) {\n renderDownloadButton({\n element: containerElement,\n data: datavizInstance.dataset.matrix,\n type: datavizInstance.config.ui.buttons.download.type,\n label: datavizInstance.config.ui.buttons.download.label,\n })\n }\n if (shouldRenderExecutionMetadata) {\n renderExecutionMetadata({\n element: containerElement,\n data: datavizInstance.execution_metadata,\n })\n }\n const { renderOnVisible } = datavizInstance.config;\n if(renderOnVisible){\n if(typeof IntersectionObserver !== 'undefined'){\n const chartVisibleCallback = (events, observer) => {\n events.forEach(el => {\n if(el.isIntersecting){\n if(!datavizInstance.view._rendered){\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n })\n }\n const observer = new IntersectionObserver(chartVisibleCallback);\n observer.observe(containerElement);\n return;\n }\n }\n if(datavizInstance.config.firstVisibilityState === 'hidden'){\n if(typeof document !== 'undefined') {\n let hidden, visibilityChange;\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n const handleVisibilityChange = () => {\n if(!document[hidden] && datavizInstance.view._artifacts.c3) {\n datavizInstance.view._artifacts.c3.load(datavizInstance.dataset.matrix);\n }\n }\n if(typeof document.addEventListener !== \"undefined\" ||\n hidden !== undefined){\n document.addEventListener(visibilityChange, handleVisibilityChange, {\n once: true\n });\n }\n }\n }\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n });\n\n return returnValue;\n};\n\nDataviz.prototype.sortGroups = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortGroups;\n this.config.sortGroups = (str ? String(str) : null);\n\n sortGroups(this, str);\n\n return this;\n};\n\nfunction sortGroups(datavizInstance){\n // Sort groups\n if (datavizInstance.config.sortGroups && datavizInstance.data().length > 1) {\n if (isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.sortColumns(datavizInstance.config.sortGroups, datavizInstance.dataset.getColumnSum);\n }\n else {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortGroups, datavizInstance.dataset.getRowSum);\n }\n }\n}\n\nDataviz.prototype.sortIntervals = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortIntervals;\n this.config.sortIntervals = (str ? String(str) : null);\n\n sortIntervals(this);\n\n return this;\n};\n\nfunction sortIntervals(datavizInstance){\n if (datavizInstance.config.sortIntervals) {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortIntervals);\n }\n}\n\nDataviz.prototype.stacked = function(bool){\n if (this.config.showDeprecationWarnings) {\n console.log('.stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.stacked;\n this.config.stacked = bool ? true : false;\n return this;\n};\n\nDataviz.prototype.theme = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.theme;\n this.config.theme = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.title = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.title;\n this.config.title = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.type = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.type;\n this.config.type = (str ? convertChartTypes(str) : null);\n return this;\n};\n\nDataviz.prototype.update = function(){\n const library = this.config.library;\n const type = this.config.type;\n const element = this.el();\n if (library && type && element && Dataviz.libraries[library][type].update) {\n Dataviz.libraries[library][type].update.apply(this, arguments);\n }\n return this;\n};\n\nDataviz.prototype.width = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.width() is deprecated - use CSS classes');\n }\n return this;\n};\n\nDataviz.prototype.exportImage = function({ quality = 0, bgcolor = '#fff' } = {}) {\n exportImage({\n node: this.config.containerElement,\n quality,\n bgcolor,\n });\n};\n\nDataviz.prototype.exportData = function(type='json') {\n exportData({\n data: this.dataset.matrix,\n type,\n });\n};\n\n// Deprecations\nDataviz.prototype.chartType = Dataviz.prototype.type;\nDataviz.prototype.error = Dataviz.prototype.message;\nDataviz.prototype.parseRawData = Dataviz.prototype.data;\nDataviz.prototype.parseRequest = function(){\n // this.emit('error', 'This method is no longer supported. Use .data() instead: https://github.com/keen/keen-dataviz.js#data');\n return this;\n};\nDataviz.prototype.initialize = function(){\n // this.emit('error', 'This method is no longer supported, and can be omitted as it has no impact');\n return this;\n};\n\nDataviz.version = pkg.version;\n\n// Private\n\nfunction buildDomWrapper(el, options) {\n let html = '';\n let chart100percentWide = '';\n let rangeChart = '';\n if (options.legend.position === 'top' || options.legend.position === 'bottom') {\n chart100percentWide = 'c3-chart-100-percent';\n }\n if (options.range) {\n rangeChart = 'keen-dataviz-range';\n }\n let container = `
`;\n const verticalAlignment = ['top', 'middle', 'bottom'];\n const horizontalAlignment = ['left', 'center', 'right'];\n let align = 'horizontal';\n let legendItemsAlign = 'center';\n if (horizontalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n if (options.legend.position === 'left' || options.legend.position === 'right') {\n align = 'vertical';\n if (verticalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n }\n if (options.legend && options.legend.show) {\n if (options.legend.position === 'top' || options.legend.position === 'left') {\n container = `
${container}`;\n } else {\n container = `${container}
`;\n }\n }\n if(!options.react){\n html += `
`;\n }\n if (options.title && options.showTitle) {\n html += `
${options.title}
`;\n }\n if (options.subtitle) {\n html += `
${options.subtitle}
`;\n }\n html += `
${container}
`;\n if (options.notes) {\n html += `
${options.notes}
`;\n }\n if(!options.react){\n html += '
';\n }\n\n el.innerHTML = html;\n}\n\nfunction convertChartTypes(str) {\n const map = {\n areachart: 'area',\n barchart: 'horizontal-bar',\n columnchart: 'bar',\n linechart: 'line',\n piechart: 'pie',\n };\n return map[str] || str;\n}\n\nfunction testDom(fn) {\n if (/in/.test(document.readyState)) {\n setTimeout(() => {\n testDom(fn);\n }, 9);\n } else {\n fn();\n }\n}\n\nfunction domReady(fn) {\n if (typeof document !== 'undefined' || typeof window === 'undefined') {\n fn();\n return;\n }\n // Firefox 3.5 shim\n if (document.readyState == null && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', function DOMContentLoaded() {\n document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);\n document.readyState = 'complete';\n }, false);\n document.readyState = 'loading';\n }\n testDom(fn);\n}\n\nexport { Dataset } from './dataset';\n\nexport default Dataviz;\n","import { each } from '../../utils/each';\n\nexport function deleteColumn(q) {\n const self = this;\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n each(self.matrix, function(row, i){\n self.matrix[i].splice(index, 1);\n });\n }\n return self;\n}\n\nexport function deleteRow(q) {\n var index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n this.matrix.splice(index, 1);\n }\n return this;\n}\n","import { each } from '../../utils/each';\n\nexport function filterColumns(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i) {\n clone.push([]);\n });\n\n each(self.matrix[0], function(col, i){\n var selectedColumn = self.selectColumn(i);\n if (i == 0 || fn.call(self, selectedColumn, i)) {\n each(selectedColumn, function(cell, ri){\n clone[ri].push(cell);\n });\n }\n });\n\n self.data(clone);\n return self;\n}\n\nexport function filterRows(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i){\n if (i == 0 || fn.call(self, row, i)) {\n clone.push(row);\n }\n });\n\n self.data(clone);\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function insertColumn(index, str, input) {\n const self = this;\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n\n self.matrix[0].splice(index, 0, label);\n each(self.matrix, function(row, i) {\n var cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].splice(index, 0, cell);\n }\n });\n\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat( createNullList(self.matrix.length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n self.matrix[0].splice(index, 0, label);\n each(input, function(value, i){\n self.matrix[i+1].splice(index, 0, value);\n });\n\n }\n return self;\n}\n\nexport function insertRow(index, str, input) {\n const self = this;\n const newRow = [];\n const label = (str !== undefined) ? str : null;\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i) {\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.splice(index, 0, newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n self.matrix.splice(index, 0, newRow.concat(input) );\n }\n\n return self;\n}\n","import { each } from '../../utils/each';\n\nexport function selectColumn(q) {\n const result = [];\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1 && typeof this.matrix[0][index] !== 'undefined') {\n each(this.matrix, function(row, i) {\n result.push(row[index]);\n });\n }\n return result;\n}\n\nexport function selectRow(q) {\n let result = [];\n const index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1 && typeof this.matrix[index] !== 'undefined') {\n result = this.matrix[index];\n }\n return result;\n}\n","import { each } from '../../utils/each';\nimport analysesUtilMethods from '../utils/analyses';\n\nexport function sortColumns(str, comp) {\n var self = this,\n head = this.matrix[0].slice(1), // minus index\n cols = [],\n clone = [],\n fn = comp || analysesUtilMethods.getColumnLabel;\n\n // Isolate each column (except the index)\n each(head, function(cell, i) {\n cols.push(self.selectColumn(i+1).slice(0));\n });\n cols.sort(function(a,b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n each(cols, function(col, i) {\n self\n .deleteColumn(i+1)\n .insertColumn(i+1, col[0], col.slice(1));\n });\n return self;\n}\n\nexport function sortRows(str, comp) {\n var self = this,\n head = this.matrix.slice(0,1),\n body = this.matrix.slice(1),\n fn = comp || analysesUtilMethods.getRowIndex;\n body.sort(function(a, b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n self.data(head.concat(body));\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function updateColumn(q, input) {\n var self = this,\n index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data(), function(row, i){\n var cell;\n if (i > 0) {\n cell = input.call(self, row[index], i, row);\n if (typeof cell !== 'undefined') {\n self.matrix[i][index] = cell;\n }\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.data().length - 1) {\n input = input.concat( createNullList(self.data().length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[i+1][index] = value;\n });\n\n }\n\n }\n return self;\n}\n\nexport function updateRow(q, input){\n var self = this,\n index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data()[index], function(value, i){\n var col = self.selectColumn(i),\n cell = input.call(self, value, i, col);\n if (typeof cell !== 'undefined') {\n self.matrix[index][i] = cell;\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[index][i+1] = value;\n });\n }\n\n }\n return self;\n}\n","let Dataset; /* injected */\n\nimport { each } from '../../utils/each';\nimport { flatten } from '../utils/flatten';\nimport { valueAtDeepKey } from '../utils/object';\nimport { createExtractionKeys } from '../utils/create-extraction-keys';\n\nexport default function initialize(lib){\n Dataset = lib;\n return function(name){\n var options = Array.prototype.slice.call(arguments, 1);\n\n if (!parsers[name]) {\n throw 'Requested parser does not exist';\n }\n else {\n return parsers[name].apply(this, options);\n }\n };\n}\n\nfunction parseMetric(){\n return function(res){\n return new Dataset()\n .set(['Value', 'Result'], res.result)\n .type('metric');\n }\n}\n\n//var myParser = Dataset.parser('interval', 'timeframe.end');\nfunction parseInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n dataset.set(['Result', index], record.value);\n });\n return dataset;\n }\n}\n\nfunction parseGroupedMetric(){\n return function(res){\n var dataset = new Dataset()\n .type('grouped-metric');\n each(res.result, function(record, i){\n var label;\n each(record, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set(['Result', String(record[label])], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('grouped-interval', 'timeframe.end');\nfunction parseGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('grouped-interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n if (record.value.length) {\n each(record.value, function(group, j){\n var label;\n each(group, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set([ String(group[label]), index ], group.result);\n });\n }\n else {\n dataset.appendRow(index);\n }\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-metric', ['first', 'second']);\nfunction parseDoubleGroupedMetric(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-metric');\n each(res.result, function(record, i){\n var rowLabel = record[options[0][0]] + ' ' + record[options[0][1]];\n dataset.set([ 'Result', rowLabel ], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-interval', ['first', 'second'], 'timeframe.end');\nfunction parseDoubleGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-interval');\n each(res.result, function(record, i){\n var index = options[1] && options[1] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n each(record['value'], function(value, j){\n var label = value[options[0][0]] + ' ' + value[options[0][1]];\n dataset.set([ label, index ], value.result);\n });\n });\n return dataset;\n }\n}\n\nfunction parseFunnel(){\n return function(res){\n var result, steps, dataset;\n if (typeof res.steps !== 'undefined'\n && typeof res.result !== 'undefined'\n && res.result instanceof Array) {\n // Ad-hoc funnel response\n result = res.result;\n steps = res.steps;\n }\n else if (typeof res.result.steps !== 'undefined'\n && typeof res.result.result !== 'undefined'\n && res.result.result instanceof Array) {\n // Saved funnel response\n result = res.result.result;\n steps = res.result.steps;\n }\n dataset = new Dataset().type('funnel');\n dataset.appendColumn('Step Value');\n each(result, function(value, i){\n if (typeof steps !== 'undefined' && steps[i]) {\n dataset.appendRow(String(steps[i].event_collection), [value]);\n }\n });\n return dataset;\n }\n}\n\nfunction parseList(){\n return function(res){\n var dataset = new Dataset()\n .type('list');\n each(res.result, function(value, i){\n dataset.set( [ 'Result', String(i+1) ], value );\n });\n return dataset;\n }\n}\n\nfunction parseExtraction(){\n let config = this.config;\n return function(res){\n const datasetExtraction = new Dataset()\n .type('extraction');\n\n const datasetKeys = createExtractionKeys(res.result);\n let names = Array.from(datasetKeys);\n\n const tableConfig = config && config.table;\n if (tableConfig && tableConfig.schema === 'dynamic') {\n const results = res.result;\n const keys = {};\n results.forEach(resultItem => {\n const resultKeys = Object.keys(flatten(resultItem));\n if (resultKeys && resultKeys.length) {\n resultKeys.forEach(keyName => {\n if (!keys[keyName]) {\n keys[keyName] = true;\n }\n });\n }\n });\n names = Object.keys(keys);\n }\n\n let nameI = 0;\n names.forEach(value => {\n datasetExtraction.set([ value, '0' ], value);\n nameI++;\n });\n\n if (Dataset) {\n if (config\n && config.table\n && config.table.columns) {\n names = config.table.columns;\n }\n }\n\n for (let i=0; i {\n Object.keys(flatten(result)).map((key) => {\n keys.add(key);\n });\n });\n\n return keys;\n}\n","import Dataset from './dataset';\nimport { extend } from './utils/extend';\nimport { stripHtmlTags } from './utils/strip-html-tags';\n\nexport default function (data) {\n if (!arguments.length) return this.dataset.data();\n if (data instanceof Dataset) {\n this.dataset = data;\n return this;\n }\n return parseResponse.call(this, data);\n};\n\nfunction parseResponse(response) {\n var dataset,\n indexBy,\n meta,\n parser,\n parserArgs = [],\n query,\n selectedParser,\n title,\n type;\n\n indexBy = this.config.indexBy;\n meta = response.metadata || {};\n query = (typeof response.query !== 'undefined') ? response.query : {};\n\n // Ensure all required params are present\n query = extend({\n analysis_type: null,\n event_collection: null,\n filters: [],\n group_by: null,\n interval: null,\n timeframe: null,\n timezone: null\n }, query);\n\n if (query.analysis_type === 'funnel') {\n parser = 'funnel';\n }\n else if (query.analysis_type === 'extraction'){\n parser = 'extraction';\n }\n else if (query.analysis_type === 'select_unique') {\n if (!query.group_by && !query.interval) {\n parser = 'list';\n }\n // else { Not supported }\n }\n else if (query.analysis_type) {\n if (!query.group_by && !query.interval) {\n parser = 'metric';\n }\n else if (query.group_by && !query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-metric';\n parserArgs.push(query.group_by);\n }\n else {\n parser = 'grouped-metric';\n }\n }\n else if (query.interval && !query.group_by) {\n parser = 'interval';\n parserArgs.push(indexBy);\n }\n else if (query.group_by && query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-interval';\n parserArgs.push(query.group_by);\n parserArgs.push(indexBy);\n }\n else {\n parser = 'grouped-interval';\n parserArgs.push(indexBy);\n }\n }\n }\n\n if (!parser) {\n\n // Metric\n // -------------------------------\n if (typeof response.result === 'number'){\n parser = 'metric';\n }\n\n // Everything else\n // -------------------------------\n if (response.result instanceof Array && response.result.length > 0){\n\n // Interval w/ single value\n // -------------------------------\n if (response.result[0].timeframe && (typeof response.result[0].value == 'number' || response.result[0].value == null)) {\n parser = 'interval';\n parserArgs.push(indexBy)\n }\n\n // Static GroupBy\n // -------------------------------\n if (typeof response.result[0].result == 'number'){\n parser = 'grouped-metric';\n }\n\n // x, y, value for heatmap\n if (this.config.type === 'heatmap' && Object.keys(response.result[0] === 3 && typeof response.result[0].result === 'number')) {\n parser = 'heatmap-axis';\n }\n\n // Grouped Interval\n // -------------------------------\n if (response.result[0].value instanceof Array){\n parser = 'grouped-interval';\n parserArgs.push(indexBy)\n }\n\n // Funnel\n // -------------------------------\n if (typeof response.result[0] === 'number'\n && typeof response.steps !== 'undefined'){\n parser = 'funnel';\n // Move steps into query object\n query.steps = response.steps;\n }\n\n // Select Unique\n // -------------------------------\n if ((typeof response.result[0] === 'string' || typeof response.result[0] == 'number') && typeof response.steps === 'undefined'){\n parser = 'list';\n }\n\n // Extraction\n // -------------------------------\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n // Set title from saved query body, or create a default title\n if (this.config.title === undefined) {\n if (meta.display_name) {\n title = meta.display_name;\n }\n else {\n title = getDefaultTitle(query);\n }\n this.config.title = title;\n }\n\n // Set type from saved query body, or use a default type\n if (!this.config.type) {\n if (meta.visualization && meta.visualization.chart_type) {\n type = meta.visualization.chart_type;\n }\n else {\n type = getDefaultType(parser);\n }\n this.config.type = type;\n }\n\n // Define the appropriate parser\n selectedParser = Dataset.parser.apply(this, [parser].concat(parserArgs));\n\n // Parse the response with augmented query body\n dataset = selectedParser(extend(response, { 'query': query }));\n\n // Set true dates for 'interval' data\n if (parser.indexOf('interval') > -1) {\n dataset.updateColumn(0, function(value, i){\n return new Date(value);\n });\n }\n\n dataset.updateRow(0, function(value, i){\n return stripHtmlTags(value);\n });\n\n this.dataset = dataset;\n\n if (response.execution_metadata) {\n this.execution_metadata = response.execution_metadata;\n }\n\n return this;\n}\n\nfunction getDefaultTitle(query) {\n var analysis = query.analysis_type ? query.analysis_type.replace('_', ' ') : '',\n title;\n\n title = analysis.replace( /\\b./g, function(a){\n return a.toUpperCase();\n });\n\n if (query.event_collection) {\n title += ' - ' + query.event_collection;\n }\n return title;\n}\n\nfunction getDefaultType(parser) {\n let type;\n switch (parser) {\n case 'metric':\n type = 'metric';\n break;\n case 'interval':\n type = 'area';\n break;\n case 'grouped-metric':\n case 'double-grouped-metric':\n type = 'bar';\n break;\n case 'grouped-interval':\n case 'double-grouped-interval':\n type = 'line';\n break;\n case 'funnel':\n type = 'horizontal-bar';\n break;\n case 'list':\n case 'extraction':\n default:\n type = 'table';\n }\n return type;\n}\n","import c3 from 'c3';\n\nimport { each } from '../utils/each';\nimport { extend } from '../utils/extend';\nimport { extendDeep } from '../utils/extend-deep';\nimport isDateString from '../utils/assert-date-string';\nimport c3DefaultDateFormat from './c3/extensions/default-date-format';\nimport c3PaginatingLegend from './c3/extensions/paginating-legend';\nimport c3TooltipContents from './c3/extensions/tooltip-contents';\n\nimport calculateRange from '../dataset/utils/calculate-range';\nimport { calculateSumForPercents, calculatePercents } from '../dataset/utils/calculate-percents';\n\nimport message from './default/message';\nimport metric from './default/metric';\nimport table from './default/table';\nimport spinner from './default/spinner';\nimport Funnel from './default/funnel';\nimport Funnel3d from './default/funnel-3d';\nimport HorizontalFunnel from './default/horizontal-funnel';\nimport HorizontalFunnel3d from './default/horizontal-funnel-3d';\nimport MetricCombo from './default/metric-combo';\nimport Heatmap from './default/heatmap';\nimport Choropleth from './default/choropleth';\n\nexport default function(lib) {\n let timer;\n bindResizeListener(function(){\n if (timer) {\n clearTimeout(timer);\n }\n const delay = (lib.visuals.length > 12) ? 1000 : 250;\n timer = setTimeout(function(){\n each(lib.visuals, function(chart){\n const c3Chart = chart.view._artifacts.c3;\n if (c3Chart) {\n const parentWidth = c3Chart.element.parentNode.parentNode.offsetWidth;\n let width = parentWidth;\n if (chart.config.legend && chart.config.legend.show && (chart.config.legend.position === 'left' || chart.config.legend.position === 'right')) {\n const nextSiblingWidth = c3Chart.element.nextSibling ? c3Chart.element.nextSibling.offsetWidth : 0;\n const prevSiblingWidth = c3Chart.element.previousSibling ? c3Chart.element.previousSibling.offsetWidth : 0;\n width = parentWidth - prevSiblingWidth - nextSiblingWidth;\n }\n\n c3Chart.resize({\n width,\n });\n\n }\n });\n }, delay);\n });\n\n return defineC3();\n};\n\nfunction defineC3(){\n const types = {\n message,\n metric,\n table,\n spinner,\n 'funnel': new Funnel,\n 'funnel-3d': new Funnel3d,\n 'horizontal-funnel': new HorizontalFunnel,\n 'horizontal-funnel-3d': new HorizontalFunnel3d,\n 'metric-combo': new MetricCombo,\n 'heatmap': new Heatmap,\n 'choropleth': new Choropleth\n };\n\n const c3Types = [\n // Standard types\n 'area',\n 'area-spline',\n 'area-step',\n 'bar',\n 'donut',\n 'gauge',\n 'line',\n 'pie',\n 'step',\n 'spline',\n\n // Horizontal variant types\n 'horizontal-area',\n 'horizontal-area-spline',\n 'horizontal-area-step',\n 'horizontal-bar',\n 'horizontal-line',\n 'horizontal-step',\n 'horizontal-spline',\n ];\n\n const getPaddings = (element, paddingName) => {\n return parseInt(window.getComputedStyle(element)[`padding${paddingName}`].replace('px', ''));\n }\n\n function getDefaultOptions(){\n const ENFORCED_OPTIONS = {\n bindto: this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'),\n color: {\n pattern: this.config.colors\n },\n data: {\n colors: { ...this.config.colorMapping },\n columns: [],\n type: this.config.type.replace('horizontal-', '')\n },\n };\n\n const renderingElement = this.el();\n\n let height = renderingElement.offsetHeight;\n\n height -= (getPaddings(renderingElement, 'Top') + getPaddings(renderingElement, 'Bottom'));\n\n if (this.config.showTitle) {\n const titleElement = this.el().querySelector('.keen-dataviz-title');\n if (titleElement) {\n height -= titleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.subtitle) {\n const subtitleElement = this.el().querySelector('.keen-dataviz-subtitle');\n if (subtitleElement) {\n height -= subtitleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.notes) {\n const notesElement = this.el().querySelector('.keen-dataviz-notes');\n if (notesElement) {\n height -= notesElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n let width = this.el().querySelector('.c3-chart').offsetWidth\n - (getPaddings(renderingElement, 'Left') + getPaddings(renderingElement, 'Right'));\n if (width < 0) {\n width = 0;\n }\n\n const DEFAULT_OPTIONS = {\n size: {\n width,\n height:\n height > 0 ?\n height\n : undefined,\n }\n };\n\n const extendedConfig = extendDeep({}, DEFAULT_OPTIONS, this.config, ENFORCED_OPTIONS);\n\n return extendedConfig;\n }\n\n each(c3Types, function(type, index) {\n types[type] = {\n render: function(){\n const options = getDefaultOptions.call(this);\n\n // 100% for charts\n const sumArray = calculateSumForPercents(this.dataset.matrix);\n let oldMatrix = [];\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' || type === 'area-step' || type === 'area-spline')) {\n oldMatrix = this.dataset.matrix;\n this.dataset.matrix = [this.dataset.matrix[0], ...calculatePercents(this.dataset.matrix, sumArray)];\n if(!options.sparkline){\n options.axis = {\n y: {\n padding: {\n top: 0,\n },\n tick: {\n format: d => `${d}%`,\n },\n },\n };\n }\n }\n\n // range charts\n if (options.range) {\n this.dataset.matrix = [this.dataset.matrix[0], ...calculateRange(this.dataset.matrix)];\n }\n\n if (!!this.config.clearOnRender && options.data.columns.length && this.dataset && this.dataset.meta) {\n const datasetMeta = this.dataset.meta || {};\n const { type = '' } = datasetMeta;\n let spliceFrom = 0;\n const intervalTypes = ['interval'];\n if (intervalTypes.includes(type)) {\n spliceFrom = 1;\n }\n options.data.columns.splice(spliceFrom);\n }\n\n if (this.data()[0].length === 1 || this.data().length === 1) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n let removeLegend = false;\n\n if (type === 'gauge') {\n // Accommodate a neat bug:\n options.legend.show = false;\n options.data.columns = [[\n this.config.title || this.data()[1][0],\n this.data()[1][1]\n ]];\n removeLegend = true;\n }\n else if (type === 'pie' || type === 'donut') {\n options.data.columns = this.data().slice(1);\n }\n else {\n\n // Apply formatting for horizontal variant types\n if (type.indexOf('horizontal-') > -1) {\n options.axis.rotated = type.indexOf('horizontal-') > -1;\n }\n\n if (isDateString(this.data()[1][0])) {\n // TIMESERIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'timeseries';\n options.axis.x.tick = options.axis.x.tick || {\n format: this.config.dateFormat || c3DefaultDateFormat(this.data()[1][0], this.data()[2] ? this.data()[2][0] : this.data()[1][0]),\n culling: { max: 5 }\n };\n\n options.data.columns[0] = [];\n each(this.dataset.selectColumn(0), function(cell, i){\n if (i > 0) {\n cell = new Date(cell);\n }\n options.data.columns[0][i] = cell;\n });\n options.data.columns[0][0] = 'x';\n options.data.x = 'x';\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n else {\n // CATEGORIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'category';\n options.axis.x.categories = this.dataset.selectColumn(0).slice(1);\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n\n if (this.data()[0].length === 2) {\n options.legend.show = false;\n removeLegend = true;\n }\n\n each(this.data()[0], function(cell, i){\n if (i > 0) {\n options.data.columns.push(this.dataset.selectColumn(i));\n }\n }.bind(this));\n }\n\n if (removeLegend){\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n legendElement.remove();\n options.size.width = this.el().querySelector('.c3-chart').offsetWidth;\n }\n options.legend.show = false;\n }\n\n const chartTypesWithPartialIntervalIndicator = ['area', 'area-spline', 'area-step', 'line', 'spline', 'step'];\n\n if (options.partialIntervalIndicator\n && options.partialIntervalIndicator.show\n && chartTypesWithPartialIntervalIndicator.indexOf(options.type) > -1\n ) {\n const results = options.data.columns && options.data.columns[0];\n if (results && results.length > 1) {\n const partialResultsRegion = {\n axis: 'x',\n start: new Date(results[results.length - 2]),\n class: options.partialIntervalIndicator.className\n };\n options.regions = [...(options.regions || []), partialResultsRegion];\n }\n }\n \n if (\n !(options.tooltip && options.tooltip.show === false)\n &&\n (options.legend.show === true ||\n (options.legend\n && options.legend.tooltip\n && options.legend.tooltip.show)\n )) {\n \n // Apply custom tooltip\n options.tooltip = {\n contents: c3TooltipContents,\n format: {\n title: this.config.tooltip.format.title,\n value: (value, ratio, id, index) => {\n let valueFormatted = c3CustomTooltipFiltering.call(this, value, ratio, id, index);\n if (this.config.tooltip && this.config.tooltip.format && this.config.tooltip.format.value)\n {\n valueFormatted = this.config.tooltip.format.value.call(this, valueFormatted, ratio, id, index);\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = parseFloat(((valueFormatted / 100) * sumArray[index]).toFixed(2));\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = ((valueFormatted / 100) * sumArray[index]).toFixed(2);\n return parseFloat(valueFormatted);\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n }\n };\n }\n\n if (options.legend.show === true) {\n const c3options = { ...options };\n // Apply custom color handling\n c3options.data.color = c3CustomDataMapping.bind(this);\n\n c3options.legend.hide = true; // hide default c3 legend\n\n // Render artifacts\n this.view._artifacts['c3'] = c3.generate(c3options);\n\n c3PaginatingLegend.call(this, {...options, onLegendRendered: () => {\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n if (\n options.legend.position === 'top' ||\n options.legend.position === 'bottom'\n ) {\n c3options.size.height -= legendElement.offsetHeight;\n this.view._artifacts['c3'].resize({ height: c3options.size.height });\n } else {\n if (c3options.size.width === 0) {\n c3options.size.width = this.el().offsetWidth\n - getPaddings(this.el(), 'Left')\n - getPaddings(this.el(), 'Right');\n }\n c3options.size.width -= legendElement.offsetWidth;\n this.view._artifacts['c3'].resize({ width: c3options.size.width });\n }\n }\n },\n onPaginated: () => {\n this.view._artifacts['c3'].flush();\n }\n });\n }\n else {\n this.view._artifacts['c3'] = c3.generate(options);\n }\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts['c3']) {\n this.view._artifacts['c3'].destroy();\n this.view._artifacts['c3'] = null;\n }\n }\n };\n });\n\n return types;\n}\n\nfunction c3CustomDataMapping(color, d) {\n const type = this.config.type;\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if ((d.id && scope.indexOf(d.id) > -1)\n || (d && !d.id && scope.indexOf(d) > -1)) {\n return color;\n }\n else {\n if (type === 'donut' || type === 'pie') {\n return 'rgba(0,0,0,.1)';\n }\n else {\n return 'rgba(0,0,0,.07)';\n }\n }\n }\n else {\n return color;\n }\n}\n\nfunction c3CustomTooltipFiltering(value, ratio, id, index) {\n const type = this.config.type;\n\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if (scope.indexOf(id) > -1) {\n return value;\n }\n }\n else {\n return value;\n }\n}\n\nfunction bindResizeListener(fn){\n if (typeof window === 'undefined') return;\n window.onresize = window.resize = function(){};\n if (window.addEventListener) {\n window.addEventListener('resize', fn, true);\n }\n else if (window.attachEvent) {\n window.attachEvent('onresize', fn);\n }\n}\n","export default function (startDate, endDate) {\n const timeDiff = Math.abs(new Date(startDate).getTime() - new Date(endDate).getTime());\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'June',\n 'July',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n // Yearly (31536000000) + Monthly\n if (timeDiff >= 2419200000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getFullYear();\n };\n }\n // Daily\n else if (timeDiff >= 86400000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getDate();\n };\n }\n // Hourly\n else if (timeDiff >= 3600000) {\n return '%I:%M %p';\n }\n // Minutely\n else {\n return '%I:%M:%S %p';\n }\n}\n","import * as d3 from 'd3';\n\nimport isDateString from '../../../utils/assert-date-string';\n\nexport default function (options) {\n const cols = options.data.columns;\n const datavizInstance = this;\n const chart = this.view._artifacts.c3;\n let columns = [];\n const domNode = this.el().querySelector('.' + datavizInstance.config.theme + '-rendering');\n const legendConfig = datavizInstance.config.legend;\n\n const pagination = this.view._artifacts.pagination = {\n ...{\n hidden: [],\n labels: [],\n offset: 0,\n limit: Math.round((domNode.offsetHeight - 78) / 20),\n total: 0\n },\n ...legendConfig.pagination\n };\n\n if (options.legend.sort) {\n columns = options.legend.sort(cols);\n\n // update column order in the data, so tooltip will be the same order\n const columnsSorted = [];\n const dataColumnsSorted = [];\n if (cols[0][0] === 'x') {\n dataColumnsSorted.push(cols[0]);\n }\n columns.forEach(column => {\n let columnData = options.data.columns.find(item => item[0] === column);\n dataColumnsSorted.push(columnData);\n });\n options.data.columns = dataColumnsSorted;\n } else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i][0] !== 'x' && !isDateString(cols[i][1])) {\n columns.push(cols[i][0]);\n }\n }\n }\n\n const legendElement = this.el().querySelector('.keen-c3-legend');\n\n let align = 'vertical';\n if (legendConfig.position === 'top' || legendConfig.position === 'bottom') {\n align = 'horizontal';\n }\n\n const paginateHorizontalLeftElement = document.createElement('div');\n paginateHorizontalLeftElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-left');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalLeftElement);\n }\n\n const legendItemsElement = document.createElement('div');\n legendItemsElement.setAttribute('class', `keen-c3-legend-items keen-c3-legend-${align}-items`);\n legendElement.append(legendItemsElement);\n\n const paginateVerticalElement = document.createElement('div');\n paginateVerticalElement.setAttribute('class', 'keen-c3-legend-pagination keen-c3-legend-pagination-icons');\n if (align === 'vertical') {\n legendElement.append(paginateVerticalElement);\n }\n\n const paginateHorizontalRightElement = document.createElement('div');\n paginateHorizontalRightElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalRightElement);\n }\n\n paginateData();\n\n function paginateData(){\n pagination.labels = columns.slice(pagination.offset, pagination.offset + pagination.limit);\n pagination.total = columns.length;\n renderLegendComponent.call(datavizInstance, pagination.labels);\n if (pagination.total > pagination.limit) {\n renderPaginationComponent.call(datavizInstance);\n }\n if (options.onPaginated){\n options.onPaginated();\n }\n }\n\n function renderLegendComponent(){\n legendItemsElement.innerHTML = '';\n\n pagination.labels.forEach(label => {\n const labelShortened = legendConfig.label.textMaxLength ? label.slice(0, legendConfig.label.textMaxLength - 1) : label;\n const legendItem = document.createElement(\"div\");\n legendItem.innerHTML = `${labelShortened}`;\n legendItem.chartPartId = label;\n legendItem.setAttribute('class', 'legend-item');\n legendItemsElement.append(legendItem);\n\n const legendItemColorSample = document.createElement(\"span\");\n legendItemColorSample.setAttribute('class', 'legend-item-color-sample');\n legendItemColorSample.style.backgroundColor = chart.color(legendItem.chartPartId);\n legendItem.prepend(legendItemColorSample);\n\n const tooltipElement = document.createElement(\"div\");\n legendItem.addEventListener('mouseover', (event) => {\n chart.focus(legendItem.chartPartId);\n if (legendConfig.tooltip.show && legendItem.chartPartId.length > legendConfig.label.textMaxLength) {\n tooltipElement.setAttribute('class', `keen-c3-legend-label-overlay keen-c3-legend-position-${legendConfig.position}`);\n tooltipElement.innerHTML =\n `${\n options.legend.tooltip.pointer ? `
` : ``\n }${legendItem.chartPartId}`;\n legendItem.append(tooltipElement);\n }\n });\n legendItem.addEventListener('mouseout', (event) => {\n chart.revert();\n tooltipElement.remove();\n });\n legendItem.addEventListener('click', (event) => {\n let opacity = 1;\n const isHidden = pagination.hidden.indexOf(legendItem.chartPartId);\n if (isHidden < 0) {\n pagination.hidden.push(legendItem.chartPartId);\n opacity = .35;\n }\n else {\n pagination.hidden.splice(isHidden, 1);\n opacity = 1;\n }\n legendItem.style.opacity = opacity;\n chart.toggle(legendItem.chartPartId);\n });\n });\n\n if (options.onLegendRendered){\n options.onLegendRendered();\n options.onLegendRendered = null;\n }\n\n }\n\n function renderPaginationComponent(){\n paginateVerticalElement.innerHTML = '';\n paginateHorizontalLeftElement.innerHTML = '';\n paginateHorizontalRightElement.innerHTML = '';\n\n const arrowUp = document.createElement('i');\n const arrowDown = document.createElement('i');\n\n const paginate = (direction) => {\n if (direction === 'forward') {\n const diff = pagination.offset + pagination.limit;\n if (diff < pagination.total) {\n pagination.offset = diff;\n return;\n }\n pagination.offset = 0;\n return;\n }\n\n const diff = pagination.offset - pagination.limit;\n if (diff >= 0) {\n pagination.offset = diff;\n return;\n }\n\n pagination.offset = Math.floor(pagination.total/pagination.limit) * pagination.limit;\n };\n\n arrowDown.addEventListener('click', () => {\n paginate('forward');\n paginateData();\n clearSelectedText();\n });\n\n arrowUp.addEventListener('click', () => {\n paginate('backward');\n paginateData();\n clearSelectedText();\n });\n\n if (legendConfig.position === 'left' || legendConfig.position === 'right') {\n arrowUp.setAttribute('class', 'up');\n arrowDown.setAttribute('class', 'down');\n paginateVerticalElement.append(arrowDown);\n paginateVerticalElement.append(arrowUp);\n } else {\n // bottom top\n arrowUp.setAttribute('class', 'left');\n arrowDown.setAttribute('class', 'right');\n paginateHorizontalLeftElement.append(arrowUp);\n paginateHorizontalRightElement.append(arrowDown);\n }\n\n }\n\n function clearSelectedText() {\n let selection;\n if (document.selection && document.selection.empty) {\n selection = document.selection;\n selection.empty();\n }\n else if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n }\n }\n}\n","import { escapeHtml } from '../../../utils/escape-html';\n\nexport default function (d, defaultTitleFormat, defaultValueFormat, color) {\n let text;\n let title;\n // Set config options or defaults\n const nameFormat = this.config.tooltip_format_name || function (name) { return name; };\n const titleFormat = this.config.tooltip_format_title || defaultTitleFormat;\n const valueFormat = this.config.tooltip_format_value || defaultValueFormat;\n\n // Reverse list to match legend\n for (let i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n if (!text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n let name = nameFormat(d[i].name);\n let value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n let bgcolor = this.levelColor ? this.levelColor(d[i].value) : color(d[i].id);\n if (value && !isNaN(value)) {\n text += \"\";\n if (name.indexOf('__tooltip_ignore_name_field__') === -1) {\n text += \"\";\n }\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + escapeHtml(title) + \"
\" + escapeHtml(name) + \"\" + escapeHtml(value) + \"
\";\n}\n","export default function calculateRange(matrix) {\n const newValues = matrix.slice(1).map(d => d.map((e, i) => {\n if (typeof e === 'number') {\n if (i === 1) {\n return e - d[i + 1];\n }\n }\n return e;\n }));\n return newValues;\n}","export function calculateSumForPercents(matrix) {\n const sumArray = [];\n matrix.slice(1).forEach((d, i) => {\n d.forEach((e) => {\n if (typeof e === 'number') {\n if (!sumArray[i]) {\n sumArray[i] = e;\n return sumArray[i];\n }\n sumArray[i] += e;\n }\n return sumArray[i];\n });\n });\n return sumArray;\n}\n\nexport function calculatePercents(matrix, sumArray) {\n const newValues = matrix.slice(1).map((d, i) => d.map((e) => {\n if (typeof e === 'number') {\n return (e / sumArray[i]) * 100;\n }\n return e;\n }));\n return newValues;\n}\n","import { escapeHtml } from '../../utils/escape-html';\nimport renderDownloadButton from '../../utils/render-download-btn';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default {\n render: function(text){\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n const msg = document.createElement('span');\n\n const titleContainer = document.createElement('div');\n const subtitleContainer = document.createElement('div');\n const notesContainer = document.createElement('div');\n\n outer.className = this.config.theme + ' keen-dataviz-box';\n inner.className = this.config.theme + '-message';\n\n // Create title and notes for message\n titleContainer.className = this.config.theme + '-title';\n titleContainer.innerHTML = escapeHtml(this.config.title || '');\n subtitleContainer.className = this.config.theme + '-subtitle';\n subtitleContainer.innerHTML = escapeHtml(this.config.subtitle || '');\n notesContainer.className = this.config.theme + '-notes';\n notesContainer.innerHTML = escapeHtml(this.config.notes || '');\n\n msg.innerHTML = escapeHtml(text) || '';\n inner.appendChild(msg);\n\n if (this.config.title && this.config.showTitle) {\n outer.appendChild(titleContainer);\n }\n\n if (this.config.subtitle) {\n outer.appendChild(subtitleContainer);\n }\n\n outer.appendChild(inner);\n\n if (this.config.notes) {\n outer.appendChild(notesContainer);\n }\n\n if (this.config.ui\n && this.config.ui.buttons\n && this.config.ui.buttons.download\n && this.config.ui.buttons.download.type) {\n renderDownloadButton({\n element: this.el(),\n data: escapeHtml(text) || '',\n type: this.config.ui.buttons.download.type,\n label: this.config.ui.buttons.download.label,\n })\n }\n\n if (this.config.utils\n && this.config.utils.clickToCopyToClipboard) {\n titleContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n notesContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n msg.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n\n this.el().innerHTML = '';\n this.el().appendChild(outer);\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import exportImage from './export-svg';\nimport exportData from './export-data';\n\nexport default function downloadResults(obj) {\n const { event, type, data } = obj;\n event.preventDefault();\n const supportedFormats = ['json', 'csv', 'jpg', 'jpeg', 'png'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = '';\n let content = '';\n\n if (format === 'png') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n });\n return;\n }\n\n if (format === 'jpg' || format === 'jpeg') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n quality: 1,\n bgcolor: '#fff',\n });\n return;\n }\n\n if (format === 'json') {\n exportData({ type: format, data });\n }\n\n if (format === 'csv') {\n exportData({ type: format, data });\n }\n}\n","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { prettyNumber } from '../../utils/pretty-number';\nimport { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nfunction formatExtractionData(res, prop) {\n const { query, result } = res;\n const formattedResult = [];\n if (query.analysis_type !== 'extraction') throw new Error('Analysis type is not an extraction!');\n if (Array.isArray(result)) {\n result.forEach((item) => {\n const itemProp = prop.split('.').reduce((acc, val) => (acc && acc[val]) || null, item);\n const obj = {\n query,\n result: itemProp,\n };\n formattedResult.push(obj);\n });\n }\n return formattedResult;\n}\n\nexport default {\n render: function(){\n let color = this.config.colors[0];\n const theme = this.config.theme;\n const title = this.config.title;\n const subtitle = this.config.subtitle;\n const opts = this.config;\n let value = '-';\n let prevValue= '';\n let html = '';\n let prefix = '';\n let suffix = '';\n let formattedNum;\n let flexDifferenceStyle = '';\n let resultDifference = '';\n let differenceStyle = '';\n let smallerValue = '';\n const { results, previousResults, isExtraction, comparedProp } = this.config;\n if(results && previousResults){\n flexDifferenceStyle = previousResults ? ' metric-comparison' : '';\n smallerValue = previousResults && title ? '-smaller' : '';\n resultDifference = results.result - previousResults.result;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n if (this.data() && this.data()[1] && this.data()[1][1] && typeof this.data()[1][1] === 'number') {\n value = this.data()[1][1];\n }\n\n if (isExtraction && comparedProp) {\n const formattedResult = formatExtractionData(results, comparedProp);\n \n value = formattedResult[0].result;\n prevValue = formattedResult[1].result;\n\n flexDifferenceStyle = prevValue ? ' metric-comparison' : '';\n smallerValue = prevValue && title ? '-smaller' : '';\n resultDifference = value - prevValue;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n formattedNum = value;\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(value)) ) {\n formattedNum = prettyNumber(value);\n if(results && previousResults){\n resultDifference = prettyNumber(resultDifference);\n }\n }\n\n if (opts['prefix']) {\n prefix = '' + opts['prefix'] + '';\n }\n if (opts['suffix']) {\n suffix = '' + opts['suffix'] + '';\n }\n html += '
';\n html += '
';\n if (results && previousResults) {\n html += '
' + escapeHtml(resultDifference) + '
';\n }\n if (isExtraction && comparedProp) {\n if (value && prevValue) {\n html += '
' + escapeHtml(resultDifference) + '
';\n html += '' + prevValue + '';\n } else {\n html += '

No data to display

';\n }\n }\n html += '
' + prefix + escapeHtml(formattedNum) + suffix + '
';\n if (title) {\n html += '
' + escapeHtml(title) + '
';\n }\n if (subtitle) {\n html += '
' + escapeHtml(subtitle) + '
';\n }\n html += '
';\n html += '
';\n\n this.el().innerHTML = html;\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const resultClassName = `.${theme}-metric-value${smallerValue}`;\n document.querySelector(resultClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n\n if (results && previousResults) {\n const previousResultsClassName = `.${theme}-metric${differenceStyle}`;\n document.querySelector(previousResultsClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n }\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nlet currentPage;\nfunction _generateTableRows(datavizInstance, dataset) {\n let html = '';\n const defaultConfig = {\n page: 1,\n limit: 0,\n arrows: true\n };\n let customConfig = {};\n if (datavizInstance.config.table && datavizInstance.config.table.pagination) {\n customConfig = datavizInstance.config.table.pagination;\n }\n const config = {\n ...defaultConfig,\n ...customConfig\n };\n\n if (!currentPage){\n currentPage = config.page;\n }\n\n let datasetPaginated;\n let pages = 0;\n if (config.limit === 0) {\n datasetPaginated = dataset.slice(1); // remove header\n } else {\n const start = config.limit * (currentPage - 1) + 1;\n const end = start + config.limit;\n datasetPaginated = dataset.slice(start, end);\n pages = Math.ceil((dataset.length - 1) / config.limit);\n }\n\n let columnsArray = datavizInstance.config.table.columns ?\n datavizInstance.config.table.columns :\n datavizInstance.dataset.matrix[0];\n\n const colNamesToMap = {};\n const {\n mapValues,\n mapDates,\n } = datavizInstance.config.table;\n for (let key in mapValues){\n colNamesToMap[columnsArray.indexOf(key)] = key;\n }\n\n for (let row of datasetPaginated) {\n html += '';\n for (let [index, rowColValue] of row.entries()) {\n if (mapDates && rowColValue instanceof Date) {\n rowColValue = mapDates(rowColValue);\n }\n\n let rowColValueEscaped = escapeHtml(rowColValue);\n if(colNamesToMap[index]){\n html += `${mapValues[colNamesToMap[index]](rowColValueEscaped)}`;\n continue;\n }\n html += `${rowColValueEscaped}`\n }\n html += '';\n }\n\n if (pages > 1){\n html += ``;\n let pageNumber = 1;\n const prevPage = (currentPage === 1) ? 1 : (currentPage - 1);\n const nextPage = (currentPage === pages) ? pages : (currentPage + 1);\n if (config.arrows){\n html += `«`;\n }\n while (pageNumber <= pages){\n html += `${pageNumber}`;\n pageNumber++;\n }\n if (config.arrows){\n html += `»`;\n }\n html += '';\n }\n\n return html;\n}\n\nfunction _generateTableHeader(datavizInstance, dataset) {\n let html = '';\n let fieldNumber = -1;\n const tableConfig = datavizInstance.config.table;\n const columnNames =\n (tableConfig && tableConfig.columns)\n || dataset[0];\n for (let colName of columnNames) {\n let colNameEscaped = escapeHtml(colName);\n fieldNumber +=1;\n html += `${colNameEscaped}`;\n }\n return html;\n}\n\n\n const render = function() {\n const dataset = this.dataset.matrix;\n\n const el = this.el();\n const theme = this.config.theme;\n const datavizInstance = this;\n\n let html = '';\n\n const isEmpty = dataset.length === 1 && dataset[0].length === 0;\n if (isEmpty) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n // Open wrapper\n html += `
`;\n\n // Static, scrollable table\n html += ``;\n html += '';\n html += '';\n html += _generateTableHeader(datavizInstance, dataset);\n html += '';\n html += '';\n // Table data\n html += '';\n html += _generateTableRows(datavizInstance, dataset);\n html += '';\n html += '
';\n/* */\n // Close wrapper\n html += '
';\n\n // Inject HTML string\n el.querySelector(`.${theme}-rendering`).innerHTML = html;\n\n el\n .querySelectorAll(`.${theme}-rendering th`)\n .forEach((item) => {\n item.addEventListener('click', (event) => {\n let sortOrder = event.target.getAttribute('order') || 'asc';\n let fieldNumber = event.target.getAttribute('fieldNumber');\n let checker = function (a, b) {\n let sortOrderNumber = (sortOrder === 'asc') ? 1 : -1;\n\n if (typeof a[fieldNumber] === 'string') {\n let nameA = a[fieldNumber].toUpperCase(); // ignore upper and lowercase\n let nameB = b[fieldNumber].toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1 * sortOrderNumber;\n }\n if (nameA > nameB) {\n return 1* sortOrderNumber;\n }\n\n // names must be equal\n return 0;\n }\n return (a[fieldNumber] - b[fieldNumber]) * sortOrderNumber;\n };\n\n if (sortOrder === 'asc') {\n sortOrder = 'desc';\n } else {\n sortOrder = 'asc'\n }\n event.target.setAttribute('order', sortOrder);\n\n const first = this.dataset.matrix.shift();\n this.dataset.matrix.sort(checker);\n this.dataset.matrix.unshift(first);\n\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n });\n });\n\n\n const attachBtnEventListeners = () => {\n el.querySelectorAll('.btn').forEach(btn => {\n btn.addEventListener('click', (event) => {\n currentPage = parseInt(event.target.getAttribute('data-page'));\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n }, true);\n });\n };\n\n attachBtnEventListeners(datavizInstance, el, theme);\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const tableClass = `.${theme}-table-dataset`;\n document.querySelector(tableClass)\n .addEventListener('click', (e) => {\n const { nodeName, innerText } = e.target;\n if (nodeName === 'TD') {\n copyToClipboard(innerText, e);\n }\n });\n }\n };\n\n\n\nconst update = function(){\n // no special update handling\n this.render();\n };\n\nconst destroy= function(){};\n\nexport default { render, update, destroy };\n","export default {\n render: function(){\n let html = '';\n const artifacts = this.view._artifacts.spinner = {};\n\n // Build DOM element\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n this.el().innerHTML = html;\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts.spinner) {\n if (this.view._artifacts.spinner.interval) {\n clearInterval(this.view._artifacts.spinner.interval);\n }\n this.view._artifacts.spinner.radius = 0;\n try {\n delete this.view._artifacts.spinner;\n }\n catch (e) {\n this.view._artifacts.spinner = undefined;\n }\n }\n this.el().innerHTML = '';\n }\n};\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 30, left: 200 };\n let yMarginElement = 0;\n if(marginBetweenSteps){\n yMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if (countingMethod === \"relative\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth =\n (prevElemWidth * d[1]) / matrix[i][1]);\n percent = ((d[1] / matrix[i][1]) * 100).toFixed(decimals);\n }\n if (countingMethod === \"absolute\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth = (svgWidth * d[1]) / matrix[1][1]);\n percent = ((d[1] / matrix[1][1]) * 100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n \n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('x2', (d) => { return d.points[1].x + margin.left; })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('x2', polygons[polygons.length-1].points[2].x + margin.left)\n .attr('y2', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2)\n + (margin.left * 0.9);\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 16\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 12\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top;\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement - 5;\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 60, left: 200 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n const yMarginElement = elemHeight * 0.3;\n const shadowCut = (yMarginElement * 2.5);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = prevElemWidth * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = svgWidth * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[3].x,\n y: d.points[3].y\n },\n {\n x: d.points[2].x,\n y: d.points[2].y\n },\n {\n x: effect3d === 'left'\n ? d.points[2].x\n : d.points[2].x - shadowCut < svgWidth/2\n ? svgWidth/2 + 5\n : d.points[2].x - shadowCut,\n y: effect3d === 'left'\n ? d.points[2].y\n : d.points[2].y + (yMarginElement/1.5)\n },\n {\n x: effect3d === 'right'\n ? d.points[3].x\n : d.points[3].x + shadowCut > svgWidth/2\n ? svgWidth/2 - 5\n : d.points[3].x + shadowCut,\n y: effect3d === 'right'\n ? d.points[3].y\n : d.points[3].y + (yMarginElement/1.5)\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('x2', (d, i) => {\n if(i === 0){\n return d.points[1].x + margin.left;\n }\n return d.points[1].x + margin.left - shadowCut;\n })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('x2', polygons[polygons.length-1].points[2].x\n + margin.left - shadowCut )\n .attr('y2', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5 + (yMarginElement/4)\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2) + 130;\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 18\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 3\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n let xMarginElement = 0;\n if(marginBetweenSteps){\n xMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined'\n || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left - (xMarginElement/2))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/2))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight + (margin.bottom * 0.5) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', (d) => {\n if(d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) > svgHeight + margin.bottom - 40 + margin.top){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n return d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n const xMarginElement = elemWidth * 0.3;\n const shadowCut = (xMarginElement/1.5);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[0].x,\n y: d.points[0].y\n },\n {\n x: d.points[1].x,\n y: d.points[1].y\n },\n {\n x: effect3d === 'top'\n ? d.points[1].x\n : d.points[1].x - shadowCut,\n y: effect3d === 'top'\n ? d.points[1].y\n : d.points[1].y - xMarginElement < svgHeight/2\n ? svgHeight/2 + 5\n : d.points[1].y - xMarginElement\n },\n {\n x: effect3d === 'bottom'\n ? d.points[0].x\n : d.points[0].x - shadowCut,\n y: effect3d === 'bottom'\n ? d.points[0].y\n : d.points[0].y + xMarginElement > svgHeight/2\n ? svgHeight/2 - 5\n : d.points[0].y + xMarginElement\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left + (xMarginElement/4))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/4))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', svgHeight + (margin.bottom * 0.4) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', (d) => {\n if(d.points[2].y + (elemWidth/4) >\n svgHeight + margin.bottom - 40){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n if(d.points[2].y + (elemWidth/4) < d.points[1].y){\n return d.points[1].y + 20 + margin.top;\n }\n return d.points[2].y + (elemWidth/4) + 10 + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","/* eslint-env browser */\nimport c3 from 'c3';\nimport { each } from '../../utils/each';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class MetricCombo {\n render() {\n const {\n container,\n metricResults,\n title,\n showTitle,\n subtitle,\n tooltip,\n utils,\n } = this.config;\n\n const colors = ['#c3c4cc'];\n const columns = [];\n columns[0] = [];\n each(this.dataset.selectColumn(0), (c, i) => {\n let cell;\n if (i > 0) {\n cell = new Date(c);\n }\n columns[0][i] = cell;\n });\n columns[0][0] = 'x';\n\n each(this.data()[0], (c, i) => {\n if (i > 0) {\n columns.push(this.dataset.selectColumn(i));\n }\n });\n\n const prevResult = (metricResults && metricResults.previous && metricResults.previous.result)\n || 0;\n const currResult = (metricResults && metricResults.current && metricResults.current.result)\n || 0;\n const count = currResult - prevResult;\n const percentDifference = prevResult === 0 ? '-' : prettyNumber(Math.round((count / prevResult) * 100));\n let labelClass = 'keen-dataviz-metric-green';\n let iconClass = 'arrow-green';\n\n if (percentDifference < 0) {\n labelClass = 'keen-dataviz-metric-red';\n iconClass = 'arrow-red';\n }\n\n const containerTitle = (showTitle && title) ? `
${title}
` : '';\n const containerSubtitle = subtitle ? `
${subtitle}
` : '';\n const containerElement = document.querySelector(container);\n containerElement.innerHTML = `\n
\n
\n
\n ${containerTitle}\n ${containerSubtitle}\n
${percentDifference} %
\n
${prettyNumber(count)}
\n
\n
\n
\n
\n
\n
`;\n const chartRoot = containerElement.querySelector('.c3-chart');\n const chart = c3.generate({\n bindto: chartRoot,\n color: {\n pattern: colors,\n },\n title,\n legend: {\n show: false,\n },\n data: {\n x: 'x',\n columns,\n type: 'area-spline',\n selection: {\n draggable: false,\n enabled: true,\n multiple: true,\n },\n },\n point: {\n r: 0,\n focus: {\n expand: {\n r: 5,\n enabled: true,\n },\n },\n select: {\n r: 5,\n enabled: true,\n },\n },\n axis: {\n y: {\n show: false,\n },\n x: {\n show: false,\n },\n },\n grid: {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n },\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: -4,\n },\n tooltip,\n });\n\n if (utils && utils.clickToCopyToClipboard) {\n const currentCount = document.querySelector('.current-count').innerText;\n document.querySelector('.keen-dataviz-metric-combo')\n .addEventListener('click', e => copyToClipboard(currentCount, e));\n }\n }\n\n update() {\n this.destroy();\n this.render();\n }\n\n destroy() {\n const { container } = this.config;\n const containerElement = document.querySelector(container);\n const chartContainer = containerElement.querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport Rangeable from 'rangeable';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Heatmap {\n render() {\n const {\n colors,\n container,\n heatmap: { showSlider, simpleTooltip },\n } = this.config;\n const {\n matrix,\n meta,\n } = this.dataset;\n const margin = {\n top: 10,\n right: 10,\n bottom: 50,\n left: 50,\n };\n const baseWidth = 600;\n const baseHeight = 600;\n const heatmapContainer = d3.select(container);\n const containerWidth = parseInt(heatmapContainer.style('width'), 10) || baseWidth;\n const containerHeight = parseInt(heatmapContainer.style('height'), 10) || baseHeight;\n const chartContainer = this.el().querySelector('.c3-chart');\n const svgWidth = containerWidth - margin.right - margin.left;\n const svgHeight = containerHeight - margin.top - margin.bottom;\n\n const xLabel = new Set();\n const yLabel = new Set();\n\n const formatData = () => {\n const dateFormat = d3.timeFormat('%B %d');\n const timeFormat = d3.timeFormat('%H:%M');\n const arr = [];\n matrix.forEach((element) => {\n if (meta.type === 'heatmap') {\n if (typeof element[0][2] === 'number') {\n const obj = {\n x: element[0][0],\n y: element[0][1],\n value: element[0][2],\n };\n arr.push(obj);\n }\n } else {\n const timestamp = Date.parse(element[0]);\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(timestamp)) {\n const obj = {\n x: dateFormat(new Date(element[0])),\n y: timeFormat(new Date(element[0])),\n value: element[1],\n };\n arr.push(obj);\n }\n }\n });\n return arr;\n };\n\n const formattedData = formatData();\n\n formattedData.forEach((item) => {\n xLabel.add(item.x);\n yLabel.add(item.y);\n });\n\n const refValue = formattedData[0].value;\n const minRange = formattedData\n .reduce((min, curr) => (curr.value < min ? curr.value : min), refValue);\n const maxRange = formattedData\n .reduce((max, curr) => (curr.value > max ? curr.value : max), refValue);\n\n const getColor = () => {\n const defaultColor = '#00BBDE';\n const baseColor = colors[0];\n let rgb = d3.rgb(defaultColor);\n if (d3.color(baseColor)) {\n rgb = d3.rgb(baseColor);\n }\n return rgb;\n };\n\n const getColorAlpha = d3.scaleLinear()\n .domain([0, d3.max(formattedData, d => d.value)])\n .range([0, 1]);\n\n const convertRGBAtoRGB = (color, bg = [255, 255, 255]) => {\n const opacity = color[3];\n\n return [Math.floor(((1 - opacity) * bg[0]) + (opacity * color[0]) + 0.5),\n Math.floor(((1 - opacity) * bg[1]) + (opacity * color[1]) + 0.5),\n Math.floor(((1 - opacity) * bg[2]) + (opacity * color[2]) + 0.5)];\n };\n\n const getTileColor = (value) => {\n const alpha = getColorAlpha(value);\n const rgb = getColor();\n const solidColor = convertRGBAtoRGB([rgb.r, rgb.g, rgb.b, alpha]);\n const color = `rgb(${solidColor[0]}, ${solidColor[1]}, ${solidColor[2]})`;\n return color;\n };\n\n const svg = d3.select(chartContainer)\n .append('svg')\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${containerWidth} ${containerHeight}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr(\n 'transform',\n `translate(${margin.left},${margin.top})`,\n );\n\n if (showSlider) {\n // eslint-disable-next-line no-unused-vars\n const rangeableInput = d3.select(container)\n .append('input')\n .attr('type', 'range')\n .attr('class', 'keen-dataviz-slider');\n\n const handleSliderChange = (data) => {\n const rects = svg.selectAll('rect');\n const [min, max] = data;\n\n rects.each((d, i, nodes) => {\n d3.select(nodes[i])\n .style('visibility', () => ((d.value > max || d.value < min) ? 'hidden' : 'visible'));\n });\n };\n\n // eslint-disable-next-line no-unused-vars\n const rangeable = new Rangeable('.keen-dataviz-slider', {\n multiple: true,\n min: minRange,\n max: maxRange,\n value: [minRange, maxRange],\n onChange: data => handleSliderChange(data),\n });\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${getColor()};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${getColor()} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${getColor()};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement('style');\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector('script');\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const xLabelBase = 5;\n const yLabelBase = 10;\n\n const getAxisLabelRatio = (base, labelSize) => Math.floor(labelSize / base) + 1;\n const xAxis = d3.scaleBand()\n .range([0, svgWidth])\n .domain([...xLabel])\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .attr('transform', `translate(0, ${svgHeight})`)\n .call(d3.axisBottom(xAxis).tickSize(0))\n .selectAll('text')\n .attr('dy', '1em')\n .filter((d, i) => i % getAxisLabelRatio(xLabelBase, xLabel.size))\n .style('display', 'none');\n\n const yAxis = d3.scaleBand()\n .range([svgHeight, 0])\n .domain([...yLabel].sort())\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .call(d3.axisLeft(yAxis).tickSize(0))\n .selectAll('text')\n .filter((d, i) => i % getAxisLabelRatio(yLabelBase, yLabel.size))\n .style('display', 'none');\n\n const chartTooltip = d3.select(container)\n .append('div')\n .attr('class', 'keen-dataviz-tooltip')\n .style('opacity', 0)\n .style('background-color', 'white')\n .style('border', `2px solid ${getColor().toString()}`)\n .style('font-size', '14px')\n .style('padding', '2px 8px')\n .style('box-shadow', '2px 2px 4px rgba(0,0,0,0.25')\n .style('display', 'none')\n .style('position', 'fixed');\n\n const handleMouseOver = () => {\n d3.select(d3.event.target)\n .raise()\n .style('transition', 'transform 150ms ease-out')\n .style('outline', `1px solid ${getColor()}`)\n .style('transform', 'translate(0px, -4px)');\n\n chartTooltip\n .style('opacity', 1)\n .style('display', 'block');\n };\n\n const handleMouseMove = (d) => {\n let tooltipContent = `\n \n value:\n ${d.value}\n `;\n if (!simpleTooltip) {\n tooltipContent = `\n \n xAxis:\n ${d.x}\n \n \n yAxis:\n ${d.y}\n \n ${tooltipContent}\n `;\n }\n chartTooltip\n .html(`\n \n ${tooltipContent}\n
\n `)\n .style('left', `${d3.event.clientX + 10}px`)\n .style('top', `${d3.event.clientY + 10}px`);\n };\n\n const handleMouseLeave = () => {\n d3.select(d3.event.target)\n .style('outline', 'none')\n .style('transform', 'none');\n\n chartTooltip\n .style('opacity', 0)\n .style('display', 'none');\n };\n\n const handleClick = d => copyToClipboard(d.value);\n\n svg.selectAll()\n .data(formattedData, d => `${d.x}:${d.y}`)\n .enter()\n .append('rect')\n .attr('x', d => xAxis(d.x))\n .attr('y', d => yAxis(d.y))\n .attr('width', xAxis.bandwidth())\n .attr('height', yAxis.bandwidth())\n .style('fill', d => getTileColor(d.value))\n .style('cursor', 'pointer')\n .on('mouseover', handleMouseOver)\n .on('mousemove', handleMouseMove)\n .on('mouseleave', handleMouseLeave)\n .on('click', handleClick);\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = this.el().querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from \"d3\";\nimport Rangeable from \"rangeable\";\nimport { prettyNumber } from \"../../utils/pretty-number\";\nimport copyToClipboard from \"../../utils/copy-to-clipboard\";\n\nexport default class Choropleth {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n utils,\n title,\n choropleth: {\n map,\n borders: { show, size, color },\n showSlider\n }\n } = this.config;\n const opts = this.config;\n const choroplethContainer = d3.select(container);\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n const width = Number(choroplethContainer.style(\"width\").slice(0, -2));\n const height = Number(choroplethContainer.style(\"height\").slice(0, -2));\n let heightChanges = 0;\n if (title) heightChanges += 31;\n if (showSlider) heightChanges += 20;\n const chart = chartContainer\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height - heightChanges);\n\n const onlyValues = matrix.slice(1).map(el => el[1]);\n let minVal = d3.min(onlyValues);\n const maxVal = d3.max(onlyValues);\n if(minVal === maxVal) minVal = 0;\n const lightColor = d3.hsl(colors[0]).brighter(1);\n lightColor.l = 0.95;\n const darkColor = colors[0];\n const ramp = d3\n .scaleLinear()\n .domain([minVal === undefined ? 0 : minVal, maxVal === undefined ? 0 : maxVal])\n .range([lightColor, darkColor]);\n\n d3.json(\n `https://cdn.jsdelivr.net/npm/keen-dataviz-maps@1.0.0/maps/${map}.json`\n ).then(data => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 5])\n .translateExtent([[0, 0], [width, height - 50]])\n .on(\"zoom\", zoomed);\n\n let projection;\n switch (map) {\n case \"world\":\n projection = d3.geoMercator().fitSize([width, height - 50], data);\n break;\n case \"us\":\n projection = d3\n .geoAlbersUsa()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n\n default:\n projection = d3\n .geoMercator()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n }\n\n const path = d3.geoPath().projection(projection);\n\n const usData = data.features.map(el => {\n const theOne = matrix.filter(d => d[0] === el.properties.name);\n if (theOne[0])\n return {\n ...el,\n properties: { ...el.properties, result: theOne[0][1] }\n };\n return {\n ...el,\n properties: { ...el.properties, result: 0 }\n };\n });\n\n if (showSlider) {\n const handleSliderChange = data => {\n const el = chart.selectAll(`.${elementName}`);\n const [min, max] = data;\n\n el.each((d, i, nodes) => {\n d3.select(nodes[i]).style(\"visibility\", () =>\n d.properties.result > max || d.properties.result < min\n ? \"hidden\"\n : \"visible\"\n );\n });\n };\n\n chartContainer\n .style(\"display\", \"flex\")\n .style(\"flex-direction\", \"column\")\n .style(\"justify-content\", \"center\");\n\n const rangeContainer = chartContainer\n .append(\"div\")\n .style(\"width\", \"95%\")\n .style(\"margin\", \"auto\");\n rangeContainer.append(\"input\").attr(\"id\", \"rangeSlider\");\n\n const rangeable = new Rangeable(\"#rangeSlider\", {\n type: \"double\",\n tooltips: true,\n min: 0,\n max: maxVal,\n onChange: data => handleSliderChange(data)\n });\n\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${colors[0]};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${colors[0]} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${colors[0]};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement(\"style\");\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector(\"script\");\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const elementName = map === \"world\" ? \"country\" : \"state\";\n\n chart\n .selectAll(\"path\")\n .data(usData)\n .enter()\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"class\", elementName)\n .attr(\n \"id\",\n d =>\n `${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .attr(\"cursor\", \"pointer\")\n .on(\"mouseover\", handleMouseOver)\n .on(\"mousemove\", handleMouseMove)\n .on(\"mouseout\", handleMouseOut);\n\n //borders\n if (show) {\n chart\n .selectAll(`.${elementName}`)\n .style(\"stroke\", color)\n .style(\"stroke-width\", size);\n }\n\n //tooltip\n const tooltip = d3\n .select(\".c3-chart\")\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"c3-tooltip-container\")\n .style(\"display\", \"none\")\n .style(\"position\", \"fixed\");\n\n //hover handling\n function handleMouseOver(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(1.2 * maxVal))\n .style(\"stroke-width\", 1.5 * size);\n\n tooltip.style(\"opacity\", 1).style(\"display\", \"block\");\n }\n\n function handleMouseMove(d) {\n let result = d.properties.result;\n if (\n (typeof opts[\"prettyNumber\"] === \"undefined\" ||\n opts[\"prettyNumber\"] === true) &&\n !isNaN(parseInt(d.properties.result))\n ) {\n result = prettyNumber(d.properties.result);\n }\n tooltip\n .html(\n `\n \n \n \n \n \n \n \n
${d.properties.name}
${result}
\n `\n )\n .style(\"left\", `${d3.event.clientX + 10}px`)\n .style(\"top\", `${d3.event.clientY + 10}px`);\n }\n function handleMouseOut(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .style(\"stroke-width\", size);\n\n tooltip.style(\"opacity\", 0).style(\"display\", \"none\");\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll(`.${elementName}`);\n\n label.on(\"click\", handleClickToCopy);\n\n function handleClickToCopy(data) {\n const {\n properties: { result }\n } = data;\n copyToClipboard(result, d3.event);\n }\n }\n function zoomed() {\n chart\n .selectAll(`.${elementName}`)\n .attr(\"transform\", d3.event.transform);\n }\n chart.call(zoom);\n chart.call(zoom).on(\"mousedown.zoom\", null);\n });\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n chartContainer.remove();\n }\n}\n","import copyToClipboard from './copy-to-clipboard';\n\nfunction removeClassWithTimeOut(element, className = 'copied', ms = 1000) {\n setTimeout(() => {\n element.classList.remove(className);\n }, ms);\n}\n\nfunction handleCopyToClipboard(event) {\n const { target, target: { nodeName } } = event;\n\n let value;\n if (nodeName === 'DD') {\n value = target.innerText;\n if (!target.classList.contains('copied')) {\n target.classList.add('copied');\n removeClassWithTimeOut(target);\n }\n }\n if (nodeName === 'DT') {\n value = target.nextSibling.innerText;\n if (!target.nextSibling.classList.contains('copied')) {\n target.nextSibling.classList.add('copied');\n removeClassWithTimeOut(target.nextSibling);\n }\n }\n\n copyToClipboard(value);\n}\n\nexport default function renderExecutionMetadata({\n element,\n data,\n} = {}) {\n const dataList = document.createElement('dl');\n dataList.classList = 'keen-dataviz-execution-meta';\n\n if (Object.keys(data).length) {\n Object.keys(data).forEach((item) => {\n const dt = document.createElement('dt');\n dt.innerText = item.replace(/_/g, ' ');\n dt.addEventListener('click', e => handleCopyToClipboard(e));\n\n const dd = document.createElement('dd');\n dd.innerText = data[item];\n dd.addEventListener('click', e => handleCopyToClipboard(e));\n\n dataList.append(dt);\n dataList.append(dd);\n });\n } else {\n dataList.innerText = 'No execution metadata available';\n }\n\n element.append(dataList);\n}\n","import autocollector from './autocollector';\nimport modern from './modern';\nimport dracula from './dracula';\n\nexport default {\n autocollector,\n modern,\n dracula,\n};","const palette = {\n colors: [\n '#5E77FF',\n '#9C60FE',\n '#F162FE',\n '#FD65B7',\n '#FD6768',\n '#FDB86A',\n '#F2FC6C',\n '#A5FC6E',\n '#71FB85',\n '#73FBD0',\n '#76DDFA',\n '#76f4fa',\n '#bb76fa',\n '#fa76bf'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#45B2E8',\n '#D9540D',\n '#2CAB72',\n '#2C4BAB',\n '#EDDD02',\n '#E84545',\n '#E845CE',\n '#5FCEC9',\n '#E89F45',\n '#28E43F',\n '#B765C0',\n '#458AE8',\n '#AB2C2C',\n '#AB2C75',\n '#27E5FF',\n '#7168F2',\n '#FF932B',\n '#855D00',\n '#ACE845',\n '#1C91B4'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#8be9fd',\n '#50fa7b',\n '#ffb86c',\n '#ff79c6',\n '#bd93f9',\n '#ff5555',\n '#f1fa8c',\n ]\n};\n\nexport default palette;"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/external_d3_c3/keen-dataviz.min.js b/dist/external_d3_c3/keen-dataviz.min.js index 7b85441..57f4995 100644 --- a/dist/external_d3_c3/keen-dataviz.min.js +++ b/dist/external_d3_c3/keen-dataviz.min.js @@ -1,2 +1,2 @@ -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("d3"),require("c3"));else if("function"==typeof define&&define.amd)define(["d3","c3"],e);else{var n="object"==typeof exports?e(require("d3"),require("c3")):e(t.d3,t.c3);for(var i in n)("object"==typeof exports?exports:t)[i]=n[i]}}(window,function(t,e){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=20)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.each=function(t,e,n){var i;if(!t)return 0;if(n=n||t,t instanceof Array){for(i=0;i=1e15)return e;return t>=1||t<=-1?(t<0&&(t=-t,n="-"),n+function t(e,n){var e=String(e);var r=e.split(".");if(r.length>1){e=r[0];var o=r[1];2==e.length&&o.length>0?o.length>0?e=e+"."+o.charAt(0):e+="0":1==e.length&&o.length>0&&(e=e+"."+o.charAt(0),o.length>1?e+=o.charAt(1):e+="0")}var a=e.length;e.split(".").length>1&&a--;return a<=3?String(e)+i[n]:t(Number(e)/1e3,n+1)}(t,0)):t.toPrecision(3)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.escapeHtml=function(t){var e,n=""+t,r=i.exec(n);if(!r)return n;var o="",a=0,s=0;for(a=r.index;a]/},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.extend=function(t){for(var e=1;ee&&(o.pop(),c.text(o.join(" ")),o=[r],c=t.append("tspan").attr("x",s).attr("y",l).attr("dy",1.1*++a+0+"em").text(r))})};var i=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(2))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.appendColumn=s,e.appendRow=l;var i,r=n(9),o=(i=r)&&i.__esModule?i:{default:i},a=n(0);function s(t,e){var n=this,i=(Array.prototype.slice.call(arguments,2),void 0!==t?t:null);return"function"==typeof e?(n.matrix[0].push(i),(0,a.each)(n.matrix,function(t,i){var r=void 0;i>0&&(void 0===(r=e.call(n,t,i))&&(r=null),n.matrix[i].push(r))})):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix.length-1?e=e.concat((0,o.default)(n.matrix.length-1-e.length)):(0,a.each)(e,function(t,i){n.matrix.length-10&&(o=n.selectColumn(i),void 0===(a=e.call(n,o,i))&&(a=null),r.push(a))}),n.matrix.push(r)):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix[0].length-1?e=e.concat((0,o.default)(n.matrix[0].length-1-e.length)):(0,a.each)(e,function(t,i){n.matrix[0].length-10&&void 0!==arguments[0]?arguments[0]:{};if(this instanceof t==!1)return new t(e);this.matrix=[["Index"]],this.meta={type:void 0},this.config=e};v.prototype.data=function(t){return arguments.length?(this.matrix=t instanceof Array?t:null,this):this.matrix},v.prototype.set=function(t,e){if(arguments.length<2||t.length<2)throw Error("Incorrect arguments provided for #set method");var n="number"==typeof t[0]?t[0]:this.matrix[0].indexOf(t[0]),r="number"==typeof t[1]?t[1]:s.selectColumn.call(this,0).indexOf(t[1]),o=s.selectColumn.call(this,t[0]),a=s.selectRow.call(this,t[1]);return o.length<1&&(i.appendColumn.call(this,String(t[0])),n=this.matrix[0].length-1),a.length<1&&(i.appendRow.call(this,String(t[1])),r=this.matrix.length-1),this.matrix[r][n]=e,this},v.prototype.type=function(t){return arguments.length?(this.meta.type=t?String(t):void 0,this):this.meta.type},(0,d.extend)(v.prototype,i),(0,d.extend)(v.prototype,r),(0,d.extend)(v.prototype,o),(0,d.extend)(v.prototype,a),(0,d.extend)(v.prototype,s),(0,d.extend)(v.prototype,l),(0,d.extend)(v.prototype,c),(0,d.extend)(v.prototype,u.default),v.parser=(0,f.default)(v),e.default=v},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0);n(5);function r(t,e,n){var r=t.slice(e||0,n?n+1:t.length),o=0;return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||(o+=parseFloat(t))}),o/r.length}function o(t,e,n){var r=t.slice(e||0,n?n+1:t.length),o=[];return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||o.push(parseFloat(t))}),Math.max.apply(Math,o)}function a(t,e,n){var r=t.slice(e||0,n?n+1:t.length),o=[];return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||o.push(parseFloat(t))}),Math.min.apply(Math,o)}function s(t,e,n){var r=t.slice(e||0,n?n+1:t.length),o=0;return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||(o+=parseFloat(t))}),o}var l=function(t){return r(t,1)},c=l,u=function(t){return s(t,1)},d=u,f=function(t){return o(t,1)},p=f,h=function(t){return a(t,1)},v=h,g=function(t){return t[0]},m=g;e.default={average:r,maximum:o,minimum:a,sum:s,getColumnAverage:l,getRowAverage:c,getColumnSum:u,getRowSum:d,getColumnMaximum:f,getRowMaximum:p,getColumnMinimum:h,getRowMinimum:v,getColumnLabel:g,getRowIndex:m}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stripHtmlTags=function(t){if("string"!=typeof t)return t;return t.replace(/(<([^>]+)>)/gi,"")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.extendDeep=function t(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},e=t.element,n=t.label,i=void 0===n?"Download":n,r=t.type,a=void 0===r?"json":r,s=t.data;if([].concat(function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1)throw Error("Please provide image quality between 0 and 1");o.default.toBlob(e,{quality:n,bgcolor:i}).then(function(t){(0,a.saveAs)(t,"chart.jpeg")})}n||o.default.toBlob(e).then(function(t){(0,a.saveAs)(t,"chart.png")})};var i,r=n(41),o=(i=r)&&i.__esModule?i:{default:i},a=n(42)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.type,n=t.data,i=["json","csv"],r=e.toLowerCase();if(!i.includes(e))throw new Error("This type is not supported");var o=i[0],a="";"json"===r&&(a="data:text/json;charset=utf-8, "+encodeURIComponent(JSON.stringify(n)));"csv"===r&&(a=function(t){var e="";return t.forEach(function(n,i){n.forEach(function(t,i){e+=String(t).replace(/,/g,""),n.length>i+1&&(e+=",")}),t.length>i+1&&(e+="\n")}),"data:text/csv;charset=utf-8,"+encodeURIComponent(e)}(n),o=r);var s=document.createElement("a");s.setAttribute("href",a),s.setAttribute("download","chart."+o),document.body.appendChild(s),s.click(),document.body.removeChild(s)}},function(t,e,n){(function(e){var n,i,r,o,a;void 0===e&&(this.window||this.global),t.exports=(n=function(t,e){var n=document.createElement(t);return e&&n.classList.add(e),n},i=function(t){return t&&"function"==typeof t},r=function(t,e,n){var i;return function(){if(n=n||this,!i)return t.apply(n,arguments),i=!0,setTimeout(function(){i=!1},e)}},(a=(o=function(t,e){this.plugins=["ruler"],"string"==typeof t&&(t=document.querySelector(t)),this.input=t,this.config=Object.assign({},{type:"single",tooltips:"always",updateThrottle:30,formatTooltip:function(t){return t},classes:{input:"rangeable-input",container:"rangeable-container",vertical:"rangeable-vertical",progress:"rangeable-progress",handle:"rangeable-handle",track:"rangeable-track",multiple:"rangeable-multiple",disabled:"rangeable-disabled",tooltips:"rangeable-tooltips",tooltip:"rangeable-tooltip",visible:"rangeable-tooltips--visible"}},e),this.mouseAxis={x:"clientX",y:"clientY"},this.trackSize={x:"width",y:"height"},this.trackPos={x:"left",y:"top"},this.lastPos=0,this.double="double"===this.config.type||Array.isArray(this.config.value),this.touch="ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version="0.1.6",this.init(),this.onInit()}).prototype).init=function(){if(!this.input.rangeable){var t,e={min:0,max:100,step:1,value:this.input.value};for(t in e)this.input[t]||(this.input[t]=e[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?"y":"x",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},a.render=function(){var t=this,e=this.config,i=e.classes,r=n("div",i.container),o=n("div",i.track),a=n("div",i.progress),s=n("div",i.handle),l=n("div",i.tooltip);if(this.input.tabIndex=-1,this.double){s=[n("div",i.handle),n("div",i.handle)],l=[];for(var c=0;3>c;c++)l[c]=n("div",i.tooltip);s.forEach(function(t,n){t.index=n,a.appendChild(t),t.appendChild(l[n]),t.tabIndex=1,e.controls&&e.controls[n]&&e.controls[n].locked&&!0===e.controls[n].locked&&(t.locked=!0)}),e.vertical&&a.appendChild(s[0]),a.appendChild(l[2]),r.classList.add(i.multiple)}else a.appendChild(s),s.appendChild(l),s.tabIndex=1,e.controls&&e.controls.locked&&!0===e.controls.locked&&(s.locked=!0);if(r.appendChild(o),e.vertical&&r.classList.add(i.vertical),e.size&&(r.style[this.trackSize[this.axis]]=isNaN(e.size)?e.size:e.size+"px"),e.tooltips&&(r.classList.add(i.tooltips),"string"==typeof e.tooltips&&"always"===e.tooltips&&r.classList.add(i.visible)),this.nodes={container:r,track:o,progress:a,handle:s,tooltip:l},this.double){this.nodes.buffer=[];var u=n("div","rangeable-buffers");this.input.values.forEach(function(i,r){var a=n("div","rangeable-buffer");u.appendChild(a),t.nodes.buffer.push(a),o.appendChild(u),e.controls&&(t.limits=[{},{}],void 0!==e.controls[r].min&&(t.limits[r].min=e.controls[r].min),void 0!==e.controls[r].max&&(t.limits[r].max=e.controls[r].max))})}else s=n("div","rangeable-buffer"),o.appendChild(s),this.nodes.buffer=s,o.appendChild(s),e.controls&&(this.limits={},void 0!==e.controls.min&&(this.limits.min=e.controls.min),void 0!==e.controls.max&&(this.limits.max=e.controls.max));this.setLimits(e.controls),o.appendChild(a),this.input.parentNode.insertBefore(r,this.input),r.insertBefore(this.input,o),this.input.classList.add(i.input),this.bind(),this.update()},a.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},a.setValueFromPosition=function(t){var e=this.getLimits(),n=parseFloat(this.input.step),i=this.touch?t.touches[0][this.mouseAxis[this.axis]]:t[this.mouseAxis[this.axis]],r=i-this.rects.container[this.trackPos[this.axis]],o=this.rects.container[this.trackSize[this.axis]];return("mousedown"!==t.type||!(!this.double&&this.nodes.handle.contains(t.target)||this.double&&(this.nodes.handle[0].contains(t.target)||this.nodes.handle[1].contains(t.target))))&&(t=(this.config.vertical?(o-r)/o*100:r/o*100)*(e.max-e.min)/100+e.min,t=Math.ceil(t/n)*n,i>=this.lastPos&&(t-=n),parseFloat(t)!==parseFloat(this.startValue)&&(n=!1,this.double&&(n=this.activeHandle.index),t=this.limit(t,n),void this.setValue(t,n)))},a.start=function(t){return t.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add("dragging"),this.recalculate(),this.activeHandle=this.getHandle(t),!!this.activeHandle&&(this.activeHandle.classList.add("active"),this.setValueFromPosition(t),void(this.touch?(document.addEventListener("touchmove",this.events.move,!1),document.addEventListener("touchend",this.events.stop,!1),document.addEventListener("touchcancel",this.events.stop,!1)):(document.addEventListener("mousemove",this.events.move,!1),document.addEventListener("mouseup",this.events.stop,!1))))},a.move=function(t){this.setValueFromPosition(t),this.lastPos=this.touch?t.touches[0][this.mouseAxis[this.axis]]:t[this.mouseAxis[this.axis]]},a.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove("dragging"),this.onEnd(),this.activeHandle.classList.remove("active"),this.activeHandle=!1,this.touch?(document.removeEventListener("touchmove",this.events.move),document.removeEventListener("touchend",this.events.stop),document.removeEventListener("touchcancel",this.events.stop)):(document.removeEventListener("mousemove",this.events.move),document.removeEventListener("mouseup",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event("change")),this.startValue=null},a.keydown=function(t){var e=this,n=function(n){switch(t.key){case"ArrowRight":case"ArrowUp":e.stepUp(n);break;case"ArrowLeft":case"ArrowDown":e.stepDown(n)}};this.double?this.nodes.handle.forEach(function(t){t===document.activeElement&&n(t.index)}):this.nodes.handle===document.activeElement&&n()},a.stepUp=function(t){var e=parseFloat(this.input.step),n=this.getValue();this.double&&void 0!==t&&(n=n[t]),e=this.limit(parseFloat(n)+e,t),this.setValue(e,t)},a.stepDown=function(t){var e=parseFloat(this.input.step),n=this.getValue();this.double&&void 0!==t&&(n=n[t]),e=this.limit(parseFloat(n)-e,t),this.setValue(e,t)},a.limit=function(t,e){var n=this.input,i=this.getLimits();return t=parseFloat(t),this.double&&void 0!==e?(!e&&t>n.values[1]?t=n.values[1]:0this.limits[1].max?t=this.limits[1].max:tthis.limits[0].max?t=this.limits[0].max:tthis.limits.max?t=this.limits.max:ti.max?t=i.max:ts.right||a.bottoms.bottom),n.container.classList.toggle("combined-tooltip",a),a&&(n.tooltip[2].textContent=o[0]===o[1]?r.call(this,o[0]):r.call(this,o[0])+" - "+r.call(this,o[1]))}}else this.input.value=t,n.tooltip.textContent=r.call(this,t);this.setPosition(t,e),i&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event("input")),this.nativeEvent=!1)},a.native=function(){this.nativeEvent=!0,this.setValue()},a.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},a.setLimits=function(t){var e=this;if(void 0===t)return!1;this.limits||(this.limits=t);var n=function(t,e){void 0!==e.min&&(t.min=e.min),void 0!==e.max&&(t.max=e.max)};this.double?t.forEach(function(t,i){n(e.limits[i],t)}):n(this.limits,t),this.update()},a.setPosition=function(t){if(this.double){t=this.getPosition(this.input.values[0]);var e=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?"bottom":"left"]=t+"px",t=e-t}else t=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=t+"px"},a.getPosition=function(t){void 0===t&&(t=this.input.value);var e=this.getLimits();return(t-e.min)/(e.max-e.min)*this.rects.container[this.trackSize[this.axis]]},a.getHandle=function(t){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var e=this.rects,n=Math.abs(t[this.mouseAxis[this.axis]]-e.handle[0][this.trackPos[this.axis]]);return e=Math.abs(t[this.mouseAxis[this.axis]]-e.handle[1][this.trackPos[this.axis]]),(t=t.target.closest("."+this.config.classes.handle))||(t=n>e?this.nodes.handle[1]:this.nodes.handle[0]),!t.locked&&t},a.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?"touchstart":"mousedown",this.events.start,!1),this.double?this.nodes.handle.forEach(function(t){return t.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},a.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?"touchstart":"mousedown",this.events.start),this.double?this.nodes.handle.forEach(function(t){return t.removeAttribute("tabindex")}):this.nodes.handle.removeAttribute("tabindex"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},a.bind=function(){var t=this;this.events={},"start move stop update reset native keydown".split(" ").forEach(function(e){t.events[e]=t[e].bind(t)}),this.events.scroll=r(this.events.update,this.config.updateThrottle),this.events.resize=r(this.events.update,this.config.updateThrottle),document.addEventListener("scroll",this.events.scroll,!1),window.addEventListener("resize",this.events.resize,!1),document.addEventListener("keydown",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?"touchstart":"mousedown",this.events.start,!1),this.input.addEventListener("input",this.events.native,!1),this.input.form&&this.input.form.addEventListener("reset",this.events.reset,!1)},a.unbind=function(){document.removeEventListener("scroll",this.events.scroll),window.removeEventListener("resize",this.events.resize),document.removeEventListener("keydown",this.events.keydown),this.nodes.container.removeEventListener(this.touch?"touchstart":"mousedown",this.events.start),this.input.removeEventListener("input",this.events.native),this.input.form&&this.input.form.removeEventListener("reset",this.events.reset),this.events=null},a.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},a.onInit=function(){i(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},a.onStart=function(){i(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},a.onChange=function(){i(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},a.onEnd=function(){i(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},o)}).call(this,n(7))},function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.Dataset=e.Dataviz=e.keenGlobals=e.extendKeenGlobalObject=void 0;var i=n(21);Object.defineProperty(e,"Dataviz",{enumerable:!0,get:function(){return i.Dataviz}}),Object.defineProperty(e,"Dataset",{enumerable:!0,get:function(){return i.Dataset}});void 0!==t||("undefined"!=typeof self?self:"undefined"!=typeof window&&window),e.extendKeenGlobalObject=function(t){t.KeenDataviz=i.Dataviz,t.KeenDataset=i.Dataset,t.Keen=t.Keen||{},t.Keen.Dataset=i.Dataset,t.Keen.Dataviz=i.Dataviz};e.keenGlobals=void 0;"undefined"!=typeof webpackKeenGlobals&&(e.keenGlobals=webpackKeenGlobals),e.default=i.Dataviz}).call(this,n(7))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Dataset=e.Dataviz=void 0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=Object.assign||function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};if(this instanceof t==!1)return new t(n);this.c3=s.default,this.d3=a;var i={showDeprecationWarnings:!0,showLoadingSpinner:!1,container:void 0,containerElement:void 0,title:void 0,showTitle:!0,subtitle:void 0,notes:void 0,theme:"keen-dataviz",colors:["#00bbde","#fe6672","#eeb058","#8a8ad6","#ff855c","#00cfbb","#5a9eed","#73d483","#c879bb","#0099b6","#d74d58","#cb9141","#6b6bb6","#d86945","#00aa99","#4281c9","#57b566","#ac5c9e","#27cceb","#ff818b","#f6bf71","#9b9be1","#ff9b79","#26dfcd","#73aff4","#87e096","#d88bcb"],colorMapping:{},ui:{executionMetadata:!0},utils:{clickToCopyToClipboard:!0},indexBy:"timeframe.start",labels:[],labelMapping:{},labelMappingRegExp:void 0,errorMapping:{},showErrorMessages:!0,library:"default",sortGroups:void 0,sortIntervals:void 0,results:void 0,type:void 0,stacked:!1,dateFormat:void 0,legend:{show:!0,position:"right",alignment:"top",label:{textMaxLength:12},pagination:{offset:0,limit:5},tooltip:{show:!0,pointer:!0},sort:void 0},axis:{},color:{},size:{},padding:{top:15},point:{focus:{expand:{enabled:!1}},r:2,show:!0,sensitivity:300},tooltip:{horizontal:!0,format:{}},transition:{},data:{order:null,selection:{enabled:!0,draggable:!0,multiple:!0},onselected:function(t,n){var i=e.view._artifacts.c3.selected().reduce(function(t,e){return t+e.value},0);(0,b.default)(i)}},grid:{y:{show:!0}},partialIntervalIndicator:{show:void 0,className:"partial-interval-indicator"},timezone:"UTC",table:{schema:"static"},renderOnVisible:!1,funnel:{lines:!0,resultValues:!0,percents:{show:!1,countingMethod:"absolute",decimals:0},marginBetweenElements:!1,hover:!0,effect3d:"both-sides",minimalSize:!1},react:!1,range:!1,sparkline:!1,choropleth:{map:"world",borders:{show:!0,size:.5,color:"#000"},showSlider:!1},heatmap:{}};this.config=r({},(0,h.extendDeep)(i,n)),n.palette&&(x.default[n.palette]||console.log("Colors pallete not found",n.palette),this.config.colors=x.default[n.palette].colors),this.config.type&&(this.config.type=P(this.config.type)),this.config.type&&this.config.type.includes("-range")&&(this.config.range=!0,this.config.type=this.config.type.replace("-range",""),this.config.legend.show=!1,this.config.stacking="normal",this.config.labels=["Max","Min"],this.config.colors=[this.config.colors[0],this.config.colors[0]]),this.config.stacking&&(this.config.stacked=!0),this.config.sparkline&&(this.config.legend.show=!1,this.config.axis={x:{show:!1},y:{show:!1}},this.config.grid={x:{show:!1},y:{show:!1}}),this.config.container&&this.el(this.config.container),void 0===n.legend||n.legend||(this.config.legend=r({},n,{show:!1})),n.color&&n.color.pattern&&(this.config.colors=n.color.pattern),this.config.legend&&this.config.legend.tooltip&&!1===this.config.legend.tooltip.show&&void 0===this.config.tooltip.show&&(this.config.tooltip={show:!1}),this.dataset=new o.Dataset(this.config),this.view={_prepared:!1,_rendered:!1,_artifacts:{}},t.visuals.push(this),this.config.showLoadingSpinner&&this.prepare(),this.config.results&&this.render(this.config.results),this.config.firstVisibilityState=document.visibilityState,this.config.utils.clickToCopyToClipboard||(this.config.data.onselected=function(){}),n.data&&n.data.onselected&&(this.config.data.onselected=function(t,i){if(n.data.onselected.bind(null,t,i)(),e.config.utils.clickToCopyToClipboard){var r=e.view._artifacts.c3.selected().reduce(function(t,e){return t+e.value},0);(0,b.default)(r)}})};function k(t){2!==t.data()[0].length||(0,d.default)(t.data()[1][0])?t.dataset.updateRow(0,function(e,n){return n>0&&t.config.labels[n-1]?(0,f.stripHtmlTags)(String(t.config.labels[n-1])):(0,f.stripHtmlTags)(e)}.bind(t)):t.dataset.updateColumn(0,function(e,n){return t.config.labels[n-1]?(0,f.stripHtmlTags)(String(t.config.labels[n-1])):(0,f.stripHtmlTags)(e)}.bind(t))}function E(t){var e=t.datavizInstance,n=t.value;if(e.config.labelMappingRegExp){var i=n;return e.config.labelMappingRegExp.forEach(function(t){t.length>1&&(t[0].test(n)&&(i=t[1]))}),(0,f.stripHtmlTags)(i)}return e.config.labelMapping[n]?(0,f.stripHtmlTags)(String(e.config.labelMapping[n])):(0,f.stripHtmlTags)(n)}function M(t){t.config.labelMappingDimension||(2!==t.data()[0].length||(0,d.default)(t.data()[1][0])?t.config.labelMappingDimension="column":t.config.labelMappingDimension="row"),"row"!==t.config.labelMappingDimension&&"both"!==t.config.labelMappingDimension||t.dataset.updateColumn(0,function(e){return E({datavizInstance:t,value:e})}.bind(t)),"column"!==t.config.labelMappingDimension&&"both"!==t.config.labelMappingDimension||t.dataset.updateRow(0,function(e){return E({datavizInstance:t,value:e})}.bind(t))}function A(t){t.config.sortGroups&&t.data().length>1&&((0,d.default)(t.data()[1][0])?t.dataset.sortColumns(t.config.sortGroups,t.dataset.getColumnSum):t.dataset.sortRows(t.config.sortGroups,t.dataset.getRowSum))}function S(t){t.config.sortIntervals&&t.dataset.sortRows(t.config.sortIntervals)}function P(t){return{areachart:"area",barchart:"horizontal-bar",columnchart:"bar",linechart:"line",piechart:"pie"}[t]||t}function j(t){"undefined"==typeof document&&"undefined"!=typeof window?(null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function t(){document.removeEventListener("DOMContentLoaded",t,!1),document.readyState="complete"},!1),document.readyState="loading"),function t(e){/in/.test(document.readyState)?setTimeout(function(){t(e)},9):e()}(t)):t()}_.libraries={default:{}},"undefined"!=typeof window&&(_.libraries.default=(0,p.default)(_)),_.visuals=[],_.register=function(t,e){_.libraries[t]=_.libraries[t]||{},(0,u.each)(e,function(e,n){_.libraries[t][n]=e})},_.find=function(t){if(!arguments.length)return _.visuals;var e=t.nodeName?t:document.querySelector(t),n=null;return(0,u.each)(_.visuals,function(t){if(e==t.config.container)return n=t,!1}),n},_.prototype.attributes=function(t){if(this.config.showDeprecationWarnings&&console.log(".attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })"),!arguments.length)return this.config;var e=this.config;return(0,u.each)(t,function(t,n){"chartType"===n&&(n="type"),e[n]=t}),this},_.prototype.call=function(t){return t.call(this),this},_.prototype.chartOptions=function(t){return this.config.showDeprecationWarnings&&console.log(".chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })"),arguments.length?(this.config=(0,h.extendDeep)(this.config,t),this):this.config},_.prototype.colors=function(t){return this.config.showDeprecationWarnings&&console.log(".colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })"),arguments.length?(this.config.colors=t instanceof Array?t:[],this):this.config.colors},_.prototype.colorMapping=function(t){this.config.showDeprecationWarnings&&console.log(".colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })");var e=this;return arguments.length?(null===t?this.config.colorMapping={}:"object"===(void 0===t?"undefined":i(t))&&(0,u.each)(t,function(t,n){e.config.colorMapping[n]=t||null}),this):this.config.colorMapping},_.prototype.data=c.default,_.prototype.dateFormat=function(t){return this.config.showDeprecationWarnings&&console.log(".dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })"),arguments.length?(this.config.dateFormat="string"==typeof t||"function"==typeof t?t:void 0,this):this.config.dateFormat},_.prototype.destroy=function(){var t=this.library(),e=this.config.type,n=this.el();return _.libraries[t]&&_.libraries[t][e]&&_.libraries[t][e].destroy.call(this),n&&(n.innerHTML=""),this.view._prepared=!1,this.view._rendered=!1,this.view._artifacts={},this},_.prototype.el=function(t){var e=this;return arguments.length?(j(function(){t&&null!==t?t.nodeName?e.config.containerElement=t:document.querySelector&&(e.config.containerElement=document.querySelector(t)):e.config.containerElement=void 0}),this):this.config.containerElement},_.prototype.height=function(t){return this.config.showDeprecationWarnings&&console.log(".height() is deprecated - use CSS classes"),this},_.prototype.indexBy=function(t){return this.config.showDeprecationWarnings&&console.log(".indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })"),arguments.length?(this.config.indexBy=t?String(t):"timeframe.start",this):this.config.indexBy},_.prototype.labels=function(t){return this.config.showDeprecationWarnings&&console.log(".labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })"),arguments.length?(this.config.labels=t instanceof Array?t:[],k(this),this):this.config.labels},_.prototype.labelMapping=function(t){return this.config.showDeprecationWarnings&&console.log(".labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })"),arguments.length?(null===t?this.config.labelMapping={}:"object"===(void 0===t?"undefined":i(t))&&(0,u.each)(t,function(t,e){this.config.labelMapping[e]=t||null}.bind(this)),M(this),this):this.config.labelMapping},_.prototype.library=function(t){return arguments.length?(this.config.library=t?String(t):null,this):this.config.library},_.prototype.message=function(){if(this.view._rendered&&this.destroy(),this.el()){this.el().innerHTML="";var t=_.libraries.default.message;t.render&&t.render.apply(this,arguments)}return this},_.prototype.notes=function(t){return this.config.showDeprecationWarnings&&console.log(".notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })"),arguments.length?(this.config.notes=t?String(t):null,this):this.config.notes},_.prototype.prepare=function(){var t=this;if(!this.el())throw this.config.container+" not found. A DOM parent element is required to mount the chart.";return j(function(){if(t.view._rendered&&t.destroy(),t.el()){t.el().innerHTML="";var e=_.libraries.default.spinner;e.render&&e.render.call(t),t.view._prepared=!0}}),this},_.prototype.render=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,n=this;if(e){var i=e[0]||e;if(i.query&&i.query.interval&&i.query.timeframe&&"string"==typeof i.query.timeframe&&i.query.timeframe.includes("this_")&&this.config.partialIntervalIndicator&&void 0===this.config.partialIntervalIndicator.show&&(this.config.partialIntervalIndicator.show=!0),Array.isArray(e)){var r=e.map(function(t){return t.query.timeframe});return r.forEach(function(t){if(r.find(function(e){return JSON.stringify(e)!==JSON.stringify(t)})){var e="Timeframes of the queries should be the same";throw console.error(e),e}}),n.data(e[0]).call(function(){var i=e[0];t.dataset.deleteColumn(1);var r=!0,a=!1,s=void 0;try{for(var l,c=e[Symbol.iterator]();!(r=(l=c.next()).done);r=!0){var u=l.value,d=i.query.event_collection+" "+i.query.analysis_type,f=o.Dataset.parser("interval")(u);n.dataset.appendColumn(d,f.selectColumn(1).slice(1))}}catch(t){a=!0,s=t}finally{try{!r&&c.return&&c.return()}finally{if(a)throw s}}}).render()}return n.data(e).render()}(this.config.labelMapping&&Object.keys(this.config.labelMapping).length>0||this.config.labelMappingRegExp&&this.config.labelMappingRegExp.length>0)&&M(n),this.config.labels&&Object.keys(this.config.labels).length>0&&k(n),this.config.sortGroups&&A(n),this.config.sortIntervals&&S(n);var a=_.libraries.default.spinner,s=this.config.library,l=this.config.type,c=this.el();if(!c||void 0===c){var u=this.config.container+" not found. A DOM parent element is required to mount the chart.";throw console.error(u),u}var d=n;return n.config.renderAsPromise&&(d=new Promise(function(e,i){var r=t.config.onrendered;n.config.onrendered=function(){r&&r(),e(n)}})),j(function(){var t=n.execution_metadata&&n.config.ui&&n.config.ui.executionMetadata,e=n.config.ui&&n.config.ui.buttons&&n.config.ui.buttons.download&&n.config.ui.buttons.download.type;if(n.view._prepared&&a.destroy&&a.destroy.apply(n,arguments),c.innerHTML="","undefined"===_.libraries[s]){var i="Incorrect library";throw n.message(i),i}if(void 0===_.libraries[s][l]){var r="Incorrect chart type",o=this.config.errorMapping[r]||r;throw n.message(o),r}if(function(t,e){var n="",i="",r="";"top"!==e.legend.position&&"bottom"!==e.legend.position||(i="c3-chart-100-percent");e.range&&(r="keen-dataviz-range");var o='
',a="horizontal",s="center";["left","center","right"].includes(e.legend.alignment)&&(s=e.legend.alignment);"left"!==e.legend.position&&"right"!==e.legend.position||(a="vertical",["top","middle","bottom"].includes(e.legend.alignment)&&(s=e.legend.alignment));e.legend&&e.legend.show&&(o="top"===e.legend.position||"left"===e.legend.position?'
'+o:o+'
');e.react||(n+='
');e.title&&e.showTitle&&(n+='
'+e.title+"
");e.subtitle&&(n+='
'+e.subtitle+"
");n+='
'+o+"
",e.notes&&(n+='
'+e.notes+"
");e.react||(n+="
");t.innerHTML=n}(c,n.config),e&&(0,m.default)({element:c,data:n.dataset.matrix,type:n.config.ui.buttons.download.type,label:n.config.ui.buttons.download.label}),t&&(0,y.default)({element:c,data:n.execution_metadata}),n.config.renderOnVisible&&"undefined"!=typeof IntersectionObserver){new IntersectionObserver(function(t,e){t.forEach(function(t){t.isIntersecting&&(n.view._rendered||(_.libraries[s][l].render.call(n),n.view._rendered=!0))})}).observe(c)}else{if("hidden"===n.config.firstVisibilityState&&"undefined"!=typeof document){var u=void 0,d=void 0;void 0!==document.hidden?(u="hidden",d="visibilitychange"):void 0!==document.msHidden?(u="msHidden",d="msvisibilitychange"):void 0!==document.webkitHidden&&(u="webkitHidden",d="webkitvisibilitychange");void 0===document.addEventListener&&void 0===u||document.addEventListener(d,function(){!document[u]&&n.view._artifacts.c3&&n.view._artifacts.c3.load(n.dataset.matrix)},{once:!0})}_.libraries[s][l].render.call(n),n.view._rendered=!0}}),d},_.prototype.sortGroups=function(t){return this.config.showDeprecationWarnings&&console.log(".sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })"),arguments.length?(this.config.sortGroups=t?String(t):null,A(this),this):this.config.sortGroups},_.prototype.sortIntervals=function(t){return this.config.showDeprecationWarnings&&console.log(".sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })"),arguments.length?(this.config.sortIntervals=t?String(t):null,S(this),this):this.config.sortIntervals},_.prototype.stacked=function(t){return this.config.showDeprecationWarnings&&console.log(".stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })"),arguments.length?(this.config.stacked=!!t,this):this.config.stacked},_.prototype.theme=function(t){return this.config.showDeprecationWarnings&&console.log(".theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })"),arguments.length?(this.config.theme=t?String(t):null,this):this.config.theme},_.prototype.title=function(t){return this.config.showDeprecationWarnings&&console.log(".title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })"),arguments.length?(this.config.title=t?String(t):null,this):this.config.title},_.prototype.type=function(t){return this.config.showDeprecationWarnings&&console.log(".type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })"),arguments.length?(this.config.type=t?P(t):null,this):this.config.type},_.prototype.update=function(){var t=this.config.library,e=this.config.type,n=this.el();return t&&e&&n&&_.libraries[t][e].update&&_.libraries[t][e].update.apply(this,arguments),this},_.prototype.width=function(t){return this.config.showDeprecationWarnings&&console.log(".width() is deprecated - use CSS classes"),this},_.prototype.exportImage=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.quality,n=void 0===e?0:e,i=t.bgcolor,r=void 0===i?"#fff":i;(0,v.default)({node:this.config.containerElement,quality:n,bgcolor:r})},_.prototype.exportData=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"json";(0,g.default)({data:this.dataset.matrix,type:t})},_.prototype.chartType=_.prototype.type,_.prototype.error=_.prototype.message,_.prototype.parseRawData=_.prototype.data,_.prototype.parseRequest=function(){return this},_.prototype.initialize=function(){return this},_.version=l.default.version,e.default=_},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.deleteColumn=function(t){var e=this,n="number"==typeof t?t:this.matrix[0].indexOf(t);n>-1&&(0,i.each)(e.matrix,function(t,i){e.matrix[i].splice(n,1)});return e},e.deleteRow=function(t){var e="number"==typeof t?t:this.selectColumn(0).indexOf(t);e>-1&&this.matrix.splice(e,1);return this};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.filterColumns=function(t){var e=this,n=[];return(0,i.each)(e.matrix,function(t,e){n.push([])}),(0,i.each)(e.matrix[0],function(r,o){var a=e.selectColumn(o);(0==o||t.call(e,a,o))&&(0,i.each)(a,function(t,e){n[e].push(t)})}),e.data(n),e},e.filterRows=function(t){var e=this,n=[];return(0,i.each)(e.matrix,function(i,r){(0==r||t.call(e,i,r))&&n.push(i)}),e.data(n),e};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.insertColumn=function(t,e,n){var i=this,o=void 0!==e?e:null;"function"==typeof n?(i.matrix[0].splice(t,0,o),(0,r.each)(i.matrix,function(e,r){var o;r>0&&(void 0===(o=n.call(i,e,r))&&(o=null),i.matrix[r].splice(t,0,o))})):(!n||n instanceof Array)&&((n=n||[]).length<=i.matrix.length-1?n=n.concat((0,a.default)(i.matrix.length-1-n.length)):(0,r.each)(n,function(t,e){i.matrix.length-10&&(r=i.selectColumn(e),void 0===(a=n.call(i,r,e))&&(a=null),o.push(a))}),i.matrix.splice(t,0,o)):(!n||n instanceof Array)&&((n=n||[]).length<=i.matrix[0].length-1?n=n.concat((0,a.default)(i.matrix[0].length-1-n.length)):(0,r.each)(n,function(t,e){i.matrix[0].length-1-1&&void 0!==this.matrix[0][n]&&(0,i.each)(this.matrix,function(t,i){e.push(t[n])});return e},e.selectRow=function(t){var e=[],n="number"==typeof t?t:this.selectColumn(0).indexOf(t);n>-1&&void 0!==this.matrix[n]&&(e=this.matrix[n]);return e};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sortColumns=function(t,e){var n=this,i=this.matrix[0].slice(1),o=[],s=e||a.default.getColumnLabel;return(0,r.each)(i,function(t,e){o.push(n.selectColumn(e+1).slice(0))}),o.sort(function(e,i){var r=s.call(n,e)>s.call(n,i);return r?"asc"===t?1:-1:r?0:"asc"===t?-1:1}),(0,r.each)(o,function(t,e){n.deleteColumn(e+1).insertColumn(e+1,t[0],t.slice(1))}),n},e.sortRows=function(t,e){var n=this,i=this.matrix.slice(0,1),r=this.matrix.slice(1),o=e||a.default.getRowIndex;return r.sort(function(e,i){var r=o.call(n,e)>o.call(n,i);return r?"asc"===t?1:-1:r?0:"asc"===t?-1:1}),n.data(i.concat(r)),n};var i,r=n(0),o=n(13),a=(i=o)&&i.__esModule?i:{default:i}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.updateColumn=function(t,e){var n=this,i="number"==typeof t?t:this.matrix[0].indexOf(t);i>-1&&("function"==typeof e?(0,r.each)(n.data(),function(t,r){var o;r>0&&void 0!==(o=e.call(n,t[i],r,t))&&(n.matrix[r][i]=o)}):(!e||e instanceof Array)&&((e=e||[]).length<=n.data().length-1?e=e.concat((0,a.default)(n.data().length-1-e.length)):(0,r.each)(e,function(t,i){n.matrix.length-1-1&&("function"==typeof e?(0,r.each)(n.data()[i],function(t,r){var o=n.selectColumn(r),a=e.call(n,t,r,o);void 0!==a&&(n.matrix[i][r]=a)}):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix[0].length-1?e=e.concat((0,a.default)(n.matrix[0].length-1-e.length)):(0,r.each)(e,function(t,i){n.matrix[0].length-1 stats.json",analyze:"webpack-bundle-analyzer stats.json /dist",version:"npm run build && git add .",postversion:"git push && git push --tags && npm publish",test:"NODE_ENV=test jest","test:watch":"NODE_ENV=test jest --watch"},repository:{type:"git",url:"https://github.com/keen/keen-dataviz.js.git"},bugs:"https://github.com/keen/keen-dataviz.js/issues",author:"Keen.IO (https://keen.io/)",contributors:["Dustin Larimer (https://github.com/dustinlarimer)","Joanne Cheng (https://github.com/joannecheng)","Eric Anderson (https://github.com/aroc)","Joe Wegner (https://github.com/josephwegner)","Sara Falkoff (https://github.com/adamkasprowicz)","Dariusz Łacheta (https://github.com/dariuszlacheta)"],homepage:"https://keen.io",keywords:["d3","c3","Analytics","Stats","Statistics","Visualization","Visualizations","Data Visualization","Chart","Charts","Charting","Svg","Dataviz","Plots","Graphs","Funnels"],dependencies:{c3:"^0.7.2",d3:"^5.11.0","dom-to-image":"^2.6.0","file-saver":"^2.0.1","promise-polyfill":"^8.0.0",rangeable:"^0.1.6"},devDependencies:{autoprefixer:"^8.2.0","babel-loader":"^7.1.4","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0",concurrently:"^3.5.1",cssnano:"^3.10.0",eslint:"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0",jest:"^22.4.3","jest-environment-jsdom-c3":"^2.0.0",nock:"^9.2.6",postcss:"^6.0.21","postcss-cli":"^5.0.0","postcss-color-function":"^4.0.1","postcss-css-variables":"^0.8.1","postcss-cssnext":"^2.4.0","postcss-import":"^8.0.2","postcss-loader":"^2.1.3",precss:"^3.1.2","regenerator-runtime":"^0.11.1","replace-in-file":"^3.4.0","style-loader":"^0.20.3",webpack:"^4.29.0","webpack-bundle-analyzer":"^3.3.2","webpack-cli":"^3.2.1","webpack-dev-server":"^3.3.1","xhr-mock":"^2.3.2"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return arguments.length?t instanceof o.default?(this.dataset=t,this):function(t){var e,n,i,r,l,c,u,d,f=[];n=this.config.indexBy,i=t.metadata||{},l=void 0!==t.query?t.query:{},"funnel"===(l=(0,a.extend)({analysis_type:null,event_collection:null,filters:[],group_by:null,interval:null,timeframe:null,timezone:null},l)).analysis_type?r="funnel":"extraction"===l.analysis_type?r="extraction":"select_unique"===l.analysis_type?l.group_by||l.interval||(r="list"):l.analysis_type&&(l.group_by||l.interval?l.group_by&&!l.interval?l.group_by instanceof Array&&l.group_by.length>1?(r="double-grouped-metric",f.push(l.group_by)):r="grouped-metric":l.interval&&!l.group_by?(r="interval",f.push(n)):l.group_by&&l.interval&&(l.group_by instanceof Array&&l.group_by.length>1?(r="double-grouped-interval",f.push(l.group_by),f.push(n)):(r="grouped-interval",f.push(n))):r="metric");r||("number"==typeof t.result&&(r="metric"),t.result instanceof Array&&t.result.length>0&&(!t.result[0].timeframe||"number"!=typeof t.result[0].value&&null!=t.result[0].value||(r="interval",f.push(n)),"number"==typeof t.result[0].result&&(r="grouped-metric"),"heatmap"===this.config.type&&Object.keys(3===t.result[0]&&"number"==typeof t.result[0].result)&&(r="heatmap-axis"),t.result[0].value instanceof Array&&(r="grouped-interval",f.push(n)),"number"==typeof t.result[0]&&void 0!==t.steps&&(r="funnel",l.steps=t.steps),"string"!=typeof t.result[0]&&"number"!=typeof t.result[0]||void 0!==t.steps||(r="list"),r||(r="extraction")),r||(r="extraction"));void 0===this.config.title&&(u=i.display_name?i.display_name:function(t){var e,n=t.analysis_type?t.analysis_type.replace("_"," "):"";e=n.replace(/\b./g,function(t){return t.toUpperCase()}),t.event_collection&&(e+=" - "+t.event_collection);return e}(l),this.config.title=u);this.config.type||(d=i.visualization&&i.visualization.chart_type?i.visualization.chart_type:function(t){var e=void 0;switch(t){case"metric":e="metric";break;case"interval":e="area";break;case"grouped-metric":case"double-grouped-metric":e="bar";break;case"grouped-interval":case"double-grouped-interval":e="line";break;case"funnel":e="horizontal-bar";break;case"list":case"extraction":default:e="table"}return e}(r),this.config.type=d);c=o.default.parser.apply(this,[r].concat(f)),e=c((0,a.extend)(t,{query:l})),r.indexOf("interval")>-1&&e.updateColumn(0,function(t,e){return new Date(t)});e.updateRow(0,function(t,e){return(0,s.stripHtmlTags)(t)}),this.dataset=e,t.execution_metadata&&(this.execution_metadata=t.execution_metadata);return this}.call(this,t):this.dataset.data()};var i,r=n(12),o=(i=r)&&i.__esModule?i:{default:i},a=n(5),s=n(14)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=Object.assign||function(t){for(var e=1;e12?1e3:250;e=setTimeout(function(){(0,o.each)(t.visuals,function(t){var e=t.view._artifacts.c3;if(e){var n=e.element.parentNode.parentNode.offsetWidth,i=n;if(t.config.legend&&t.config.legend.show&&("left"===t.config.legend.position||"right"===t.config.legend.position)){var r=e.element.nextSibling?e.element.nextSibling.offsetWidth:0;i=n-(e.element.previousSibling?e.element.previousSibling.offsetWidth:0)-r}e.resize({width:i})}})},n)}),function(){var t={message:p.default,metric:h.default,table:v.default,spinner:g.default,funnel:new m.default,"funnel-3d":new y.default,"horizontal-funnel":new b.default,"horizontal-funnel-3d":new x.default,"metric-combo":new w.default,heatmap:new _.default,choropleth:new k.default},e=function(t,e){return parseInt(window.getComputedStyle(t)["padding"+e].replace("px",""))};return(0,o.each)(["area","area-spline","area-step","bar","donut","gauge","line","pie","step","spline","horizontal-area","horizontal-area-spline","horizontal-area-step","horizontal-bar","horizontal-line","horizontal-step","horizontal-spline"],function(n,p){t[n]={render:function(){var t=this,p=function(){var t={bindto:this.el().querySelector("."+this.config.theme+"-rendering .c3-chart"),color:{pattern:this.config.colors},data:{colors:i({},this.config.colorMapping),columns:[],type:this.config.type.replace("horizontal-","")}},n=this.el(),r=n.offsetHeight;if(r-=e(n,"Top")+e(n,"Bottom"),this.config.showTitle){var o=this.el().querySelector(".keen-dataviz-title");r-=o?o.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}if(this.config.subtitle){var s=this.el().querySelector(".keen-dataviz-subtitle");r-=s?s.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}if(this.config.notes){var l=this.el().querySelector(".keen-dataviz-notes");r-=l?l.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}var c=this.el().querySelector(".c3-chart").offsetWidth-(e(n,"Left")+e(n,"Right"));c<0&&(c=0);var u={size:{width:c,height:r>0?r:void 0}};return(0,a.extendDeep)({},u,this.config,t)}.call(this),h=(0,f.calculateSumForPercents)(this.dataset.matrix);if("percent"!==p.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n||(this.dataset.matrix,this.dataset.matrix=[this.dataset.matrix[0]].concat(M((0,f.calculatePercents)(this.dataset.matrix,h))),p.sparkline||(p.axis={y:{padding:{top:0},tick:{format:function(t){return t+"%"}}}})),p.range&&(this.dataset.matrix=[this.dataset.matrix[0]].concat(M((0,d.default)(this.dataset.matrix)))),this.config.clearOnRender&&p.data.columns.length&&this.dataset&&this.dataset.meta){var v=(this.dataset.meta||{}).type,g=0;["interval"].includes(void 0===v?"":v)&&(g=1),p.data.columns.splice(g)}if(1!==this.data()[0].length&&1!==this.data().length){var m=!1;if("gauge"===n?(p.legend.show=!1,p.data.columns=[[this.config.title||this.data()[1][0],this.data()[1][1]]],m=!0):"pie"===n||"donut"===n?p.data.columns=this.data().slice(1):(n.indexOf("horizontal-")>-1&&(p.axis.rotated=n.indexOf("horizontal-")>-1),(0,s.default)(this.data()[1][0])?(p.axis.x=p.axis.x||{},p.axis.x.type="timeseries",p.axis.x.tick=p.axis.x.tick||{format:this.config.dateFormat||(0,l.default)(this.data()[1][0],this.data()[2]?this.data()[2][0]:this.data()[1][0]),culling:{max:5}},p.data.columns[0]=[],(0,o.each)(this.dataset.selectColumn(0),function(t,e){e>0&&(t=new Date(t)),p.data.columns[0][e]=t}),p.data.columns[0][0]="x",p.data.x="x",this.config.stacked&&this.data()[0].length>2&&(p.data.groups=[this.dataset.selectRow(0).slice(1)])):(p.axis.x=p.axis.x||{},p.axis.x.type="category",p.axis.x.categories=this.dataset.selectColumn(0).slice(1),this.config.stacked&&this.data()[0].length>2&&(p.data.groups=[this.dataset.selectRow(0).slice(1)])),2===this.data()[0].length&&(p.legend.show=!1,m=!0),(0,o.each)(this.data()[0],function(t,e){e>0&&p.data.columns.push(this.dataset.selectColumn(e))}.bind(this))),m){var y=this.el().querySelector(".keen-c3-legend");y&&(y.remove(),p.size.width=this.el().querySelector(".c3-chart").offsetWidth),p.legend.show=!1}if(p.partialIntervalIndicator&&p.partialIntervalIndicator.show&&["area","area-spline","area-step","line","spline","step"].indexOf(p.type)>-1){var b=p.data.columns&&p.data.columns[0];if(b&&b.length>1){var x={axis:"x",start:new Date(b[b.length-2]),class:p.partialIntervalIndicator.className};p.regions=[].concat(M(p.regions||[]),[x])}}if(p.tooltip&&!1===p.tooltip.show||!(!0===p.legend.show||p.legend&&p.legend.tooltip&&p.legend.tooltip.show)||(p.tooltip={contents:u.default,format:{title:this.config.tooltip.format.title,value:function(e,i,r,o){var a=function(t,e,n,i){var r=this.config.type;if(!this.view._artifacts.pagination||"gauge"===r)return t;var o=this.view._artifacts.pagination.labels;return o.indexOf(n)>-1?t:void 0}.call(t,e,i,r,o);return t.config.tooltip&&t.config.tooltip.format&&t.config.tooltip.format.value?(a=t.config.tooltip.format.value.call(t,a,i,r,o),"percent"!==p.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n||(a=parseFloat((a/100*h[o]).toFixed(2))),p.range&&"Max"===r&&(a+=t.dataset.matrix[o+1][2]),a):"percent"!==p.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n?(p.range&&"Max"===r&&(a+=t.dataset.matrix[o+1][2]),a):(a=(a/100*h[o]).toFixed(2),parseFloat(a))}}}),!0===p.legend.show){var w=i({},p);w.data.color=function(t,e){var n=this.config.type;if(this.view._artifacts.pagination&&"gauge"!==n){var i=this.view._artifacts.pagination.labels;return e.id&&i.indexOf(e.id)>-1||e&&!e.id&&i.indexOf(e)>-1?t:"donut"===n||"pie"===n?"rgba(0,0,0,.1)":"rgba(0,0,0,.07)"}return t}.bind(this),w.legend.hide=!0,this.view._artifacts.c3=r.default.generate(w),c.default.call(this,i({},p,{onLegendRendered:function(){var n=t.el().querySelector(".keen-c3-legend");n&&("top"===p.legend.position||"bottom"===p.legend.position?(w.size.height-=n.offsetHeight,t.view._artifacts.c3.resize({height:w.size.height})):(0===w.size.width&&(w.size.width=t.el().offsetWidth-e(t.el(),"Left")-e(t.el(),"Right")),w.size.width-=n.offsetWidth,t.view._artifacts.c3.resize({width:w.size.width})))},onPaginated:function(){t.view._artifacts.c3.flush()}}))}else this.view._artifacts.c3=r.default.generate(p)}else{var _="No data to display",k=this.config.errorMapping[_]||_;this.config.showErrorMessages&&this.message(k)}},update:function(){this.render()},destroy:function(){this.view._artifacts.c3&&(this.view._artifacts.c3.destroy(),this.view._artifacts.c3=null)}}}),t}()};var r=E(n(10)),o=n(0),a=(n(5),n(15)),s=E(n(11)),l=E(n(34)),c=E(n(35)),u=E(n(36)),d=E(n(37)),f=n(38),p=E(n(39)),h=E(n(43)),v=E(n(44)),g=E(n(45)),m=E(n(46)),y=E(n(47)),b=E(n(48)),x=E(n(49)),w=E(n(50)),_=E(n(51)),k=E(n(52));function E(t){return t&&t.__esModule?t:{default:t}}function M(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=24192e5?function(t){var e=new Date(t);return i[e.getMonth()]+" "+e.getFullYear()}:n>=864e5?function(t){var e=new Date(t);return i[e.getMonth()]+" "+e.getDate()}:n>=36e5?"%I:%M %p":"%I:%M:%S %p"}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=Object.assign||function(t){for(var e=1;e"+n+"",i.chartPartId=e,i.setAttribute("class","legend-item"),v.append(i);var o=document.createElement("span");o.setAttribute("class","legend-item-color-sample"),o.style.backgroundColor=r.color(i.chartPartId),i.prepend(o);var a=document.createElement("div");i.addEventListener("mouseover",function(e){r.focus(i.chartPartId),l.tooltip.show&&i.chartPartId.length>l.label.textMaxLength&&(a.setAttribute("class","keen-c3-legend-label-overlay keen-c3-legend-position-"+l.position),a.innerHTML=(t.legend.tooltip.pointer?"
":"")+i.chartPartId,i.append(a))}),i.addEventListener("mouseout",function(t){r.revert(),a.remove()}),i.addEventListener("click",function(t){var e=1,n=c.hidden.indexOf(i.chartPartId);n<0?(c.hidden.push(i.chartPartId),e=.35):(c.hidden.splice(n,1),e=1),i.style.opacity=e,r.toggle(i.chartPartId)})}),t.onLegendRendered&&(t.onLegendRendered(),t.onLegendRendered=null)}.call(n,c.labels),c.total>c.limit&&function(){g.innerHTML="",h.innerHTML="",m.innerHTML="";var t=document.createElement("i"),e=document.createElement("i"),n=function(t){if("forward"===t){var e=c.offset+c.limit;return e=0?n:Math.floor(c.total/c.limit)*c.limit};e.addEventListener("click",function(){n("forward"),y(),b()}),t.addEventListener("click",function(){n("backward"),y(),b()}),"left"===l.position||"right"===l.position?(t.setAttribute("class","up"),e.setAttribute("class","down"),g.append(e),g.append(t)):(t.setAttribute("class","left"),e.setAttribute("class","right"),h.append(t),m.append(e))}.call(n),t.onPaginated&&t.onPaginated()}function b(){document.selection&&document.selection.empty?document.selection.empty():window.getSelection&&window.getSelection().removeAllRanges()}m.setAttribute("class","keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right"),"horizontal"===p&&f.append(m),y()};!function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);e.default=t}(n(2));var r,o=n(11),a=(r=o)&&r.__esModule?r:{default:r}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,r){for(var o=void 0,a=void 0,s=this.config.tooltip_format_name||function(t){return t},l=this.config.tooltip_format_title||e,c=this.config.tooltip_format_value||n,u=0;u"+(a||0===a?""+(0,i.escapeHtml)(a)+"":""));var d=s(t[u].name),f=c(t[u].value,t[u].ratio,t[u].id,t[u].index),p=this.levelColor?this.levelColor(t[u].value):r(t[u].id);f&&!isNaN(f)&&(o+="",-1===d.indexOf("__tooltip_ignore_name_field__")&&(o+=""+(0,i.escapeHtml)(d)+""),o+=""+(0,i.escapeHtml)(f)+"",o+="")}return o+""};var i=n(4)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return t.slice(1).map(function(t){return t.map(function(e,n){return"number"==typeof e&&1===n?e-t[n+1]:e})})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.calculateSumForPercents=function(t){var e=[];return t.slice(1).forEach(function(t,n){t.forEach(function(t){if("number"==typeof t){if(!e[n])return e[n]=t,e[n];e[n]+=t}return e[n]})}),e},e.calculatePercents=function(t,e){return t.slice(1).map(function(t,n){return t.map(function(t){return"number"==typeof t?t/e[n]*100:t})})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(4),r=a(n(16)),o=a(n(1));function a(t){return t&&t.__esModule?t:{default:t}}e.default={render:function(t){var e=document.createElement("div"),n=document.createElement("div"),a=document.createElement("span"),s=document.createElement("div"),l=document.createElement("div"),c=document.createElement("div");e.className=this.config.theme+" keen-dataviz-box",n.className=this.config.theme+"-message",s.className=this.config.theme+"-title",s.innerHTML=(0,i.escapeHtml)(this.config.title||""),l.className=this.config.theme+"-subtitle",l.innerHTML=(0,i.escapeHtml)(this.config.subtitle||""),c.className=this.config.theme+"-notes",c.innerHTML=(0,i.escapeHtml)(this.config.notes||""),a.innerHTML=(0,i.escapeHtml)(t)||"",n.appendChild(a),this.config.title&&this.config.showTitle&&e.appendChild(s),this.config.subtitle&&e.appendChild(l),e.appendChild(n),this.config.notes&&e.appendChild(c),this.config.ui&&this.config.ui.buttons&&this.config.ui.buttons.download&&this.config.ui.buttons.download.type&&(0,r.default)({element:this.el(),data:(0,i.escapeHtml)(t)||"",type:this.config.ui.buttons.download.type,label:this.config.ui.buttons.download.label}),this.config.utils&&this.config.utils.clickToCopyToClipboard&&(s.addEventListener("click",function(t){return(0,o.default)(t.target.innerText,t)}),c.addEventListener("click",function(t){return(0,o.default)(t.target.innerText,t)}),a.addEventListener("click",function(t){return(0,o.default)(t.target.innerText,t)})),this.el().innerHTML="",this.el().appendChild(e)},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.event,n=t.type,o=t.data;e.preventDefault();var a=n.toLowerCase();if(!["json","csv","jpg","jpeg","png"].includes(n))throw new Error("This type is not supported");if("png"===a)return void(0,i.default)({node:e.currentTarget.previousElementSibling});if("jpg"===a||"jpeg"===a)return void(0,i.default)({node:e.currentTarget.previousElementSibling,quality:1,bgcolor:"#fff"});"json"===a&&(0,r.default)({type:a,data:o});"csv"===a&&(0,r.default)({type:a,data:o})};var i=o(n(17)),r=o(n(18));function o(t){return t&&t.__esModule?t:{default:t}}},function(t,e,n){!function(e){"use strict";var n=function(){return{escape:function(t){return t.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1")},parseExtension:e,mimeType:function(t){var n=e(t).toLowerCase();return(i="application/font-woff",{woff:i,woff2:i,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml"})[n]||"";var i},dataAsUrl:function(t,e){return"data:"+e+";base64,"+t},isDataUrl:function(t){return-1!==t.search(/^(data:)/)},canvasToBlob:function(t){return t.toBlob?new Promise(function(e){t.toBlob(e)}):function(t){return new Promise(function(e){for(var n=window.atob(t.toDataURL().split(",")[1]),i=n.length,r=new Uint8Array(i),o=0;o'+t+""}).then(function(t){return''+t+""}).then(function(t){return"data:image/svg+xml;charset=utf-8,"+t})}(i,e.width||n.width(t),e.height||n.height(t))})}function c(t,e){return l(t,e).then(n.makeImage).then(n.delay(100)).then(function(i){var r=function(t){var i=document.createElement("canvas");if(i.width=e.width||n.width(t),i.height=e.height||n.height(t),e.bgcolor){var r=i.getContext("2d");r.fillStyle=e.bgcolor,r.fillRect(0,0,i.width,i.height)}return i}(t);return r.getContext("2d").drawImage(i,0,0),r})}function u(t,e,i){if(!i&&e&&!e(t))return Promise.resolve();return Promise.resolve(t).then(r).then(function(n){return o(t,n,e)}).then(function(e){return a(t,e)});function r(t){return t instanceof HTMLCanvasElement?n.makeImage(t.toDataURL()):t.cloneNode(!1)}function o(t,e,i){var r=t.childNodes;return 0===r.length?Promise.resolve(e):function(t,e,n){var i=Promise.resolve();return e.forEach(function(e){i=i.then(function(){return u(e,n)}).then(function(e){e&&t.appendChild(e)})}),i}(e,n.asArray(r),i).then(function(){return e});function o(t,e,n){var i=Promise.resolve();return e.forEach(function(e){i=i.then(function(){return u(e,n)}).then(function(e){e&&t.appendChild(e)})}),i}}function a(t,e){return e instanceof Element?Promise.resolve().then(function(){!function(t,e){t.cssText?e.cssText=t.cssText:function(t,e){n.asArray(t).forEach(function(n){e.setProperty(n,t.getPropertyValue(n),t.getPropertyPriority(n))})}(t,e)}(window.getComputedStyle(t),e.style)}).then(function(){[":before",":after"].forEach(function(i){!function(i){var r=window.getComputedStyle(t,i),o=r.getPropertyValue("content");if(""===o||"none"===o)return;var a=n.uid();e.className=e.className+" "+a;var s=document.createElement("style");s.appendChild(function(t,e,i){var r="."+t+":"+e,o=i.cssText?function(t){var e=t.getPropertyValue("content");return t.cssText+" content: "+e+";"}(i):function(t){return n.asArray(t).map(function(e){return e+": "+t.getPropertyValue(e)+(t.getPropertyPriority(e)?" !important":"")}).join("; ")+";"}(i);return document.createTextNode(r+"{"+o+"}")}(a,i,r)),e.appendChild(s)}(i)})}).then(function(){t instanceof HTMLTextAreaElement&&(e.innerHTML=t.value);t instanceof HTMLInputElement&&e.setAttribute("value",t.value)}).then(function(){if(!(e instanceof SVGElement))return;if(e.setAttribute("xmlns","http://www.w3.org/2000/svg"),!(e instanceof SVGRectElement))return;["width","height"].forEach(function(t){var n=e.getAttribute(t);n&&e.style.setProperty(t,n)})}).then(function(){return e}):e;function i(){function i(t,e){if(t.cssText)e.cssText=t.cssText;else i(t,e);function i(t,e){n.asArray(t).forEach(function(n){e.setProperty(n,t.getPropertyValue(n),t.getPropertyPriority(n))})}}i(window.getComputedStyle(t),e.style)}function r(){function i(i){var r=window.getComputedStyle(t,i),o=r.getPropertyValue("content");if(o===""||o==="none")return;var a=n.uid();e.className=e.className+" "+a;var s=document.createElement("style");function l(t,e,i){var r="."+t+":"+e,o=i.cssText?a(i):s(i);return document.createTextNode(r+"{"+o+"}");function a(t){var e=t.getPropertyValue("content");return t.cssText+" content: "+e+";"}function s(t){return n.asArray(t).map(e).join("; ")+";";function e(e){return e+": "+t.getPropertyValue(e)+(t.getPropertyPriority(e)?" !important":"")}}}s.appendChild(l(a,i,r)),e.appendChild(s)}[":before",":after"].forEach(function(t){i(t)})}function o(){if(t instanceof HTMLTextAreaElement)e.innerHTML=t.value;if(t instanceof HTMLInputElement)e.setAttribute("value",t.value)}function a(){if(!(e instanceof SVGElement))return;if(e.setAttribute("xmlns","http://www.w3.org/2000/svg"),!(e instanceof SVGRectElement))return;["width","height"].forEach(function(t){var n=e.getAttribute(t);if(!n)return;e.style.setProperty(t,n)})}}}function d(t){return r.resolveAll().then(function(e){var n=document.createElement("style");return t.appendChild(n),n.appendChild(document.createTextNode(e)),t})}function f(t){return o.inlineAll(t).then(function(){return t})}t.exports=s}()},function(t,e,n){(function(n){var i,r,o;r=[],void 0===(o="function"==typeof(i=function(){"use strict";function e(t,e,n){var i=new XMLHttpRequest;i.open("GET",t),i.responseType="blob",i.onload=function(){a(i.response,e,n)},i.onerror=function(){console.error("could not download file")},i.send()}function i(t){var e=new XMLHttpRequest;e.open("HEAD",t,!1);try{e.send()}catch(t){}return 200<=e.status&&299>=e.status}function r(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(n){var e=document.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(e)}}var o="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n&&n.global===n?n:void 0,a=o.saveAs||("object"!=typeof window||window!==o?function(){}:"download"in HTMLAnchorElement.prototype?function(t,n,a){var s=o.URL||o.webkitURL,l=document.createElement("a");n=n||t.name||"download",l.download=n,l.rel="noopener","string"==typeof t?(l.href=t,l.origin===location.origin?r(l):i(l.href)?e(t,n,a):r(l,l.target="_blank")):(l.href=s.createObjectURL(t),setTimeout(function(){s.revokeObjectURL(l.href)},4e4),setTimeout(function(){r(l)},0))}:"msSaveOrOpenBlob"in navigator?function(t,n,o){if(n=n||t.name||"download","string"!=typeof t)navigator.msSaveOrOpenBlob(function(t,e){return void 0===e?e={autoBom:!1}:"object"!=typeof e&&(console.warn("Deprecated: Expected third argument to be a object"),e={autoBom:!e}),e.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t}(t,o),n);else if(i(t))e(t,n,o);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){r(a)})}}:function(t,n,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof t)return e(t,n,i);var a="application/octet-stream"===t.type,s=/constructor/i.test(o.HTMLElement)||o.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||a&&s)&&"object"==typeof FileReader){var c=new FileReader;c.onloadend=function(){var t=c.result;t=l?t:t.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=t:location=t,r=null},c.readAsDataURL(t)}else{var u=o.URL||o.webkitURL,d=u.createObjectURL(t);r?r.location=d:location.href=d,r=null,setTimeout(function(){u.revokeObjectURL(d)},4e4)}});o.saveAs=a.saveAs=a,t.exports=a})?i.apply(e,r):i)||(t.exports=o)}).call(this,n(7))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=n(3),o=n(4),a=n(1),s=(i=a)&&i.__esModule?i:{default:i};e.default={render:function(){var t=this.config.colors[0],e=this.config.theme,n=this.config.title,i=this.config.subtitle,a=this.config,l="-",c="",u="",d="",f="",p=void 0,h="",v="",g="",m="",y=this.config,b=y.results,x=y.previousResults,w=y.isExtraction,_=y.comparedProp;if(b&&x&&(h=x?" metric-comparison":"",m=x&&n?"-smaller":"",g=(v=b.result-x.result)>0?"-green":"-red",v=Math.abs(v),t=""),this.data()&&this.data()[1]&&this.data()[1][1]&&"number"==typeof this.data()[1][1]&&(l=this.data()[1][1]),w&&_){var k=function(t,e){var n=t.query,i=t.result,r=[];if("extraction"!==n.analysis_type)throw new Error("Analysis type is not an extraction!");return Array.isArray(i)&&i.forEach(function(t){var i=e.split(".").reduce(function(t,e){return t&&t[e]||null},t),o={query:n,result:i};r.push(o)}),r}(b,_);l=k[0].result,h=(c=k[1].result)?" metric-comparison":"",m=c&&n?"-smaller":"",g=(v=l-c)>0?"-green":"-red",v=Math.abs(v),t=""}if(p=l,void 0!==a.prettyNumber&&!0!==a.prettyNumber||isNaN(parseInt(l))||(p=(0,r.prettyNumber)(l),b&&x&&(v=(0,r.prettyNumber)(v))),a.prefix&&(d=''+a.prefix+""),a.suffix&&(f=''+a.suffix+""),u+='
',u+='
',b&&x&&(u+='
'+(0,o.escapeHtml)(v)+"
"),w&&_&&(l&&c?(u+='
'+(0,o.escapeHtml)(v)+"
",u+=""+c+""):u+="

No data to display

"),u+='
'+d+(0,o.escapeHtml)(p)+f+"
",n&&(u+='
'+(0,o.escapeHtml)(n)+"
"),i&&(u+='
'+(0,o.escapeHtml)(i)+"
"),u+="
",u+="
",this.el().innerHTML=u,this.config.onrendered&&this.config.onrendered(),this.config.utils&&this.config.utils.clickToCopyToClipboard){var E="."+e+"-metric-value"+m;if(document.querySelector(E).addEventListener("click",function(t){return(0,s.default)(t.target.innerText,t)}),b&&x){var M="."+e+"-metric"+g;document.querySelector(M).addEventListener("click",function(t){return(0,s.default)(t.target.innerText,t)})}}},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(i=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);i=!0);}catch(t){r=!0,o=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw o}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=Object.assign||function(t){for(var e=1;e';var M=!0,A=!1,S=void 0;try{for(var P,j=E.entries()[Symbol.iterator]();!(M=(P=j.next()).done);M=!0){var C=P.value,T=r(C,2),O=T[0],z=T[1];m&&z instanceof Date&&(z=m(z));var L=(0,a.escapeHtml)(z);h[O]?n+=""+g[h[O]](L)+"":n+=""+L+""}}catch(t){A=!0,S=t}finally{try{!M&&j.return&&j.return()}finally{if(A)throw S}}n+=""}}catch(t){x=!0,w=t}finally{try{!b&&k.return&&k.return()}finally{if(x)throw w}}if(u>1){n+='';var D=1,N=1===c?1:c-1,I=c===u?u:c+1;for(s.arrows&&(n+='«');D<=u;)n+=''+D+"",D++;s.arrows&&(n+='»'),n+=""}return n}e.default={render:function(){var t=this,e=this.dataset.matrix,n=this.el(),i=this.config.theme,r=this,o="";if(1===e.length&&0===e[0].length){var s="No data to display",d=this.config.errorMapping[s]||s;this.config.showErrorMessages&&this.message(d)}else{o+='
',o+='',o+="",o+="",o+=function(t,e){var n="",i=-1,r=t.config.table,o=r&&r.columns||e[0],s=!0,l=!1,c=void 0;try{for(var u,d=o[Symbol.iterator]();!(s=(u=d.next()).done);s=!0){var f=u.value,p=(0,a.escapeHtml)(f);n+='"}}catch(t){l=!0,c=t}finally{try{!s&&d.return&&d.return()}finally{if(l)throw c}}return n}(r,e),o+="",o+="",o+="",o+=u(r,e),o+="",o+="
'+p+"
",o+="
",n.querySelector("."+i+"-rendering").innerHTML=o,n.querySelectorAll("."+i+"-rendering th").forEach(function(o){o.addEventListener("click",function(o){var a=o.target.getAttribute("order")||"asc",s=o.target.getAttribute("fieldNumber");a="asc"===a?"desc":"asc",o.target.setAttribute("order",a);var l=t.dataset.matrix.shift();t.dataset.matrix.sort(function(t,e){var n="asc"===a?1:-1;if("string"==typeof t[s]){var i=t[s].toUpperCase(),r=e[s].toUpperCase();return ir?1*n:0}return(t[s]-e[s])*n}),t.dataset.matrix.unshift(l),n.querySelector("."+i+"-rendering tbody").innerHTML=u(r,e),f()})});var f=function t(){n.querySelectorAll(".btn").forEach(function(o){o.addEventListener("click",function(o){c=parseInt(o.target.getAttribute("data-page")),n.querySelector("."+i+"-rendering tbody").innerHTML=u(r,e),t()},!0)})};if(f(r,n,i),this.config.onrendered&&this.config.onrendered(),this.config.utils&&this.config.utils.clickToCopyToClipboard){var p="."+i+"-table-dataset";document.querySelector(p).addEventListener("click",function(t){var e=t.target,n=e.nodeName,i=e.innerText;"TD"===n&&(0,l.default)(i,t)})}}},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={render:function(){var t="";this.view._artifacts.spinner={};t+='
',t+='
',t+='
',t+="
",t+="
",this.el().innerHTML=t},update:function(){this.render()},destroy:function(){if(this.view._artifacts.spinner){this.view._artifacts.spinner.interval&&clearInterval(this.view._artifacts.spinner.interval),this.view._artifacts.spinner.radius=0;try{delete this.view._artifacts.spinner}catch(t){this.view._artifacts.spinner=void 0}}this.el().innerHTML=""}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nP/2?P/2-5:t.points[3].x+O,y:"right"===b?t.points[3].y:t.points[3].y+T/1.5}]}}),R=N.concat(I);if(S.attr("preserveAspectRatio","xMidYMid meet").attr("viewBox","0 0 "+(P+M+k)+" "+(j+_+E-30)).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+M+","+_+")").selectAll("polygon").data(R).enter().append("polygon").attr("points",function(t){return t.points.map(function(t){return[t.x,t.y].join(",")}).join(" ")}).style("fill",function(t,e){return e>N.length-1?l[t.label]?o.rgb(l[t.label]).darker(1.5):o.rgb(n[e-N.length]).darker(1.5):l[t.label]?l[t.label]:n[e]}).attr("class",function(t){return t.label}).attr("cursor","pointer"),m&&(S.selectAll("line").data(N).enter().append("line").attr("x1",10).attr("y1",function(t){return t.points[0].y+_-T/5}).attr("x2",function(t,e){return 0===e?t.points[1].x+M:t.points[1].x+M-O}).attr("y2",function(t){return t.points[0].y+_-T/5}).attr("class","chart-lines"),S.append("line").attr("x1",10).attr("y1",N[N.length-1].points[2].y+_+T-T/5).attr("x2",N[N.length-1].points[2].x+M-O).attr("y2",N[N.length-1].points[2].y+_+T-T/5).attr("class","chart-lines")),m&&S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","start").attr("x",20).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+5+T/4}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(a.textWrap,M).attr("cursor","pointer"),m||S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","end").attr("x",function(t){return t.points[0].x+(t.points[3].x-t.points[0].x)/2+130}).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+5}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(a.textWrap,M).attr("cursor","pointer"),h&&!y&&S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",P/2+M).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+8}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),y&&!h&&S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",P/2+M).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+8}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer"),h&&y&&(S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",P/2+M).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+18}).attr("class",function(t){return"text-second "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",P/2+M).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+3}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer")),x){var H=function(t){F.style("opacity",.5),V.style("opacity",.5);var e=/[^ ]*$/.exec(o.select(this).attr("class"))[0];S.selectAll("."+e).style("opacity",1)},q=function(t){F.style("opacity",1),V.style("opacity",1)},F=S.selectAll("polygon");F.on("mouseover",H).on("mouseout",q);var V=S.selectAll("text");V.on("mouseover",H).on("mouseout",q)}if(u&&u.clickToCopyToClipboard){S.selectAll("text").on("click",function(t){var e=t.percent,n=t.result;y?(0,c.default)(n,o.event):h&&(0,c.default)(e,o.event)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){o.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nC+E-40+_?C+E-40+_:t.points[2].y+(t.points[3].y-t.points[0].y)/2+T/4+_}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(a.textWrap,T).attr("cursor","pointer"),h&&!b&&P.selectAll("text.label").data(D).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+T/2+M}).attr("y",C/2+_+10).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),b&&!h&&P.selectAll("text.label").data(D).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+T/2+M}).attr("y",C/2+_+10).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer"),h&&b&&(P.selectAll("text.label").data(D).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+T/2+M}).attr("y",C/2+_+16).attr("class",function(t){return"text-second "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),P.selectAll("text.label").data(D).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+T/2+M}).attr("y",C/2+_-3).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer")),x){var N=function(t){R.style("opacity",.5),H.style("opacity",.5);var e=/[^ ]*$/.exec(o.select(this).attr("class"))[0];P.selectAll("."+e).style("opacity",1)},I=function(t){R.style("opacity",1),H.style("opacity",1)},R=P.selectAll("polygon");R.on("mouseover",N).on("mouseout",I);var H=P.selectAll("text");H.on("mouseover",N).on("mouseout",I)}if(u&&u.clickToCopyToClipboard){P.selectAll("text").on("click",function(t){var e=t.percent,n=t.result;b?(0,c.default)(n,o.event):h&&(0,c.default)(e,o.event)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){o.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nj/2?j/2-5:t.points[0].y+T}]}}),R=N.concat(I);if(S.attr("preserveAspectRatio","xMidYMid meet").attr("viewBox","0 0 "+(P+M+k)+" "+(j+_+E-30)).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+M+","+_+")").selectAll("polygon").data(R).enter().append("polygon").attr("points",function(t){return t.points.map(function(t){return[t.x,t.y].join(",")}).join(" ")}).style("fill",function(t,e){return e>N.length-1?l[t.label]?o.rgb(l[t.label]).darker(1.5):o.rgb(n[e-N.length]).darker(1.5):l[t.label]?l[t.label]:n[e]}).attr("class",function(t){return t.label}).attr("cursor","pointer"),m&&(S.selectAll("line").data(N).enter().append("line").attr("x1",function(t){return t.points[0].x+M-.8*T}).attr("y1",j+E).attr("x2",function(t){return t.points[0].x+M-.8*T}).attr("y2",function(t){return t.points[0].y+_}).attr("class","chart-lines"),S.append("line").attr("x1",P+M+T/4).attr("y1",j+E).attr("x2",N[N.length-1].points[3].x+M+T/4).attr("y2",N[N.length-1].points[3].y+_).attr("class","chart-lines")),m&&S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[0].x+M+.25*C}).attr("y",j+.4*E+_).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(a.textWrap,C).attr("cursor","pointer"),m||S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[0].x+M+.25*C}).attr("y",function(t){return t.points[2].y+C/4>j+E-40?j+E-40+_:t.points[2].y+C/40&&(n=new Date(t)),p[0][e]=n}),p[0][0]="x",(0,o.each)(this.data()[0],function(e,n){n>0&&p.push(t.dataset.selectColumn(n))});var h=i&&i.previous&&i.previous.result||0,v=(i&&i.current&&i.current.result||0)-h,g=0===h?"-":(0,a.prettyNumber)(Math.round(v/h*100)),m="keen-dataviz-metric-green",y="arrow-green";g<0&&(m="keen-dataviz-metric-red",y="arrow-red");var b=c&&l?'
'+l+"
":"",x=u?'
'+u+"
":"",w=document.querySelector(n);w.innerHTML='\n
\n
\n
\n '+b+"\n "+x+'\n
'+g+' %
\n
'+(0,a.prettyNumber)(v)+'
\n
\n
\n
\n
\n
\n
';var _=w.querySelector(".c3-chart");r.default.generate({bindto:_,color:{pattern:["#c3c4cc"]},title:l,legend:{show:!1},data:{x:"x",columns:p,type:"area-spline",selection:{draggable:!1,enabled:!0,multiple:!0}},point:{r:0,focus:{expand:{r:5,enabled:!0}},select:{r:5,enabled:!0}},axis:{y:{show:!1},x:{show:!1}},grid:{x:{show:!1},y:{show:!1}},padding:{left:0,right:0,top:0,bottom:-4},tooltip:d});if(f&&f.clickToCopyToClipboard){var k=document.querySelector(".current-count").innerText;document.querySelector(".keen-dataviz-metric-combo").addEventListener("click",function(t){return(0,s.default)(k,t)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){var t=this.config.container;document.querySelector(t).querySelector(".c3-chart").remove()}}]),t}();e.default=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(i=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);i=!0);}catch(t){r=!0,o=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw o}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(){function t(t,e){for(var n=0;nt?e.value:t},C),z=function(){var t=l[0],e=o.rgb("#00BBDE");return o.color(t)&&(e=o.rgb(t)),e},L=o.scaleLinear().domain([0,o.max(j,function(t){return t.value})]).range([0,1]),D=function(t){var e=L(t),n=z(),i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[255,255,255],n=t[3];return[Math.floor((1-n)*e[0]+n*t[0]+.5),Math.floor((1-n)*e[1]+n*t[1]+.5),Math.floor((1-n)*e[2]+n*t[2]+.5)]}([n.r,n.g,n.b,e]);return"rgb("+i[0]+", "+i[1]+", "+i[2]+")"},N=o.select(E).append("svg").attr("preserveAspectRatio","xMidYMid slice").attr("viewBox","0 0 "+_+" "+k).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+x+","+m+")");if(f){o.select(u).append("input").attr("type","range").attr("class","keen-dataviz-slider"),new a.default(".keen-dataviz-slider",{multiple:!0,min:T,max:O,value:[T,O],onChange:function(t){return function(t){var e=N.selectAll("rect"),n=i(t,2),r=n[0],a=n[1];e.each(function(t,e,n){o.select(n[e]).style("visibility",function(){return t.value>a||t.value\n ";p||(e='\n \n xAxis:\n '+t.x+'\n \n \n yAxis:\n '+t.y+"\n \n "+e+"\n "),U.html('\n \n '+e+"\n
\n ").style("left",o.event.clientX+10+"px").style("top",o.event.clientY+10+"px")}).on("mouseleave",function(){o.select(o.event.target).style("outline","none").style("transform","none"),U.style("opacity",0).style("display","none")}).on("click",function(t){return(0,s.default)(t.value)})}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){this.el().querySelector(".c3-chart").remove()}}]),t}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(i=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);i=!0);}catch(t){r=!0,o=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw o}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=Object.assign||function(t){for(var e=1;eo||t.properties.result\n \n '+t.properties.name+'\n \n \n '+e+"\n \n \n ").style("left",a.event.clientX+10+"px").style("top",a.event.clientY+10+"px")}).on("mouseout",function(t){M.select("#"+t.properties.name.split(" ").join("-").split(".").join("")).style("fill",function(t){return T(t.properties.result)}).style("stroke-width",g),O.style("opacity",0).style("display","none")}),v&&M.selectAll("."+C).style("stroke",m).style("stroke-width",g);var O=a.select(".c3-chart").append("div").style("opacity",0).attr("class","c3-tooltip-container").style("display","none").style("position","fixed");if(u&&u.clickToCopyToClipboard){M.selectAll("."+C).on("click",function(t){var e=t.properties.result;(0,c.default)(e,a.event)})}M.call(d),M.call(d).on("mousedown.zoom",null)})}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){a.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.element,n=t.data,i=document.createElement("dl");i.classList="keen-dataviz-execution-meta",Object.keys(n).length?Object.keys(n).forEach(function(t){var e=document.createElement("dt");e.innerText=t.replace(/_/g," "),e.addEventListener("click",function(t){return s(t)});var r=document.createElement("dd");r.innerText=n[t],r.addEventListener("click",function(t){return s(t)}),i.append(e),i.append(r)}):i.innerText="No execution metadata available";e.append(i)};var i,r=n(1),o=(i=r)&&i.__esModule?i:{default:i};function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"copied",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;setTimeout(function(){t.classList.remove(e)},n)}function s(t){var e=t.target,n=t.target.nodeName,i=void 0;"DD"===n&&(i=e.innerText,e.classList.contains("copied")||(e.classList.add("copied"),a(e))),"DT"===n&&(i=e.nextSibling.innerText,e.nextSibling.classList.contains("copied")||(e.nextSibling.classList.add("copied"),a(e.nextSibling))),(0,o.default)(i)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=a(n(55)),r=a(n(56)),o=a(n(57));function a(t){return t&&t.__esModule?t:{default:t}}e.default={autocollector:i.default,modern:r.default,dracula:o.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#5E77FF","#9C60FE","#F162FE","#FD65B7","#FD6768","#FDB86A","#F2FC6C","#A5FC6E","#71FB85","#73FBD0","#76DDFA","#76f4fa","#bb76fa","#fa76bf"]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#45B2E8","#D9540D","#2CAB72","#2C4BAB","#EDDD02","#E84545","#E845CE","#5FCEC9","#E89F45","#28E43F","#B765C0","#458AE8","#AB2C2C","#AB2C75","#27E5FF","#7168F2","#FF932B","#855D00","#ACE845","#1C91B4"]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#8be9fd","#50fa7b","#ffb86c","#ff79c6","#bd93f9","#ff5555","#f1fa8c"]}}])}); +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("d3"),require("c3"));else if("function"==typeof define&&define.amd)define(["d3","c3"],e);else{var n="object"==typeof exports?e(require("d3"),require("c3")):e(t.d3,t.c3);for(var i in n)("object"==typeof exports?exports:t)[i]=n[i]}}(window,function(t,e){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=21)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.each=function(t,e,n){var i;if(!t)return 0;if(n=n||t,t instanceof Array){for(i=0;i=1e15)return e;return t>=1||t<=-1?(t<0&&(t=-t,n="-"),n+function t(e,n){var e=String(e);var r=e.split(".");if(r.length>1){e=r[0];var o=r[1];2==e.length&&o.length>0?o.length>0?e=e+"."+o.charAt(0):e+="0":1==e.length&&o.length>0&&(e=e+"."+o.charAt(0),o.length>1?e+=o.charAt(1):e+="0")}var a=e.length;e.split(".").length>1&&a--;return a<=3?String(e)+i[n]:t(Number(e)/1e3,n+1)}(t,0)):t.toPrecision(3)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.escapeHtml=function(t){var e,n=""+t,r=i.exec(n);if(!r)return n;var o="",a=0,s=0;for(a=r.index;a]/},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.extend=function(t){for(var e=1;ee&&(o.pop(),c.text(o.join(" ")),o=[r],c=t.append("tspan").attr("x",s).attr("y",l).attr("dy",1.1*++a+0+"em").text(r))})};var i=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(2))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.appendColumn=s,e.appendRow=l;var i,r=n(9),o=(i=r)&&i.__esModule?i:{default:i},a=n(0);function s(t,e){var n=this,i=(Array.prototype.slice.call(arguments,2),void 0!==t?t:null);return"function"==typeof e?(n.matrix[0].push(i),(0,a.each)(n.matrix,function(t,i){var r=void 0;i>0&&(void 0===(r=e.call(n,t,i))&&(r=null),n.matrix[i].push(r))})):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix.length-1?e=e.concat((0,o.default)(n.matrix.length-1-e.length)):(0,a.each)(e,function(t,i){n.matrix.length-10&&(o=n.selectColumn(i),void 0===(a=e.call(n,o,i))&&(a=null),r.push(a))}),n.matrix.push(r)):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix[0].length-1?e=e.concat((0,o.default)(n.matrix[0].length-1-e.length)):(0,a.each)(e,function(t,i){n.matrix[0].length-10&&void 0!==arguments[0]?arguments[0]:{};if(this instanceof t==!1)return new t(e);this.matrix=[["Index"]],this.meta={type:void 0},this.config=e};v.prototype.data=function(t){return arguments.length?(this.matrix=t instanceof Array?t:null,this):this.matrix},v.prototype.set=function(t,e){if(arguments.length<2||t.length<2)throw Error("Incorrect arguments provided for #set method");var n="number"==typeof t[0]?t[0]:this.matrix[0].indexOf(t[0]),r="number"==typeof t[1]?t[1]:s.selectColumn.call(this,0).indexOf(t[1]),o=s.selectColumn.call(this,t[0]),a=s.selectRow.call(this,t[1]);return o.length<1&&(i.appendColumn.call(this,String(t[0])),n=this.matrix[0].length-1),a.length<1&&(i.appendRow.call(this,String(t[1])),r=this.matrix.length-1),this.matrix[r][n]=e,this},v.prototype.type=function(t){return arguments.length?(this.meta.type=t?String(t):void 0,this):this.meta.type},(0,d.extend)(v.prototype,i),(0,d.extend)(v.prototype,r),(0,d.extend)(v.prototype,o),(0,d.extend)(v.prototype,a),(0,d.extend)(v.prototype,s),(0,d.extend)(v.prototype,l),(0,d.extend)(v.prototype,c),(0,d.extend)(v.prototype,u.default),v.parser=(0,f.default)(v),e.default=v},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0);n(5);function r(t,e,n){var r=t.slice(e||0,n?n+1:t.length),o=0;return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||(o+=parseFloat(t))}),o/r.length}function o(t,e,n){var r=t.slice(e||0,n?n+1:t.length),o=[];return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||o.push(parseFloat(t))}),Math.max.apply(Math,o)}function a(t,e,n){var r=t.slice(e||0,n?n+1:t.length),o=[];return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||o.push(parseFloat(t))}),Math.min.apply(Math,o)}function s(t,e,n){var r=t.slice(e||0,n?n+1:t.length),o=0;return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||(o+=parseFloat(t))}),o}var l=function(t){return r(t,1)},c=l,u=function(t){return s(t,1)},d=u,f=function(t){return o(t,1)},p=f,h=function(t){return a(t,1)},v=h,g=function(t){return t[0]},m=g;e.default={average:r,maximum:o,minimum:a,sum:s,getColumnAverage:l,getRowAverage:c,getColumnSum:u,getRowSum:d,getColumnMaximum:f,getRowMaximum:p,getColumnMinimum:h,getRowMinimum:v,getColumnLabel:g,getRowIndex:m}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.flatten=function t(e){var n={};for(var r in e)if(e.hasOwnProperty(r))if("object"==i(e[r])&&null!==e[r]){var o=t(e[r]);for(var a in o)o.hasOwnProperty(a)&&(n[r+"."+a]=o[a])}else n[r]=e[r];return n}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stripHtmlTags=function(t){if("string"!=typeof t)return t;return t.replace(/(<([^>]+)>)/gi,"")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.extendDeep=function t(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},e=t.element,n=t.label,i=void 0===n?"Download":n,r=t.type,a=void 0===r?"json":r,s=t.data;if([].concat(function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1)throw Error("Please provide image quality between 0 and 1");o.default.toBlob(e,{quality:n,bgcolor:i}).then(function(t){(0,a.saveAs)(t,"chart.jpeg")})}n||o.default.toBlob(e).then(function(t){(0,a.saveAs)(t,"chart.png")})};var i,r=n(42),o=(i=r)&&i.__esModule?i:{default:i},a=n(43)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.type,n=t.data,i=["json","csv"],r=e.toLowerCase();if(!i.includes(e))throw new Error("This type is not supported");var o=i[0],a="";"json"===r&&(a="data:text/json;charset=utf-8, "+encodeURIComponent(JSON.stringify(n)));"csv"===r&&(a=function(t){var e="";return t.forEach(function(n,i){n.forEach(function(t,i){e+=String(t).replace(/,/g,""),n.length>i+1&&(e+=",")}),t.length>i+1&&(e+="\n")}),"data:text/csv;charset=utf-8,"+encodeURIComponent(e)}(n),o=r);var s=document.createElement("a");s.setAttribute("href",a),s.setAttribute("download","chart."+o),document.body.appendChild(s),s.click(),document.body.removeChild(s)}},function(t,e,n){(function(e){var n,i,r,o,a;void 0===e&&(this.window||this.global),t.exports=(n=function(t,e){var n=document.createElement(t);return e&&n.classList.add(e),n},i=function(t){return t&&"function"==typeof t},r=function(t,e,n){var i;return function(){if(n=n||this,!i)return t.apply(n,arguments),i=!0,setTimeout(function(){i=!1},e)}},(a=(o=function(t,e){this.plugins=["ruler"],"string"==typeof t&&(t=document.querySelector(t)),this.input=t,this.config=Object.assign({},{type:"single",tooltips:"always",updateThrottle:30,formatTooltip:function(t){return t},classes:{input:"rangeable-input",container:"rangeable-container",vertical:"rangeable-vertical",progress:"rangeable-progress",handle:"rangeable-handle",track:"rangeable-track",multiple:"rangeable-multiple",disabled:"rangeable-disabled",tooltips:"rangeable-tooltips",tooltip:"rangeable-tooltip",visible:"rangeable-tooltips--visible"}},e),this.mouseAxis={x:"clientX",y:"clientY"},this.trackSize={x:"width",y:"height"},this.trackPos={x:"left",y:"top"},this.lastPos=0,this.double="double"===this.config.type||Array.isArray(this.config.value),this.touch="ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version="0.1.6",this.init(),this.onInit()}).prototype).init=function(){if(!this.input.rangeable){var t,e={min:0,max:100,step:1,value:this.input.value};for(t in e)this.input[t]||(this.input[t]=e[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?"y":"x",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},a.render=function(){var t=this,e=this.config,i=e.classes,r=n("div",i.container),o=n("div",i.track),a=n("div",i.progress),s=n("div",i.handle),l=n("div",i.tooltip);if(this.input.tabIndex=-1,this.double){s=[n("div",i.handle),n("div",i.handle)],l=[];for(var c=0;3>c;c++)l[c]=n("div",i.tooltip);s.forEach(function(t,n){t.index=n,a.appendChild(t),t.appendChild(l[n]),t.tabIndex=1,e.controls&&e.controls[n]&&e.controls[n].locked&&!0===e.controls[n].locked&&(t.locked=!0)}),e.vertical&&a.appendChild(s[0]),a.appendChild(l[2]),r.classList.add(i.multiple)}else a.appendChild(s),s.appendChild(l),s.tabIndex=1,e.controls&&e.controls.locked&&!0===e.controls.locked&&(s.locked=!0);if(r.appendChild(o),e.vertical&&r.classList.add(i.vertical),e.size&&(r.style[this.trackSize[this.axis]]=isNaN(e.size)?e.size:e.size+"px"),e.tooltips&&(r.classList.add(i.tooltips),"string"==typeof e.tooltips&&"always"===e.tooltips&&r.classList.add(i.visible)),this.nodes={container:r,track:o,progress:a,handle:s,tooltip:l},this.double){this.nodes.buffer=[];var u=n("div","rangeable-buffers");this.input.values.forEach(function(i,r){var a=n("div","rangeable-buffer");u.appendChild(a),t.nodes.buffer.push(a),o.appendChild(u),e.controls&&(t.limits=[{},{}],void 0!==e.controls[r].min&&(t.limits[r].min=e.controls[r].min),void 0!==e.controls[r].max&&(t.limits[r].max=e.controls[r].max))})}else s=n("div","rangeable-buffer"),o.appendChild(s),this.nodes.buffer=s,o.appendChild(s),e.controls&&(this.limits={},void 0!==e.controls.min&&(this.limits.min=e.controls.min),void 0!==e.controls.max&&(this.limits.max=e.controls.max));this.setLimits(e.controls),o.appendChild(a),this.input.parentNode.insertBefore(r,this.input),r.insertBefore(this.input,o),this.input.classList.add(i.input),this.bind(),this.update()},a.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},a.setValueFromPosition=function(t){var e=this.getLimits(),n=parseFloat(this.input.step),i=this.touch?t.touches[0][this.mouseAxis[this.axis]]:t[this.mouseAxis[this.axis]],r=i-this.rects.container[this.trackPos[this.axis]],o=this.rects.container[this.trackSize[this.axis]];return("mousedown"!==t.type||!(!this.double&&this.nodes.handle.contains(t.target)||this.double&&(this.nodes.handle[0].contains(t.target)||this.nodes.handle[1].contains(t.target))))&&(t=(this.config.vertical?(o-r)/o*100:r/o*100)*(e.max-e.min)/100+e.min,t=Math.ceil(t/n)*n,i>=this.lastPos&&(t-=n),parseFloat(t)!==parseFloat(this.startValue)&&(n=!1,this.double&&(n=this.activeHandle.index),t=this.limit(t,n),void this.setValue(t,n)))},a.start=function(t){return t.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add("dragging"),this.recalculate(),this.activeHandle=this.getHandle(t),!!this.activeHandle&&(this.activeHandle.classList.add("active"),this.setValueFromPosition(t),void(this.touch?(document.addEventListener("touchmove",this.events.move,!1),document.addEventListener("touchend",this.events.stop,!1),document.addEventListener("touchcancel",this.events.stop,!1)):(document.addEventListener("mousemove",this.events.move,!1),document.addEventListener("mouseup",this.events.stop,!1))))},a.move=function(t){this.setValueFromPosition(t),this.lastPos=this.touch?t.touches[0][this.mouseAxis[this.axis]]:t[this.mouseAxis[this.axis]]},a.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove("dragging"),this.onEnd(),this.activeHandle.classList.remove("active"),this.activeHandle=!1,this.touch?(document.removeEventListener("touchmove",this.events.move),document.removeEventListener("touchend",this.events.stop),document.removeEventListener("touchcancel",this.events.stop)):(document.removeEventListener("mousemove",this.events.move),document.removeEventListener("mouseup",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event("change")),this.startValue=null},a.keydown=function(t){var e=this,n=function(n){switch(t.key){case"ArrowRight":case"ArrowUp":e.stepUp(n);break;case"ArrowLeft":case"ArrowDown":e.stepDown(n)}};this.double?this.nodes.handle.forEach(function(t){t===document.activeElement&&n(t.index)}):this.nodes.handle===document.activeElement&&n()},a.stepUp=function(t){var e=parseFloat(this.input.step),n=this.getValue();this.double&&void 0!==t&&(n=n[t]),e=this.limit(parseFloat(n)+e,t),this.setValue(e,t)},a.stepDown=function(t){var e=parseFloat(this.input.step),n=this.getValue();this.double&&void 0!==t&&(n=n[t]),e=this.limit(parseFloat(n)-e,t),this.setValue(e,t)},a.limit=function(t,e){var n=this.input,i=this.getLimits();return t=parseFloat(t),this.double&&void 0!==e?(!e&&t>n.values[1]?t=n.values[1]:0this.limits[1].max?t=this.limits[1].max:tthis.limits[0].max?t=this.limits[0].max:tthis.limits.max?t=this.limits.max:ti.max?t=i.max:ts.right||a.bottoms.bottom),n.container.classList.toggle("combined-tooltip",a),a&&(n.tooltip[2].textContent=o[0]===o[1]?r.call(this,o[0]):r.call(this,o[0])+" - "+r.call(this,o[1]))}}else this.input.value=t,n.tooltip.textContent=r.call(this,t);this.setPosition(t,e),i&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event("input")),this.nativeEvent=!1)},a.native=function(){this.nativeEvent=!0,this.setValue()},a.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},a.setLimits=function(t){var e=this;if(void 0===t)return!1;this.limits||(this.limits=t);var n=function(t,e){void 0!==e.min&&(t.min=e.min),void 0!==e.max&&(t.max=e.max)};this.double?t.forEach(function(t,i){n(e.limits[i],t)}):n(this.limits,t),this.update()},a.setPosition=function(t){if(this.double){t=this.getPosition(this.input.values[0]);var e=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?"bottom":"left"]=t+"px",t=e-t}else t=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=t+"px"},a.getPosition=function(t){void 0===t&&(t=this.input.value);var e=this.getLimits();return(t-e.min)/(e.max-e.min)*this.rects.container[this.trackSize[this.axis]]},a.getHandle=function(t){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var e=this.rects,n=Math.abs(t[this.mouseAxis[this.axis]]-e.handle[0][this.trackPos[this.axis]]);return e=Math.abs(t[this.mouseAxis[this.axis]]-e.handle[1][this.trackPos[this.axis]]),(t=t.target.closest("."+this.config.classes.handle))||(t=n>e?this.nodes.handle[1]:this.nodes.handle[0]),!t.locked&&t},a.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?"touchstart":"mousedown",this.events.start,!1),this.double?this.nodes.handle.forEach(function(t){return t.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},a.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?"touchstart":"mousedown",this.events.start),this.double?this.nodes.handle.forEach(function(t){return t.removeAttribute("tabindex")}):this.nodes.handle.removeAttribute("tabindex"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},a.bind=function(){var t=this;this.events={},"start move stop update reset native keydown".split(" ").forEach(function(e){t.events[e]=t[e].bind(t)}),this.events.scroll=r(this.events.update,this.config.updateThrottle),this.events.resize=r(this.events.update,this.config.updateThrottle),document.addEventListener("scroll",this.events.scroll,!1),window.addEventListener("resize",this.events.resize,!1),document.addEventListener("keydown",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?"touchstart":"mousedown",this.events.start,!1),this.input.addEventListener("input",this.events.native,!1),this.input.form&&this.input.form.addEventListener("reset",this.events.reset,!1)},a.unbind=function(){document.removeEventListener("scroll",this.events.scroll),window.removeEventListener("resize",this.events.resize),document.removeEventListener("keydown",this.events.keydown),this.nodes.container.removeEventListener(this.touch?"touchstart":"mousedown",this.events.start),this.input.removeEventListener("input",this.events.native),this.input.form&&this.input.form.removeEventListener("reset",this.events.reset),this.events=null},a.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},a.onInit=function(){i(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},a.onStart=function(){i(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},a.onChange=function(){i(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},a.onEnd=function(){i(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},o)}).call(this,n(7))},function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.Dataset=e.Dataviz=e.keenGlobals=e.extendKeenGlobalObject=void 0;var i=n(22);Object.defineProperty(e,"Dataviz",{enumerable:!0,get:function(){return i.Dataviz}}),Object.defineProperty(e,"Dataset",{enumerable:!0,get:function(){return i.Dataset}});void 0!==t||("undefined"!=typeof self?self:"undefined"!=typeof window&&window),e.extendKeenGlobalObject=function(t){t.KeenDataviz=i.Dataviz,t.KeenDataset=i.Dataset,t.Keen=t.Keen||{},t.Keen.Dataset=i.Dataset,t.Keen.Dataviz=i.Dataviz};e.keenGlobals=void 0;"undefined"!=typeof webpackKeenGlobals&&(e.keenGlobals=webpackKeenGlobals),e.default=i.Dataviz}).call(this,n(7))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Dataset=e.Dataviz=void 0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=Object.assign||function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};if(this instanceof t==!1)return new t(n);this.c3=s.default,this.d3=a;var i={showDeprecationWarnings:!0,showLoadingSpinner:!1,container:void 0,containerElement:void 0,title:void 0,showTitle:!0,subtitle:void 0,notes:void 0,theme:"keen-dataviz",colors:["#00bbde","#fe6672","#eeb058","#8a8ad6","#ff855c","#00cfbb","#5a9eed","#73d483","#c879bb","#0099b6","#d74d58","#cb9141","#6b6bb6","#d86945","#00aa99","#4281c9","#57b566","#ac5c9e","#27cceb","#ff818b","#f6bf71","#9b9be1","#ff9b79","#26dfcd","#73aff4","#87e096","#d88bcb"],colorMapping:{},ui:{executionMetadata:!0},utils:{clickToCopyToClipboard:!0},indexBy:"timeframe.start",labels:[],labelMapping:{},labelMappingRegExp:void 0,errorMapping:{},showErrorMessages:!0,library:"default",sortGroups:void 0,sortIntervals:void 0,results:void 0,type:void 0,stacked:!1,dateFormat:void 0,legend:{show:!0,position:"right",alignment:"top",label:{textMaxLength:12},pagination:{offset:0,limit:5},tooltip:{show:!0,pointer:!0},sort:void 0},axis:{},color:{},size:{},padding:{top:15},point:{focus:{expand:{enabled:!1}},r:2,show:!0,sensitivity:300},tooltip:{horizontal:!0,format:{}},transition:{},data:{order:null,selection:{enabled:!0,draggable:!0,multiple:!0},onselected:function(t,n){var i=e.view._artifacts.c3.selected().reduce(function(t,e){return t+e.value},0);(0,b.default)(i)}},grid:{y:{show:!0}},partialIntervalIndicator:{show:void 0,className:"partial-interval-indicator"},timezone:"UTC",table:{schema:"static"},renderOnVisible:!1,funnel:{lines:!0,resultValues:!0,percents:{show:!1,countingMethod:"absolute",decimals:0},marginBetweenElements:!1,hover:!0,effect3d:"both-sides",minimalSize:!1},react:!1,range:!1,sparkline:!1,choropleth:{map:"world",borders:{show:!0,size:.5,color:"#000"},showSlider:!1},heatmap:{}};this.config=r({},(0,h.extendDeep)(i,n)),n.palette&&(x.default[n.palette]||console.log("Colors pallete not found",n.palette),this.config.colors=x.default[n.palette].colors),this.config.type&&(this.config.type=P(this.config.type)),this.config.type&&this.config.type.includes("-range")&&(this.config.range=!0,this.config.type=this.config.type.replace("-range",""),this.config.legend.show=!1,this.config.stacking="normal",this.config.labels=["Max","Min"],this.config.colors=[this.config.colors[0],this.config.colors[0]]),this.config.stacking&&(this.config.stacked=!0),this.config.sparkline&&(this.config.legend.show=!1,this.config.axis={x:{show:!1},y:{show:!1}},this.config.grid={x:{show:!1},y:{show:!1}}),this.config.container&&this.el(this.config.container),void 0===n.legend||n.legend||(this.config.legend=r({},n,{show:!1})),n.color&&n.color.pattern&&(this.config.colors=n.color.pattern),this.config.legend&&this.config.legend.tooltip&&!1===this.config.legend.tooltip.show&&void 0===this.config.tooltip.show&&(this.config.tooltip={show:!1}),this.dataset=new o.Dataset(this.config),this.view={_prepared:!1,_rendered:!1,_artifacts:{}},t.visuals.push(this),this.config.showLoadingSpinner&&this.prepare(),this.config.results&&this.render(this.config.results),this.config.firstVisibilityState=document.visibilityState,this.config.utils.clickToCopyToClipboard||(this.config.data.onselected=function(){}),n.data&&n.data.onselected&&(this.config.data.onselected=function(t,i){if(n.data.onselected.bind(null,t,i)(),e.config.utils.clickToCopyToClipboard){var r=e.view._artifacts.c3.selected().reduce(function(t,e){return t+e.value},0);(0,b.default)(r)}})};function k(t){2!==t.data()[0].length||(0,d.default)(t.data()[1][0])?t.dataset.updateRow(0,function(e,n){return n>0&&t.config.labels[n-1]?(0,f.stripHtmlTags)(String(t.config.labels[n-1])):(0,f.stripHtmlTags)(e)}.bind(t)):t.dataset.updateColumn(0,function(e,n){return t.config.labels[n-1]?(0,f.stripHtmlTags)(String(t.config.labels[n-1])):(0,f.stripHtmlTags)(e)}.bind(t))}function E(t){var e=t.datavizInstance,n=t.value;if(e.config.labelMappingRegExp){var i=n;return e.config.labelMappingRegExp.forEach(function(t){t.length>1&&(t[0].test(n)&&(i=t[1]))}),(0,f.stripHtmlTags)(i)}return e.config.labelMapping[n]?(0,f.stripHtmlTags)(String(e.config.labelMapping[n])):(0,f.stripHtmlTags)(n)}function M(t){t.config.labelMappingDimension||(2!==t.data()[0].length||(0,d.default)(t.data()[1][0])?t.config.labelMappingDimension="column":t.config.labelMappingDimension="row"),"row"!==t.config.labelMappingDimension&&"both"!==t.config.labelMappingDimension||t.dataset.updateColumn(0,function(e){return E({datavizInstance:t,value:e})}.bind(t)),"column"!==t.config.labelMappingDimension&&"both"!==t.config.labelMappingDimension||t.dataset.updateRow(0,function(e){return E({datavizInstance:t,value:e})}.bind(t))}function A(t){t.config.sortGroups&&t.data().length>1&&((0,d.default)(t.data()[1][0])?t.dataset.sortColumns(t.config.sortGroups,t.dataset.getColumnSum):t.dataset.sortRows(t.config.sortGroups,t.dataset.getRowSum))}function S(t){t.config.sortIntervals&&t.dataset.sortRows(t.config.sortIntervals)}function P(t){return{areachart:"area",barchart:"horizontal-bar",columnchart:"bar",linechart:"line",piechart:"pie"}[t]||t}function j(t){"undefined"==typeof document&&"undefined"!=typeof window?(null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function t(){document.removeEventListener("DOMContentLoaded",t,!1),document.readyState="complete"},!1),document.readyState="loading"),function t(e){/in/.test(document.readyState)?setTimeout(function(){t(e)},9):e()}(t)):t()}_.libraries={default:{}},"undefined"!=typeof window&&(_.libraries.default=(0,p.default)(_)),_.visuals=[],_.register=function(t,e){_.libraries[t]=_.libraries[t]||{},(0,u.each)(e,function(e,n){_.libraries[t][n]=e})},_.find=function(t){if(!arguments.length)return _.visuals;var e=t.nodeName?t:document.querySelector(t),n=null;return(0,u.each)(_.visuals,function(t){if(e==t.config.container)return n=t,!1}),n},_.prototype.attributes=function(t){if(this.config.showDeprecationWarnings&&console.log(".attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })"),!arguments.length)return this.config;var e=this.config;return(0,u.each)(t,function(t,n){"chartType"===n&&(n="type"),e[n]=t}),this},_.prototype.call=function(t){return t.call(this),this},_.prototype.chartOptions=function(t){return this.config.showDeprecationWarnings&&console.log(".chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })"),arguments.length?(this.config=(0,h.extendDeep)(this.config,t),this):this.config},_.prototype.colors=function(t){return this.config.showDeprecationWarnings&&console.log(".colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })"),arguments.length?(this.config.colors=t instanceof Array?t:[],this):this.config.colors},_.prototype.colorMapping=function(t){this.config.showDeprecationWarnings&&console.log(".colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })");var e=this;return arguments.length?(null===t?this.config.colorMapping={}:"object"===(void 0===t?"undefined":i(t))&&(0,u.each)(t,function(t,n){e.config.colorMapping[n]=t||null}),this):this.config.colorMapping},_.prototype.data=c.default,_.prototype.dateFormat=function(t){return this.config.showDeprecationWarnings&&console.log(".dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })"),arguments.length?(this.config.dateFormat="string"==typeof t||"function"==typeof t?t:void 0,this):this.config.dateFormat},_.prototype.destroy=function(){var t=this.library(),e=this.config.type,n=this.el();return _.libraries[t]&&_.libraries[t][e]&&_.libraries[t][e].destroy.call(this),n&&(n.innerHTML=""),this.view._prepared=!1,this.view._rendered=!1,this.view._artifacts={},this},_.prototype.el=function(t){var e=this;return arguments.length?(j(function(){t&&null!==t?t.nodeName?e.config.containerElement=t:document.querySelector&&(e.config.containerElement=document.querySelector(t)):e.config.containerElement=void 0}),this):this.config.containerElement},_.prototype.height=function(t){return this.config.showDeprecationWarnings&&console.log(".height() is deprecated - use CSS classes"),this},_.prototype.indexBy=function(t){return this.config.showDeprecationWarnings&&console.log(".indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })"),arguments.length?(this.config.indexBy=t?String(t):"timeframe.start",this):this.config.indexBy},_.prototype.labels=function(t){return this.config.showDeprecationWarnings&&console.log(".labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })"),arguments.length?(this.config.labels=t instanceof Array?t:[],k(this),this):this.config.labels},_.prototype.labelMapping=function(t){return this.config.showDeprecationWarnings&&console.log(".labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })"),arguments.length?(null===t?this.config.labelMapping={}:"object"===(void 0===t?"undefined":i(t))&&(0,u.each)(t,function(t,e){this.config.labelMapping[e]=t||null}.bind(this)),M(this),this):this.config.labelMapping},_.prototype.library=function(t){return arguments.length?(this.config.library=t?String(t):null,this):this.config.library},_.prototype.message=function(){if(this.view._rendered&&this.destroy(),this.el()){this.el().innerHTML="";var t=_.libraries.default.message;t.render&&t.render.apply(this,arguments)}return this},_.prototype.notes=function(t){return this.config.showDeprecationWarnings&&console.log(".notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })"),arguments.length?(this.config.notes=t?String(t):null,this):this.config.notes},_.prototype.prepare=function(){var t=this;if(!this.el())throw this.config.container+" not found. A DOM parent element is required to mount the chart.";return j(function(){if(t.view._rendered&&t.destroy(),t.el()){t.el().innerHTML="";var e=_.libraries.default.spinner;e.render&&e.render.call(t),t.view._prepared=!0}}),this},_.prototype.render=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,n=this;if(e){var i=e[0]||e;if(i.query&&i.query.interval&&i.query.timeframe&&"string"==typeof i.query.timeframe&&i.query.timeframe.includes("this_")&&this.config.partialIntervalIndicator&&void 0===this.config.partialIntervalIndicator.show&&(this.config.partialIntervalIndicator.show=!0),Array.isArray(e)){var r=e.map(function(t){return t.query.timeframe});return r.forEach(function(t){if(r.find(function(e){return JSON.stringify(e)!==JSON.stringify(t)})){var e="Timeframes of the queries should be the same";throw console.error(e),e}}),n.data(e[0]).call(function(){var i=e[0];t.dataset.deleteColumn(1);var r=!0,a=!1,s=void 0;try{for(var l,c=e[Symbol.iterator]();!(r=(l=c.next()).done);r=!0){var u=l.value,d=i.query.event_collection+" "+i.query.analysis_type,f=o.Dataset.parser("interval")(u);n.dataset.appendColumn(d,f.selectColumn(1).slice(1))}}catch(t){a=!0,s=t}finally{try{!r&&c.return&&c.return()}finally{if(a)throw s}}}).render()}return n.data(e).render()}(this.config.labelMapping&&Object.keys(this.config.labelMapping).length>0||this.config.labelMappingRegExp&&this.config.labelMappingRegExp.length>0)&&M(n),this.config.labels&&Object.keys(this.config.labels).length>0&&k(n),this.config.sortGroups&&A(n),this.config.sortIntervals&&S(n);var a=_.libraries.default.spinner,s=this.config.library,l=this.config.type,c=this.el();if(!c||void 0===c){var u=this.config.container+" not found. A DOM parent element is required to mount the chart.";throw console.error(u),u}var d=n;return n.config.renderAsPromise&&(d=new Promise(function(e,i){var r=t.config.onrendered;n.config.onrendered=function(){r&&r(),e(n)}})),j(function(){var t=n.execution_metadata&&n.config.ui&&n.config.ui.executionMetadata,e=n.config.ui&&n.config.ui.buttons&&n.config.ui.buttons.download&&n.config.ui.buttons.download.type;if(n.view._prepared&&a.destroy&&a.destroy.apply(n,arguments),c.innerHTML="","undefined"===_.libraries[s]){var i="Incorrect library";throw n.message(i),i}if(void 0===_.libraries[s][l]){var r="Incorrect chart type",o=this.config.errorMapping[r]||r;throw n.message(o),r}if(function(t,e){var n="",i="",r="";"top"!==e.legend.position&&"bottom"!==e.legend.position||(i="c3-chart-100-percent");e.range&&(r="keen-dataviz-range");var o='
',a="horizontal",s="center";["left","center","right"].includes(e.legend.alignment)&&(s=e.legend.alignment);"left"!==e.legend.position&&"right"!==e.legend.position||(a="vertical",["top","middle","bottom"].includes(e.legend.alignment)&&(s=e.legend.alignment));e.legend&&e.legend.show&&(o="top"===e.legend.position||"left"===e.legend.position?'
'+o:o+'
');e.react||(n+='
');e.title&&e.showTitle&&(n+='
'+e.title+"
");e.subtitle&&(n+='
'+e.subtitle+"
");n+='
'+o+"
",e.notes&&(n+='
'+e.notes+"
");e.react||(n+="
");t.innerHTML=n}(c,n.config),e&&(0,m.default)({element:c,data:n.dataset.matrix,type:n.config.ui.buttons.download.type,label:n.config.ui.buttons.download.label}),t&&(0,y.default)({element:c,data:n.execution_metadata}),n.config.renderOnVisible&&"undefined"!=typeof IntersectionObserver){new IntersectionObserver(function(t,e){t.forEach(function(t){t.isIntersecting&&(n.view._rendered||(_.libraries[s][l].render.call(n),n.view._rendered=!0))})}).observe(c)}else{if("hidden"===n.config.firstVisibilityState&&"undefined"!=typeof document){var u=void 0,d=void 0;void 0!==document.hidden?(u="hidden",d="visibilitychange"):void 0!==document.msHidden?(u="msHidden",d="msvisibilitychange"):void 0!==document.webkitHidden&&(u="webkitHidden",d="webkitvisibilitychange");void 0===document.addEventListener&&void 0===u||document.addEventListener(d,function(){!document[u]&&n.view._artifacts.c3&&n.view._artifacts.c3.load(n.dataset.matrix)},{once:!0})}_.libraries[s][l].render.call(n),n.view._rendered=!0}}),d},_.prototype.sortGroups=function(t){return this.config.showDeprecationWarnings&&console.log(".sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })"),arguments.length?(this.config.sortGroups=t?String(t):null,A(this),this):this.config.sortGroups},_.prototype.sortIntervals=function(t){return this.config.showDeprecationWarnings&&console.log(".sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })"),arguments.length?(this.config.sortIntervals=t?String(t):null,S(this),this):this.config.sortIntervals},_.prototype.stacked=function(t){return this.config.showDeprecationWarnings&&console.log(".stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })"),arguments.length?(this.config.stacked=!!t,this):this.config.stacked},_.prototype.theme=function(t){return this.config.showDeprecationWarnings&&console.log(".theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })"),arguments.length?(this.config.theme=t?String(t):null,this):this.config.theme},_.prototype.title=function(t){return this.config.showDeprecationWarnings&&console.log(".title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })"),arguments.length?(this.config.title=t?String(t):null,this):this.config.title},_.prototype.type=function(t){return this.config.showDeprecationWarnings&&console.log(".type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })"),arguments.length?(this.config.type=t?P(t):null,this):this.config.type},_.prototype.update=function(){var t=this.config.library,e=this.config.type,n=this.el();return t&&e&&n&&_.libraries[t][e].update&&_.libraries[t][e].update.apply(this,arguments),this},_.prototype.width=function(t){return this.config.showDeprecationWarnings&&console.log(".width() is deprecated - use CSS classes"),this},_.prototype.exportImage=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.quality,n=void 0===e?0:e,i=t.bgcolor,r=void 0===i?"#fff":i;(0,v.default)({node:this.config.containerElement,quality:n,bgcolor:r})},_.prototype.exportData=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"json";(0,g.default)({data:this.dataset.matrix,type:t})},_.prototype.chartType=_.prototype.type,_.prototype.error=_.prototype.message,_.prototype.parseRawData=_.prototype.data,_.prototype.parseRequest=function(){return this},_.prototype.initialize=function(){return this},_.version=l.default.version,e.default=_},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.deleteColumn=function(t){var e=this,n="number"==typeof t?t:this.matrix[0].indexOf(t);n>-1&&(0,i.each)(e.matrix,function(t,i){e.matrix[i].splice(n,1)});return e},e.deleteRow=function(t){var e="number"==typeof t?t:this.selectColumn(0).indexOf(t);e>-1&&this.matrix.splice(e,1);return this};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.filterColumns=function(t){var e=this,n=[];return(0,i.each)(e.matrix,function(t,e){n.push([])}),(0,i.each)(e.matrix[0],function(r,o){var a=e.selectColumn(o);(0==o||t.call(e,a,o))&&(0,i.each)(a,function(t,e){n[e].push(t)})}),e.data(n),e},e.filterRows=function(t){var e=this,n=[];return(0,i.each)(e.matrix,function(i,r){(0==r||t.call(e,i,r))&&n.push(i)}),e.data(n),e};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.insertColumn=function(t,e,n){var i=this,o=void 0!==e?e:null;"function"==typeof n?(i.matrix[0].splice(t,0,o),(0,r.each)(i.matrix,function(e,r){var o;r>0&&(void 0===(o=n.call(i,e,r))&&(o=null),i.matrix[r].splice(t,0,o))})):(!n||n instanceof Array)&&((n=n||[]).length<=i.matrix.length-1?n=n.concat((0,a.default)(i.matrix.length-1-n.length)):(0,r.each)(n,function(t,e){i.matrix.length-10&&(r=i.selectColumn(e),void 0===(a=n.call(i,r,e))&&(a=null),o.push(a))}),i.matrix.splice(t,0,o)):(!n||n instanceof Array)&&((n=n||[]).length<=i.matrix[0].length-1?n=n.concat((0,a.default)(i.matrix[0].length-1-n.length)):(0,r.each)(n,function(t,e){i.matrix[0].length-1-1&&void 0!==this.matrix[0][n]&&(0,i.each)(this.matrix,function(t,i){e.push(t[n])});return e},e.selectRow=function(t){var e=[],n="number"==typeof t?t:this.selectColumn(0).indexOf(t);n>-1&&void 0!==this.matrix[n]&&(e=this.matrix[n]);return e};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sortColumns=function(t,e){var n=this,i=this.matrix[0].slice(1),o=[],s=e||a.default.getColumnLabel;return(0,r.each)(i,function(t,e){o.push(n.selectColumn(e+1).slice(0))}),o.sort(function(e,i){var r=s.call(n,e)>s.call(n,i);return r?"asc"===t?1:-1:r?0:"asc"===t?-1:1}),(0,r.each)(o,function(t,e){n.deleteColumn(e+1).insertColumn(e+1,t[0],t.slice(1))}),n},e.sortRows=function(t,e){var n=this,i=this.matrix.slice(0,1),r=this.matrix.slice(1),o=e||a.default.getRowIndex;return r.sort(function(e,i){var r=o.call(n,e)>o.call(n,i);return r?"asc"===t?1:-1:r?0:"asc"===t?-1:1}),n.data(i.concat(r)),n};var i,r=n(0),o=n(13),a=(i=o)&&i.__esModule?i:{default:i}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.updateColumn=function(t,e){var n=this,i="number"==typeof t?t:this.matrix[0].indexOf(t);i>-1&&("function"==typeof e?(0,r.each)(n.data(),function(t,r){var o;r>0&&void 0!==(o=e.call(n,t[i],r,t))&&(n.matrix[r][i]=o)}):(!e||e instanceof Array)&&((e=e||[]).length<=n.data().length-1?e=e.concat((0,a.default)(n.data().length-1-e.length)):(0,r.each)(e,function(t,i){n.matrix.length-1-1&&("function"==typeof e?(0,r.each)(n.data()[i],function(t,r){var o=n.selectColumn(r),a=e.call(n,t,r,o);void 0!==a&&(n.matrix[i][r]=a)}):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix[0].length-1?e=e.concat((0,a.default)(n.matrix[0].length-1-e.length)):(0,r.each)(e,function(t,i){n.matrix[0].length-1 stats.json",analyze:"webpack-bundle-analyzer stats.json /dist",version:"npm run build && git add .",postversion:"git push && git push --tags && npm publish",test:"NODE_ENV=test jest","test:watch":"NODE_ENV=test jest --watch"},repository:{type:"git",url:"https://github.com/keen/keen-dataviz.js.git"},bugs:"https://github.com/keen/keen-dataviz.js/issues",author:"Keen.IO (https://keen.io/)",contributors:["Dustin Larimer (https://github.com/dustinlarimer)","Joanne Cheng (https://github.com/joannecheng)","Eric Anderson (https://github.com/aroc)","Joe Wegner (https://github.com/josephwegner)","Sara Falkoff (https://github.com/adamkasprowicz)","Dariusz Łacheta (https://github.com/dariuszlacheta)"],homepage:"https://keen.io",keywords:["d3","c3","Analytics","Stats","Statistics","Visualization","Visualizations","Data Visualization","Chart","Charts","Charting","Svg","Dataviz","Plots","Graphs","Funnels"],dependencies:{c3:"^0.7.2",d3:"^5.11.0","dom-to-image":"^2.6.0","file-saver":"^2.0.1","promise-polyfill":"^8.0.0",rangeable:"^0.1.6"},devDependencies:{autoprefixer:"^8.2.0","babel-loader":"^7.1.4","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0",concurrently:"^3.5.1",cssnano:"^3.10.0",eslint:"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0",jest:"^22.4.3","jest-environment-jsdom-c3":"^2.0.0",nock:"^9.2.6",postcss:"^6.0.21","postcss-cli":"^5.0.0","postcss-color-function":"^4.0.1","postcss-css-variables":"^0.8.1","postcss-cssnext":"^2.4.0","postcss-import":"^8.0.2","postcss-loader":"^2.1.3",precss:"^3.1.2","regenerator-runtime":"^0.11.1","replace-in-file":"^3.4.0","style-loader":"^0.20.3",webpack:"^4.29.0","webpack-bundle-analyzer":"^3.3.2","webpack-cli":"^3.2.1","webpack-dev-server":"^3.3.1","xhr-mock":"^2.3.2"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return arguments.length?t instanceof o.default?(this.dataset=t,this):function(t){var e,n,i,r,l,c,u,d,f=[];n=this.config.indexBy,i=t.metadata||{},l=void 0!==t.query?t.query:{},"funnel"===(l=(0,a.extend)({analysis_type:null,event_collection:null,filters:[],group_by:null,interval:null,timeframe:null,timezone:null},l)).analysis_type?r="funnel":"extraction"===l.analysis_type?r="extraction":"select_unique"===l.analysis_type?l.group_by||l.interval||(r="list"):l.analysis_type&&(l.group_by||l.interval?l.group_by&&!l.interval?l.group_by instanceof Array&&l.group_by.length>1?(r="double-grouped-metric",f.push(l.group_by)):r="grouped-metric":l.interval&&!l.group_by?(r="interval",f.push(n)):l.group_by&&l.interval&&(l.group_by instanceof Array&&l.group_by.length>1?(r="double-grouped-interval",f.push(l.group_by),f.push(n)):(r="grouped-interval",f.push(n))):r="metric");r||("number"==typeof t.result&&(r="metric"),t.result instanceof Array&&t.result.length>0&&(!t.result[0].timeframe||"number"!=typeof t.result[0].value&&null!=t.result[0].value||(r="interval",f.push(n)),"number"==typeof t.result[0].result&&(r="grouped-metric"),"heatmap"===this.config.type&&Object.keys(3===t.result[0]&&"number"==typeof t.result[0].result)&&(r="heatmap-axis"),t.result[0].value instanceof Array&&(r="grouped-interval",f.push(n)),"number"==typeof t.result[0]&&void 0!==t.steps&&(r="funnel",l.steps=t.steps),"string"!=typeof t.result[0]&&"number"!=typeof t.result[0]||void 0!==t.steps||(r="list"),r||(r="extraction")),r||(r="extraction"));void 0===this.config.title&&(u=i.display_name?i.display_name:function(t){var e,n=t.analysis_type?t.analysis_type.replace("_"," "):"";e=n.replace(/\b./g,function(t){return t.toUpperCase()}),t.event_collection&&(e+=" - "+t.event_collection);return e}(l),this.config.title=u);this.config.type||(d=i.visualization&&i.visualization.chart_type?i.visualization.chart_type:function(t){var e=void 0;switch(t){case"metric":e="metric";break;case"interval":e="area";break;case"grouped-metric":case"double-grouped-metric":e="bar";break;case"grouped-interval":case"double-grouped-interval":e="line";break;case"funnel":e="horizontal-bar";break;case"list":case"extraction":default:e="table"}return e}(r),this.config.type=d);c=o.default.parser.apply(this,[r].concat(f)),e=c((0,a.extend)(t,{query:l})),r.indexOf("interval")>-1&&e.updateColumn(0,function(t,e){return new Date(t)});e.updateRow(0,function(t,e){return(0,s.stripHtmlTags)(t)}),this.dataset=e,t.execution_metadata&&(this.execution_metadata=t.execution_metadata);return this}.call(this,t):this.dataset.data()};var i,r=n(12),o=(i=r)&&i.__esModule?i:{default:i},a=n(5),s=n(15)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=Object.assign||function(t){for(var e=1;e12?1e3:250;e=setTimeout(function(){(0,o.each)(t.visuals,function(t){var e=t.view._artifacts.c3;if(e){var n=e.element.parentNode.parentNode.offsetWidth,i=n;if(t.config.legend&&t.config.legend.show&&("left"===t.config.legend.position||"right"===t.config.legend.position)){var r=e.element.nextSibling?e.element.nextSibling.offsetWidth:0;i=n-(e.element.previousSibling?e.element.previousSibling.offsetWidth:0)-r}e.resize({width:i})}})},n)}),function(){var t={message:p.default,metric:h.default,table:v.default,spinner:g.default,funnel:new m.default,"funnel-3d":new y.default,"horizontal-funnel":new b.default,"horizontal-funnel-3d":new x.default,"metric-combo":new w.default,heatmap:new _.default,choropleth:new k.default},e=function(t,e){return parseInt(window.getComputedStyle(t)["padding"+e].replace("px",""))};return(0,o.each)(["area","area-spline","area-step","bar","donut","gauge","line","pie","step","spline","horizontal-area","horizontal-area-spline","horizontal-area-step","horizontal-bar","horizontal-line","horizontal-step","horizontal-spline"],function(n,p){t[n]={render:function(){var t=this,p=function(){var t={bindto:this.el().querySelector("."+this.config.theme+"-rendering .c3-chart"),color:{pattern:this.config.colors},data:{colors:i({},this.config.colorMapping),columns:[],type:this.config.type.replace("horizontal-","")}},n=this.el(),r=n.offsetHeight;if(r-=e(n,"Top")+e(n,"Bottom"),this.config.showTitle){var o=this.el().querySelector(".keen-dataviz-title");r-=o?o.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}if(this.config.subtitle){var s=this.el().querySelector(".keen-dataviz-subtitle");r-=s?s.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}if(this.config.notes){var l=this.el().querySelector(".keen-dataviz-notes");r-=l?l.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}var c=this.el().querySelector(".c3-chart").offsetWidth-(e(n,"Left")+e(n,"Right"));c<0&&(c=0);var u={size:{width:c,height:r>0?r:void 0}};return(0,a.extendDeep)({},u,this.config,t)}.call(this),h=(0,f.calculateSumForPercents)(this.dataset.matrix);if("percent"!==p.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n||(this.dataset.matrix,this.dataset.matrix=[this.dataset.matrix[0]].concat(M((0,f.calculatePercents)(this.dataset.matrix,h))),p.sparkline||(p.axis={y:{padding:{top:0},tick:{format:function(t){return t+"%"}}}})),p.range&&(this.dataset.matrix=[this.dataset.matrix[0]].concat(M((0,d.default)(this.dataset.matrix)))),this.config.clearOnRender&&p.data.columns.length&&this.dataset&&this.dataset.meta){var v=(this.dataset.meta||{}).type,g=0;["interval"].includes(void 0===v?"":v)&&(g=1),p.data.columns.splice(g)}if(1!==this.data()[0].length&&1!==this.data().length){var m=!1;if("gauge"===n?(p.legend.show=!1,p.data.columns=[[this.config.title||this.data()[1][0],this.data()[1][1]]],m=!0):"pie"===n||"donut"===n?p.data.columns=this.data().slice(1):(n.indexOf("horizontal-")>-1&&(p.axis.rotated=n.indexOf("horizontal-")>-1),(0,s.default)(this.data()[1][0])?(p.axis.x=p.axis.x||{},p.axis.x.type="timeseries",p.axis.x.tick=p.axis.x.tick||{format:this.config.dateFormat||(0,l.default)(this.data()[1][0],this.data()[2]?this.data()[2][0]:this.data()[1][0]),culling:{max:5}},p.data.columns[0]=[],(0,o.each)(this.dataset.selectColumn(0),function(t,e){e>0&&(t=new Date(t)),p.data.columns[0][e]=t}),p.data.columns[0][0]="x",p.data.x="x",this.config.stacked&&this.data()[0].length>2&&(p.data.groups=[this.dataset.selectRow(0).slice(1)])):(p.axis.x=p.axis.x||{},p.axis.x.type="category",p.axis.x.categories=this.dataset.selectColumn(0).slice(1),this.config.stacked&&this.data()[0].length>2&&(p.data.groups=[this.dataset.selectRow(0).slice(1)])),2===this.data()[0].length&&(p.legend.show=!1,m=!0),(0,o.each)(this.data()[0],function(t,e){e>0&&p.data.columns.push(this.dataset.selectColumn(e))}.bind(this))),m){var y=this.el().querySelector(".keen-c3-legend");y&&(y.remove(),p.size.width=this.el().querySelector(".c3-chart").offsetWidth),p.legend.show=!1}if(p.partialIntervalIndicator&&p.partialIntervalIndicator.show&&["area","area-spline","area-step","line","spline","step"].indexOf(p.type)>-1){var b=p.data.columns&&p.data.columns[0];if(b&&b.length>1){var x={axis:"x",start:new Date(b[b.length-2]),class:p.partialIntervalIndicator.className};p.regions=[].concat(M(p.regions||[]),[x])}}if(p.tooltip&&!1===p.tooltip.show||!(!0===p.legend.show||p.legend&&p.legend.tooltip&&p.legend.tooltip.show)||(p.tooltip={contents:u.default,format:{title:this.config.tooltip.format.title,value:function(e,i,r,o){var a=function(t,e,n,i){var r=this.config.type;if(!this.view._artifacts.pagination||"gauge"===r)return t;var o=this.view._artifacts.pagination.labels;return o.indexOf(n)>-1?t:void 0}.call(t,e,i,r,o);return t.config.tooltip&&t.config.tooltip.format&&t.config.tooltip.format.value?(a=t.config.tooltip.format.value.call(t,a,i,r,o),"percent"!==p.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n||(a=parseFloat((a/100*h[o]).toFixed(2))),p.range&&"Max"===r&&(a+=t.dataset.matrix[o+1][2]),a):"percent"!==p.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n?(p.range&&"Max"===r&&(a+=t.dataset.matrix[o+1][2]),a):(a=(a/100*h[o]).toFixed(2),parseFloat(a))}}}),!0===p.legend.show){var w=i({},p);w.data.color=function(t,e){var n=this.config.type;if(this.view._artifacts.pagination&&"gauge"!==n){var i=this.view._artifacts.pagination.labels;return e.id&&i.indexOf(e.id)>-1||e&&!e.id&&i.indexOf(e)>-1?t:"donut"===n||"pie"===n?"rgba(0,0,0,.1)":"rgba(0,0,0,.07)"}return t}.bind(this),w.legend.hide=!0,this.view._artifacts.c3=r.default.generate(w),c.default.call(this,i({},p,{onLegendRendered:function(){var n=t.el().querySelector(".keen-c3-legend");n&&("top"===p.legend.position||"bottom"===p.legend.position?(w.size.height-=n.offsetHeight,t.view._artifacts.c3.resize({height:w.size.height})):(0===w.size.width&&(w.size.width=t.el().offsetWidth-e(t.el(),"Left")-e(t.el(),"Right")),w.size.width-=n.offsetWidth,t.view._artifacts.c3.resize({width:w.size.width})))},onPaginated:function(){t.view._artifacts.c3.flush()}}))}else this.view._artifacts.c3=r.default.generate(p)}else{var _="No data to display",k=this.config.errorMapping[_]||_;this.config.showErrorMessages&&this.message(k)}},update:function(){this.render()},destroy:function(){this.view._artifacts.c3&&(this.view._artifacts.c3.destroy(),this.view._artifacts.c3=null)}}}),t}()};var r=E(n(10)),o=n(0),a=(n(5),n(16)),s=E(n(11)),l=E(n(35)),c=E(n(36)),u=E(n(37)),d=E(n(38)),f=n(39),p=E(n(40)),h=E(n(44)),v=E(n(45)),g=E(n(46)),m=E(n(47)),y=E(n(48)),b=E(n(49)),x=E(n(50)),w=E(n(51)),_=E(n(52)),k=E(n(53));function E(t){return t&&t.__esModule?t:{default:t}}function M(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=24192e5?function(t){var e=new Date(t);return i[e.getMonth()]+" "+e.getFullYear()}:n>=864e5?function(t){var e=new Date(t);return i[e.getMonth()]+" "+e.getDate()}:n>=36e5?"%I:%M %p":"%I:%M:%S %p"}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=Object.assign||function(t){for(var e=1;e"+n+"",i.chartPartId=e,i.setAttribute("class","legend-item"),v.append(i);var o=document.createElement("span");o.setAttribute("class","legend-item-color-sample"),o.style.backgroundColor=r.color(i.chartPartId),i.prepend(o);var a=document.createElement("div");i.addEventListener("mouseover",function(e){r.focus(i.chartPartId),l.tooltip.show&&i.chartPartId.length>l.label.textMaxLength&&(a.setAttribute("class","keen-c3-legend-label-overlay keen-c3-legend-position-"+l.position),a.innerHTML=(t.legend.tooltip.pointer?"
":"")+i.chartPartId,i.append(a))}),i.addEventListener("mouseout",function(t){r.revert(),a.remove()}),i.addEventListener("click",function(t){var e=1,n=c.hidden.indexOf(i.chartPartId);n<0?(c.hidden.push(i.chartPartId),e=.35):(c.hidden.splice(n,1),e=1),i.style.opacity=e,r.toggle(i.chartPartId)})}),t.onLegendRendered&&(t.onLegendRendered(),t.onLegendRendered=null)}.call(n,c.labels),c.total>c.limit&&function(){g.innerHTML="",h.innerHTML="",m.innerHTML="";var t=document.createElement("i"),e=document.createElement("i"),n=function(t){if("forward"===t){var e=c.offset+c.limit;return e=0?n:Math.floor(c.total/c.limit)*c.limit};e.addEventListener("click",function(){n("forward"),y(),b()}),t.addEventListener("click",function(){n("backward"),y(),b()}),"left"===l.position||"right"===l.position?(t.setAttribute("class","up"),e.setAttribute("class","down"),g.append(e),g.append(t)):(t.setAttribute("class","left"),e.setAttribute("class","right"),h.append(t),m.append(e))}.call(n),t.onPaginated&&t.onPaginated()}function b(){document.selection&&document.selection.empty?document.selection.empty():window.getSelection&&window.getSelection().removeAllRanges()}m.setAttribute("class","keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right"),"horizontal"===p&&f.append(m),y()};!function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);e.default=t}(n(2));var r,o=n(11),a=(r=o)&&r.__esModule?r:{default:r}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,r){for(var o=void 0,a=void 0,s=this.config.tooltip_format_name||function(t){return t},l=this.config.tooltip_format_title||e,c=this.config.tooltip_format_value||n,u=0;u"+(a||0===a?""+(0,i.escapeHtml)(a)+"":""));var d=s(t[u].name),f=c(t[u].value,t[u].ratio,t[u].id,t[u].index),p=this.levelColor?this.levelColor(t[u].value):r(t[u].id);f&&!isNaN(f)&&(o+="",-1===d.indexOf("__tooltip_ignore_name_field__")&&(o+=""+(0,i.escapeHtml)(d)+""),o+=""+(0,i.escapeHtml)(f)+"",o+="")}return o+""};var i=n(4)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return t.slice(1).map(function(t){return t.map(function(e,n){return"number"==typeof e&&1===n?e-t[n+1]:e})})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.calculateSumForPercents=function(t){var e=[];return t.slice(1).forEach(function(t,n){t.forEach(function(t){if("number"==typeof t){if(!e[n])return e[n]=t,e[n];e[n]+=t}return e[n]})}),e},e.calculatePercents=function(t,e){return t.slice(1).map(function(t,n){return t.map(function(t){return"number"==typeof t?t/e[n]*100:t})})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(4),r=a(n(17)),o=a(n(1));function a(t){return t&&t.__esModule?t:{default:t}}e.default={render:function(t){var e=document.createElement("div"),n=document.createElement("div"),a=document.createElement("span"),s=document.createElement("div"),l=document.createElement("div"),c=document.createElement("div");e.className=this.config.theme+" keen-dataviz-box",n.className=this.config.theme+"-message",s.className=this.config.theme+"-title",s.innerHTML=(0,i.escapeHtml)(this.config.title||""),l.className=this.config.theme+"-subtitle",l.innerHTML=(0,i.escapeHtml)(this.config.subtitle||""),c.className=this.config.theme+"-notes",c.innerHTML=(0,i.escapeHtml)(this.config.notes||""),a.innerHTML=(0,i.escapeHtml)(t)||"",n.appendChild(a),this.config.title&&this.config.showTitle&&e.appendChild(s),this.config.subtitle&&e.appendChild(l),e.appendChild(n),this.config.notes&&e.appendChild(c),this.config.ui&&this.config.ui.buttons&&this.config.ui.buttons.download&&this.config.ui.buttons.download.type&&(0,r.default)({element:this.el(),data:(0,i.escapeHtml)(t)||"",type:this.config.ui.buttons.download.type,label:this.config.ui.buttons.download.label}),this.config.utils&&this.config.utils.clickToCopyToClipboard&&(s.addEventListener("click",function(t){return(0,o.default)(t.target.innerText,t)}),c.addEventListener("click",function(t){return(0,o.default)(t.target.innerText,t)}),a.addEventListener("click",function(t){return(0,o.default)(t.target.innerText,t)})),this.el().innerHTML="",this.el().appendChild(e)},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.event,n=t.type,o=t.data;e.preventDefault();var a=n.toLowerCase();if(!["json","csv","jpg","jpeg","png"].includes(n))throw new Error("This type is not supported");if("png"===a)return void(0,i.default)({node:e.currentTarget.previousElementSibling});if("jpg"===a||"jpeg"===a)return void(0,i.default)({node:e.currentTarget.previousElementSibling,quality:1,bgcolor:"#fff"});"json"===a&&(0,r.default)({type:a,data:o});"csv"===a&&(0,r.default)({type:a,data:o})};var i=o(n(18)),r=o(n(19));function o(t){return t&&t.__esModule?t:{default:t}}},function(t,e,n){!function(e){"use strict";var n=function(){return{escape:function(t){return t.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1")},parseExtension:e,mimeType:function(t){var n=e(t).toLowerCase();return(i="application/font-woff",{woff:i,woff2:i,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml"})[n]||"";var i},dataAsUrl:function(t,e){return"data:"+e+";base64,"+t},isDataUrl:function(t){return-1!==t.search(/^(data:)/)},canvasToBlob:function(t){return t.toBlob?new Promise(function(e){t.toBlob(e)}):function(t){return new Promise(function(e){for(var n=window.atob(t.toDataURL().split(",")[1]),i=n.length,r=new Uint8Array(i),o=0;o'+t+""}).then(function(t){return''+t+""}).then(function(t){return"data:image/svg+xml;charset=utf-8,"+t})}(i,e.width||n.width(t),e.height||n.height(t))})}function c(t,e){return l(t,e).then(n.makeImage).then(n.delay(100)).then(function(i){var r=function(t){var i=document.createElement("canvas");if(i.width=e.width||n.width(t),i.height=e.height||n.height(t),e.bgcolor){var r=i.getContext("2d");r.fillStyle=e.bgcolor,r.fillRect(0,0,i.width,i.height)}return i}(t);return r.getContext("2d").drawImage(i,0,0),r})}function u(t,e,i){if(!i&&e&&!e(t))return Promise.resolve();return Promise.resolve(t).then(r).then(function(n){return o(t,n,e)}).then(function(e){return a(t,e)});function r(t){return t instanceof HTMLCanvasElement?n.makeImage(t.toDataURL()):t.cloneNode(!1)}function o(t,e,i){var r=t.childNodes;return 0===r.length?Promise.resolve(e):function(t,e,n){var i=Promise.resolve();return e.forEach(function(e){i=i.then(function(){return u(e,n)}).then(function(e){e&&t.appendChild(e)})}),i}(e,n.asArray(r),i).then(function(){return e});function o(t,e,n){var i=Promise.resolve();return e.forEach(function(e){i=i.then(function(){return u(e,n)}).then(function(e){e&&t.appendChild(e)})}),i}}function a(t,e){return e instanceof Element?Promise.resolve().then(function(){!function(t,e){t.cssText?e.cssText=t.cssText:function(t,e){n.asArray(t).forEach(function(n){e.setProperty(n,t.getPropertyValue(n),t.getPropertyPriority(n))})}(t,e)}(window.getComputedStyle(t),e.style)}).then(function(){[":before",":after"].forEach(function(i){!function(i){var r=window.getComputedStyle(t,i),o=r.getPropertyValue("content");if(""===o||"none"===o)return;var a=n.uid();e.className=e.className+" "+a;var s=document.createElement("style");s.appendChild(function(t,e,i){var r="."+t+":"+e,o=i.cssText?function(t){var e=t.getPropertyValue("content");return t.cssText+" content: "+e+";"}(i):function(t){return n.asArray(t).map(function(e){return e+": "+t.getPropertyValue(e)+(t.getPropertyPriority(e)?" !important":"")}).join("; ")+";"}(i);return document.createTextNode(r+"{"+o+"}")}(a,i,r)),e.appendChild(s)}(i)})}).then(function(){t instanceof HTMLTextAreaElement&&(e.innerHTML=t.value);t instanceof HTMLInputElement&&e.setAttribute("value",t.value)}).then(function(){if(!(e instanceof SVGElement))return;if(e.setAttribute("xmlns","http://www.w3.org/2000/svg"),!(e instanceof SVGRectElement))return;["width","height"].forEach(function(t){var n=e.getAttribute(t);n&&e.style.setProperty(t,n)})}).then(function(){return e}):e;function i(){function i(t,e){if(t.cssText)e.cssText=t.cssText;else i(t,e);function i(t,e){n.asArray(t).forEach(function(n){e.setProperty(n,t.getPropertyValue(n),t.getPropertyPriority(n))})}}i(window.getComputedStyle(t),e.style)}function r(){function i(i){var r=window.getComputedStyle(t,i),o=r.getPropertyValue("content");if(o===""||o==="none")return;var a=n.uid();e.className=e.className+" "+a;var s=document.createElement("style");function l(t,e,i){var r="."+t+":"+e,o=i.cssText?a(i):s(i);return document.createTextNode(r+"{"+o+"}");function a(t){var e=t.getPropertyValue("content");return t.cssText+" content: "+e+";"}function s(t){return n.asArray(t).map(e).join("; ")+";";function e(e){return e+": "+t.getPropertyValue(e)+(t.getPropertyPriority(e)?" !important":"")}}}s.appendChild(l(a,i,r)),e.appendChild(s)}[":before",":after"].forEach(function(t){i(t)})}function o(){if(t instanceof HTMLTextAreaElement)e.innerHTML=t.value;if(t instanceof HTMLInputElement)e.setAttribute("value",t.value)}function a(){if(!(e instanceof SVGElement))return;if(e.setAttribute("xmlns","http://www.w3.org/2000/svg"),!(e instanceof SVGRectElement))return;["width","height"].forEach(function(t){var n=e.getAttribute(t);if(!n)return;e.style.setProperty(t,n)})}}}function d(t){return r.resolveAll().then(function(e){var n=document.createElement("style");return t.appendChild(n),n.appendChild(document.createTextNode(e)),t})}function f(t){return o.inlineAll(t).then(function(){return t})}t.exports=s}()},function(t,e,n){(function(n){var i,r,o;r=[],void 0===(o="function"==typeof(i=function(){"use strict";function e(t,e,n){var i=new XMLHttpRequest;i.open("GET",t),i.responseType="blob",i.onload=function(){a(i.response,e,n)},i.onerror=function(){console.error("could not download file")},i.send()}function i(t){var e=new XMLHttpRequest;e.open("HEAD",t,!1);try{e.send()}catch(t){}return 200<=e.status&&299>=e.status}function r(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(n){var e=document.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(e)}}var o="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n&&n.global===n?n:void 0,a=o.saveAs||("object"!=typeof window||window!==o?function(){}:"download"in HTMLAnchorElement.prototype?function(t,n,a){var s=o.URL||o.webkitURL,l=document.createElement("a");n=n||t.name||"download",l.download=n,l.rel="noopener","string"==typeof t?(l.href=t,l.origin===location.origin?r(l):i(l.href)?e(t,n,a):r(l,l.target="_blank")):(l.href=s.createObjectURL(t),setTimeout(function(){s.revokeObjectURL(l.href)},4e4),setTimeout(function(){r(l)},0))}:"msSaveOrOpenBlob"in navigator?function(t,n,o){if(n=n||t.name||"download","string"!=typeof t)navigator.msSaveOrOpenBlob(function(t,e){return void 0===e?e={autoBom:!1}:"object"!=typeof e&&(console.warn("Deprecated: Expected third argument to be a object"),e={autoBom:!e}),e.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t}(t,o),n);else if(i(t))e(t,n,o);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){r(a)})}}:function(t,n,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof t)return e(t,n,i);var a="application/octet-stream"===t.type,s=/constructor/i.test(o.HTMLElement)||o.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||a&&s)&&"object"==typeof FileReader){var c=new FileReader;c.onloadend=function(){var t=c.result;t=l?t:t.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=t:location=t,r=null},c.readAsDataURL(t)}else{var u=o.URL||o.webkitURL,d=u.createObjectURL(t);r?r.location=d:location.href=d,r=null,setTimeout(function(){u.revokeObjectURL(d)},4e4)}});o.saveAs=a.saveAs=a,t.exports=a})?i.apply(e,r):i)||(t.exports=o)}).call(this,n(7))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=n(3),o=n(4),a=n(1),s=(i=a)&&i.__esModule?i:{default:i};e.default={render:function(){var t=this.config.colors[0],e=this.config.theme,n=this.config.title,i=this.config.subtitle,a=this.config,l="-",c="",u="",d="",f="",p=void 0,h="",v="",g="",m="",y=this.config,b=y.results,x=y.previousResults,w=y.isExtraction,_=y.comparedProp;if(b&&x&&(h=x?" metric-comparison":"",m=x&&n?"-smaller":"",g=(v=b.result-x.result)>0?"-green":"-red",v=Math.abs(v),t=""),this.data()&&this.data()[1]&&this.data()[1][1]&&"number"==typeof this.data()[1][1]&&(l=this.data()[1][1]),w&&_){var k=function(t,e){var n=t.query,i=t.result,r=[];if("extraction"!==n.analysis_type)throw new Error("Analysis type is not an extraction!");return Array.isArray(i)&&i.forEach(function(t){var i=e.split(".").reduce(function(t,e){return t&&t[e]||null},t),o={query:n,result:i};r.push(o)}),r}(b,_);l=k[0].result,h=(c=k[1].result)?" metric-comparison":"",m=c&&n?"-smaller":"",g=(v=l-c)>0?"-green":"-red",v=Math.abs(v),t=""}if(p=l,void 0!==a.prettyNumber&&!0!==a.prettyNumber||isNaN(parseInt(l))||(p=(0,r.prettyNumber)(l),b&&x&&(v=(0,r.prettyNumber)(v))),a.prefix&&(d=''+a.prefix+""),a.suffix&&(f=''+a.suffix+""),u+='
',u+='
',b&&x&&(u+='
'+(0,o.escapeHtml)(v)+"
"),w&&_&&(l&&c?(u+='
'+(0,o.escapeHtml)(v)+"
",u+=""+c+""):u+="

No data to display

"),u+='
'+d+(0,o.escapeHtml)(p)+f+"
",n&&(u+='
'+(0,o.escapeHtml)(n)+"
"),i&&(u+='
'+(0,o.escapeHtml)(i)+"
"),u+="
",u+="
",this.el().innerHTML=u,this.config.onrendered&&this.config.onrendered(),this.config.utils&&this.config.utils.clickToCopyToClipboard){var E="."+e+"-metric-value"+m;if(document.querySelector(E).addEventListener("click",function(t){return(0,s.default)(t.target.innerText,t)}),b&&x){var M="."+e+"-metric"+g;document.querySelector(M).addEventListener("click",function(t){return(0,s.default)(t.target.innerText,t)})}}},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(i=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);i=!0);}catch(t){r=!0,o=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw o}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=Object.assign||function(t){for(var e=1;e';var M=!0,A=!1,S=void 0;try{for(var P,j=E.entries()[Symbol.iterator]();!(M=(P=j.next()).done);M=!0){var C=P.value,O=r(C,2),T=O[0],z=O[1];m&&z instanceof Date&&(z=m(z));var L=(0,a.escapeHtml)(z);h[T]?n+=""+g[h[T]](L)+"":n+=""+L+""}}catch(t){A=!0,S=t}finally{try{!M&&j.return&&j.return()}finally{if(A)throw S}}n+=""}}catch(t){x=!0,w=t}finally{try{!b&&k.return&&k.return()}finally{if(x)throw w}}if(u>1){n+='';var D=1,N=1===c?1:c-1,I=c===u?u:c+1;for(s.arrows&&(n+='«');D<=u;)n+=''+D+"",D++;s.arrows&&(n+='»'),n+=""}return n}e.default={render:function(){var t=this,e=this.dataset.matrix,n=this.el(),i=this.config.theme,r=this,o="";if(1===e.length&&0===e[0].length){var s="No data to display",d=this.config.errorMapping[s]||s;this.config.showErrorMessages&&this.message(d)}else{o+='
',o+='',o+="",o+="",o+=function(t,e){var n="",i=-1,r=t.config.table,o=r&&r.columns||e[0],s=!0,l=!1,c=void 0;try{for(var u,d=o[Symbol.iterator]();!(s=(u=d.next()).done);s=!0){var f=u.value,p=(0,a.escapeHtml)(f);n+='"}}catch(t){l=!0,c=t}finally{try{!s&&d.return&&d.return()}finally{if(l)throw c}}return n}(r,e),o+="",o+="",o+="",o+=u(r,e),o+="",o+="
'+p+"
",o+="
",n.querySelector("."+i+"-rendering").innerHTML=o,n.querySelectorAll("."+i+"-rendering th").forEach(function(o){o.addEventListener("click",function(o){var a=o.target.getAttribute("order")||"asc",s=o.target.getAttribute("fieldNumber");a="asc"===a?"desc":"asc",o.target.setAttribute("order",a);var l=t.dataset.matrix.shift();t.dataset.matrix.sort(function(t,e){var n="asc"===a?1:-1;if("string"==typeof t[s]){var i=t[s].toUpperCase(),r=e[s].toUpperCase();return ir?1*n:0}return(t[s]-e[s])*n}),t.dataset.matrix.unshift(l),n.querySelector("."+i+"-rendering tbody").innerHTML=u(r,e),f()})});var f=function t(){n.querySelectorAll(".btn").forEach(function(o){o.addEventListener("click",function(o){c=parseInt(o.target.getAttribute("data-page")),n.querySelector("."+i+"-rendering tbody").innerHTML=u(r,e),t()},!0)})};if(f(r,n,i),this.config.onrendered&&this.config.onrendered(),this.config.utils&&this.config.utils.clickToCopyToClipboard){var p="."+i+"-table-dataset";document.querySelector(p).addEventListener("click",function(t){var e=t.target,n=e.nodeName,i=e.innerText;"TD"===n&&(0,l.default)(i,t)})}}},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={render:function(){var t="";this.view._artifacts.spinner={};t+='
',t+='
',t+='
',t+="
",t+="
",this.el().innerHTML=t},update:function(){this.render()},destroy:function(){if(this.view._artifacts.spinner){this.view._artifacts.spinner.interval&&clearInterval(this.view._artifacts.spinner.interval),this.view._artifacts.spinner.radius=0;try{delete this.view._artifacts.spinner}catch(t){this.view._artifacts.spinner=void 0}}this.el().innerHTML=""}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nP/2?P/2-5:t.points[3].x+T,y:"right"===b?t.points[3].y:t.points[3].y+O/1.5}]}}),R=N.concat(I);if(S.attr("preserveAspectRatio","xMidYMid meet").attr("viewBox","0 0 "+(P+M+k)+" "+(j+_+E-30)).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+M+","+_+")").selectAll("polygon").data(R).enter().append("polygon").attr("points",function(t){return t.points.map(function(t){return[t.x,t.y].join(",")}).join(" ")}).style("fill",function(t,e){return e>N.length-1?l[t.label]?o.rgb(l[t.label]).darker(1.5):o.rgb(n[e-N.length]).darker(1.5):l[t.label]?l[t.label]:n[e]}).attr("class",function(t){return t.label}).attr("cursor","pointer"),m&&(S.selectAll("line").data(N).enter().append("line").attr("x1",10).attr("y1",function(t){return t.points[0].y+_-O/5}).attr("x2",function(t,e){return 0===e?t.points[1].x+M:t.points[1].x+M-T}).attr("y2",function(t){return t.points[0].y+_-O/5}).attr("class","chart-lines"),S.append("line").attr("x1",10).attr("y1",N[N.length-1].points[2].y+_+O-O/5).attr("x2",N[N.length-1].points[2].x+M-T).attr("y2",N[N.length-1].points[2].y+_+O-O/5).attr("class","chart-lines")),m&&S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","start").attr("x",20).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+5+O/4}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(a.textWrap,M).attr("cursor","pointer"),m||S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","end").attr("x",function(t){return t.points[0].x+(t.points[3].x-t.points[0].x)/2+130}).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+5}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(a.textWrap,M).attr("cursor","pointer"),h&&!y&&S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",P/2+M).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+8}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),y&&!h&&S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",P/2+M).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+8}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer"),h&&y&&(S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",P/2+M).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+18}).attr("class",function(t){return"text-second "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",P/2+M).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+_+3}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer")),x){var H=function(t){F.style("opacity",.5),V.style("opacity",.5);var e=/[^ ]*$/.exec(o.select(this).attr("class"))[0];S.selectAll("."+e).style("opacity",1)},q=function(t){F.style("opacity",1),V.style("opacity",1)},F=S.selectAll("polygon");F.on("mouseover",H).on("mouseout",q);var V=S.selectAll("text");V.on("mouseover",H).on("mouseout",q)}if(u&&u.clickToCopyToClipboard){S.selectAll("text").on("click",function(t){var e=t.percent,n=t.result;y?(0,c.default)(n,o.event):h&&(0,c.default)(e,o.event)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){o.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nC+E-40+_?C+E-40+_:t.points[2].y+(t.points[3].y-t.points[0].y)/2+O/4+_}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(a.textWrap,O).attr("cursor","pointer"),h&&!b&&P.selectAll("text.label").data(D).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+O/2+M}).attr("y",C/2+_+10).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),b&&!h&&P.selectAll("text.label").data(D).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+O/2+M}).attr("y",C/2+_+10).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer"),h&&b&&(P.selectAll("text.label").data(D).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+O/2+M}).attr("y",C/2+_+16).attr("class",function(t){return"text-second "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),P.selectAll("text.label").data(D).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+O/2+M}).attr("y",C/2+_-3).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer")),x){var N=function(t){R.style("opacity",.5),H.style("opacity",.5);var e=/[^ ]*$/.exec(o.select(this).attr("class"))[0];P.selectAll("."+e).style("opacity",1)},I=function(t){R.style("opacity",1),H.style("opacity",1)},R=P.selectAll("polygon");R.on("mouseover",N).on("mouseout",I);var H=P.selectAll("text");H.on("mouseover",N).on("mouseout",I)}if(u&&u.clickToCopyToClipboard){P.selectAll("text").on("click",function(t){var e=t.percent,n=t.result;b?(0,c.default)(n,o.event):h&&(0,c.default)(e,o.event)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){o.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nj/2?j/2-5:t.points[0].y+O}]}}),R=N.concat(I);if(S.attr("preserveAspectRatio","xMidYMid meet").attr("viewBox","0 0 "+(P+M+k)+" "+(j+_+E-30)).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+M+","+_+")").selectAll("polygon").data(R).enter().append("polygon").attr("points",function(t){return t.points.map(function(t){return[t.x,t.y].join(",")}).join(" ")}).style("fill",function(t,e){return e>N.length-1?l[t.label]?o.rgb(l[t.label]).darker(1.5):o.rgb(n[e-N.length]).darker(1.5):l[t.label]?l[t.label]:n[e]}).attr("class",function(t){return t.label}).attr("cursor","pointer"),m&&(S.selectAll("line").data(N).enter().append("line").attr("x1",function(t){return t.points[0].x+M-.8*O}).attr("y1",j+E).attr("x2",function(t){return t.points[0].x+M-.8*O}).attr("y2",function(t){return t.points[0].y+_}).attr("class","chart-lines"),S.append("line").attr("x1",P+M+O/4).attr("y1",j+E).attr("x2",N[N.length-1].points[3].x+M+O/4).attr("y2",N[N.length-1].points[3].y+_).attr("class","chart-lines")),m&&S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[0].x+M+.25*C}).attr("y",j+.4*E+_).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(a.textWrap,C).attr("cursor","pointer"),m||S.selectAll("text.label").data(N).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[0].x+M+.25*C}).attr("y",function(t){return t.points[2].y+C/4>j+E-40?j+E-40+_:t.points[2].y+C/40&&(n=new Date(t)),p[0][e]=n}),p[0][0]="x",(0,o.each)(this.data()[0],function(e,n){n>0&&p.push(t.dataset.selectColumn(n))});var h=i&&i.previous&&i.previous.result||0,v=(i&&i.current&&i.current.result||0)-h,g=0===h?"-":(0,a.prettyNumber)(Math.round(v/h*100)),m="keen-dataviz-metric-green",y="arrow-green";g<0&&(m="keen-dataviz-metric-red",y="arrow-red");var b=c&&l?'
'+l+"
":"",x=u?'
'+u+"
":"",w=document.querySelector(n);w.innerHTML='\n
\n
\n
\n '+b+"\n "+x+'\n
'+g+' %
\n
'+(0,a.prettyNumber)(v)+'
\n
\n
\n
\n
\n
\n
';var _=w.querySelector(".c3-chart");r.default.generate({bindto:_,color:{pattern:["#c3c4cc"]},title:l,legend:{show:!1},data:{x:"x",columns:p,type:"area-spline",selection:{draggable:!1,enabled:!0,multiple:!0}},point:{r:0,focus:{expand:{r:5,enabled:!0}},select:{r:5,enabled:!0}},axis:{y:{show:!1},x:{show:!1}},grid:{x:{show:!1},y:{show:!1}},padding:{left:0,right:0,top:0,bottom:-4},tooltip:d});if(f&&f.clickToCopyToClipboard){var k=document.querySelector(".current-count").innerText;document.querySelector(".keen-dataviz-metric-combo").addEventListener("click",function(t){return(0,s.default)(k,t)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){var t=this.config.container;document.querySelector(t).querySelector(".c3-chart").remove()}}]),t}();e.default=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(i=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);i=!0);}catch(t){r=!0,o=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw o}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(){function t(t,e){for(var n=0;nt?e.value:t},C),z=function(){var t=l[0],e=o.rgb("#00BBDE");return o.color(t)&&(e=o.rgb(t)),e},L=o.scaleLinear().domain([0,o.max(j,function(t){return t.value})]).range([0,1]),D=function(t){var e=L(t),n=z(),i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[255,255,255],n=t[3];return[Math.floor((1-n)*e[0]+n*t[0]+.5),Math.floor((1-n)*e[1]+n*t[1]+.5),Math.floor((1-n)*e[2]+n*t[2]+.5)]}([n.r,n.g,n.b,e]);return"rgb("+i[0]+", "+i[1]+", "+i[2]+")"},N=o.select(E).append("svg").attr("preserveAspectRatio","xMidYMid slice").attr("viewBox","0 0 "+_+" "+k).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+x+","+m+")");if(f){o.select(u).append("input").attr("type","range").attr("class","keen-dataviz-slider"),new a.default(".keen-dataviz-slider",{multiple:!0,min:O,max:T,value:[O,T],onChange:function(t){return function(t){var e=N.selectAll("rect"),n=i(t,2),r=n[0],a=n[1];e.each(function(t,e,n){o.select(n[e]).style("visibility",function(){return t.value>a||t.value\n ";p||(e='\n \n xAxis:\n '+t.x+'\n \n \n yAxis:\n '+t.y+"\n \n "+e+"\n "),U.html('\n \n '+e+"\n
\n ").style("left",o.event.clientX+10+"px").style("top",o.event.clientY+10+"px")}).on("mouseleave",function(){o.select(o.event.target).style("outline","none").style("transform","none"),U.style("opacity",0).style("display","none")}).on("click",function(t){return(0,s.default)(t.value)})}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){this.el().querySelector(".c3-chart").remove()}}]),t}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(i=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);i=!0);}catch(t){r=!0,o=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw o}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=Object.assign||function(t){for(var e=1;eo||t.properties.result\n \n '+t.properties.name+'\n \n \n '+e+"\n \n \n ").style("left",a.event.clientX+10+"px").style("top",a.event.clientY+10+"px")}).on("mouseout",function(t){M.select("#"+t.properties.name.split(" ").join("-").split(".").join("")).style("fill",function(t){return O(t.properties.result)}).style("stroke-width",g),T.style("opacity",0).style("display","none")}),v&&M.selectAll("."+C).style("stroke",m).style("stroke-width",g);var T=a.select(".c3-chart").append("div").style("opacity",0).attr("class","c3-tooltip-container").style("display","none").style("position","fixed");if(u&&u.clickToCopyToClipboard){M.selectAll("."+C).on("click",function(t){var e=t.properties.result;(0,c.default)(e,a.event)})}M.call(d),M.call(d).on("mousedown.zoom",null)})}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){a.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.element,n=t.data,i=document.createElement("dl");i.classList="keen-dataviz-execution-meta",Object.keys(n).length?Object.keys(n).forEach(function(t){var e=document.createElement("dt");e.innerText=t.replace(/_/g," "),e.addEventListener("click",function(t){return s(t)});var r=document.createElement("dd");r.innerText=n[t],r.addEventListener("click",function(t){return s(t)}),i.append(e),i.append(r)}):i.innerText="No execution metadata available";e.append(i)};var i,r=n(1),o=(i=r)&&i.__esModule?i:{default:i};function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"copied",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;setTimeout(function(){t.classList.remove(e)},n)}function s(t){var e=t.target,n=t.target.nodeName,i=void 0;"DD"===n&&(i=e.innerText,e.classList.contains("copied")||(e.classList.add("copied"),a(e))),"DT"===n&&(i=e.nextSibling.innerText,e.nextSibling.classList.contains("copied")||(e.nextSibling.classList.add("copied"),a(e.nextSibling))),(0,o.default)(i)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=a(n(56)),r=a(n(57)),o=a(n(58));function a(t){return t&&t.__esModule?t:{default:t}}e.default={autocollector:i.default,modern:r.default,dracula:o.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#5E77FF","#9C60FE","#F162FE","#FD65B7","#FD6768","#FDB86A","#F2FC6C","#A5FC6E","#71FB85","#73FBD0","#76DDFA","#76f4fa","#bb76fa","#fa76bf"]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#45B2E8","#D9540D","#2CAB72","#2C4BAB","#EDDD02","#E84545","#E845CE","#5FCEC9","#E89F45","#28E43F","#B765C0","#458AE8","#AB2C2C","#AB2C75","#27E5FF","#7168F2","#FF932B","#855D00","#ACE845","#1C91B4"]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#8be9fd","#50fa7b","#ffb86c","#ff79c6","#bd93f9","#ff5555","#f1fa8c"]}}])}); //# sourceMappingURL=keen-dataviz.min.js.map \ No newline at end of file diff --git a/dist/external_d3_c3/keen-dataviz.min.js.map b/dist/external_d3_c3/keen-dataviz.min.js.map index f7a876a..02a0f76 100644 --- a/dist/external_d3_c3/keen-dataviz.min.js.map +++ b/dist/external_d3_c3/keen-dataviz.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./lib/utils/each.js","webpack:///./lib/utils/copy-to-clipboard.js","webpack:///external \"d3\"","webpack:///./lib/utils/pretty-number.js","webpack:///./lib/utils/escape-html.js","webpack:///./lib/utils/extend.js","webpack:///./lib/utils/svg-text-wrap.js","webpack:///(webpack)/buildin/global.js","webpack:///./lib/dataset/modifiers/append.js","webpack:///./lib/dataset/utils/create-null-list.js","webpack:///external \"c3\"","webpack:///./lib/utils/assert-date-string.js","webpack:///./lib/dataset/index.js","webpack:///./lib/dataset/utils/analyses.js","webpack:///./lib/utils/strip-html-tags.js","webpack:///./lib/utils/extend-deep.js","webpack:///./lib/utils/render-download-btn.js","webpack:///./lib/utils/export-svg.js","webpack:///./lib/utils/export-data.js","webpack:///./node_modules/rangeable/dist/rangeable.min.js","webpack:///./lib/browser.js","webpack:///./lib/index.js","webpack:///./lib/dataset/modifiers/delete.js","webpack:///./lib/dataset/modifiers/filter.js","webpack:///./lib/dataset/modifiers/insert.js","webpack:///./lib/dataset/modifiers/select.js","webpack:///./lib/dataset/modifiers/sort.js","webpack:///./lib/dataset/modifiers/update.js","webpack:///./lib/dataset/utils/parsers.js","webpack:///./lib/dataset/utils/flatten.js","webpack:///./lib/dataset/utils/object.js","webpack:///./lib/data.js","webpack:///./lib/libraries/index.js","webpack:///./lib/libraries/c3/extensions/default-date-format.js","webpack:///./lib/libraries/c3/extensions/paginating-legend.js","webpack:///./lib/libraries/c3/extensions/tooltip-contents.js","webpack:///./lib/dataset/utils/calculate-range.js","webpack:///./lib/dataset/utils/calculate-percents.js","webpack:///./lib/libraries/default/message.js","webpack:///./lib/utils/download-results.js","webpack:///./node_modules/dom-to-image/src/dom-to-image.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./lib/libraries/default/metric.js","webpack:///./lib/libraries/default/table.js","webpack:///./lib/libraries/default/spinner.js","webpack:///./lib/libraries/default/funnel.js","webpack:///./lib/libraries/default/funnel-3d.js","webpack:///./lib/libraries/default/horizontal-funnel.js","webpack:///./lib/libraries/default/horizontal-funnel-3d.js","webpack:///./lib/libraries/default/metric-combo.js","webpack:///./lib/libraries/default/heatmap.js","webpack:///./lib/libraries/default/choropleth.js","webpack:///./lib/utils/render-execution-metadata.js","webpack:///./lib/palettes/index.js","webpack:///./lib/palettes/autocollector.js","webpack:///./lib/palettes/modern.js","webpack:///./lib/palettes/dracula.js"],"names":["root","factory","exports","module","require","define","amd","a","i","window","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__10__","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","each","cb","Array","length","event","placeholder","document","createElement","body","appendChild","select","execCommand","removeChild","notification","style","padding","backgroundColor","fontSize","position","top","pageY","left","pageX","zIndex","opacity","transition","innerText","addEventListener","e","tooltip","stickTooltip","setTimeout","prettyNumber","input","sciNo","Number","toPrecision","prefix","suffixes","String","Math","abs","recurse","iteration","split","rhs","charAt","numNumerals","escapeHtml","string","escape","str","match","matchHtmlRegExp","exec","html","index","lastIndex","charCodeAt","substring","extend","target","arguments","prop","textWrap","text","width","d3","this","words","reverse","word","line","lineNumber","x","attr","y","tspan","append","dy","pop","push","join","node","getComputedTextLength","g","Function","appendColumn","appendRow","_createNullList","_each","self","label","slice","undefined","matrix","row","cell","concat","_createNullList2","default","newRow","col","selectColumn","len","list","testObject","getTime","isNaN","testString","test","_typeof","del","filter","insert","sort","update","_extend","Dataset","config","meta","type","data","arr","set","coords","Error","colIndex","indexOf","rowIndex","colResult","rowResult","selectRow","analyses","parser","_parsers2","average","start","end","sum","val","parseFloat","maximum","nums","max","apply","minimum","min","getColumnAverage","getRowAverage","getColumnSum","getRowSum","getColumnMaximum","getRowMaximum","getColumnMinimum","getRowMinimum","getColumnLabel","getRowIndex","stripHtmlTags","inputString","replace","extendDeep","_ref","element","_ref$label","_ref$type","_toConsumableArray","parentNode","children","find","child","className","button","_downloadResults2","insertBefore","nextSibling","_downloadResults","obj","quality","bgcolor","domtoimage","toBlob","then","blob","_fileSaver","saveAs","_domToImage","supportedFormats","format","toLowerCase","includes","fileFormat","content","encodeURIComponent","JSON","stringify","csvContent","forEach","j","generateCsvContent","htmlElement","setAttribute","fileName","click","global","q","u","classList","add","v","plugins","querySelector","assign","tooltips","updateThrottle","formatTooltip","classes","container","vertical","progress","handle","track","multiple","disabled","visible","mouseAxis","trackSize","trackPos","lastPos","double","isArray","touch","DocumentTouch","version","init","onInit","rangeable","step","axis","values","defaultValues","defaultValue","render","initialised","w","z","tabIndex","A","C","D","controls","locked","size","nodes","buffer","B","E","limits","setLimits","reset","setValue","onEnd","setValueFromPosition","getLimits","touches","rects","contains","ceil","startValue","activeHandle","limit","preventDefault","getValue","onStart","recalculate","getHandle","events","move","stop","stopValue","remove","removeEventListener","dispatchEvent","Event","keydown","stepUp","stepDown","activeElement","toFixed","accuracy","getBoundingClientRect","nativeEvent","textContent","right","bottom","toggle","setPosition","onChange","native","getPosition","closest","enable","disable","removeAttribute","scroll","resize","form","unbind","destroy","replaceChild","_index","Dataviz","extendKeenGlobalObject","env","KeenDataviz","KeenDataset","Keen","keenGlobals","webpackKeenGlobals","_dataset","_stripHtmlTags","_extendDeep","_this","options","c3","defaultOptions","showDeprecationWarnings","showLoadingSpinner","containerElement","title","showTitle","subtitle","notes","theme","colors","colorMapping","ui","executionMetadata","utils","clickToCopyToClipboard","indexBy","labels","labelMapping","labelMappingRegExp","errorMapping","showErrorMessages","library","sortGroups","sortIntervals","results","stacked","dateFormat","legend","show","alignment","textMaxLength","pagination","offset","pointer","color","point","focus","expand","enabled","sensitivity","horizontal","order","selection","draggable","onselected","view","_artifacts","selected","reduce","prev","curr","_copyToClipboard2","grid","partialIntervalIndicator","timezone","table","schema","renderOnVisible","funnel","lines","resultValues","percents","countingMethod","decimals","marginBetweenElements","hover","effect3d","minimalSize","react","range","sparkline","choropleth","map","borders","showSlider","heatmap","_extends","palette","palettes","console","log","convertChartTypes","stacking","el","pattern","dataset","_prepared","_rendered","visuals","prepare","firstVisibilityState","visibilityState","callback","setLabels","datavizInstance","_assertDateString2","updateRow","updateColumn","mapLabelsExec","valueAfterMatching","regExpAndLabel","mapLabels","labelMappingDimension","sortColumns","sortRows","areachart","barchart","columnchart","linechart","piechart","domReady","fn","readyState","DOMContentLoaded","testDom","libraries","_libraries2","register","actions","method","nodeName","visual","attributes","chartOptions","innerHTML","height","num","message","loader","spinner","_this2","firstResult","query","interval","timeframe","timeframes","resultItem","resultTimeframe","timeframeItem","msg","error","deleteColumn","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","iterator","next","done","result","event_collection","analysis_type","ds2","err","return","keys","returnValue","renderAsPromise","Promise","resolve","reject","customCallback","onrendered","shouldRenderExecutionMetadata","execution_metadata","shouldRenderDownloadBtn","buttons","download","mappedMsg","chart100percentWide","rangeChart","align","legendItemsAlign","buildDomWrapper","_renderDownloadBtn2","_renderExecutionMetadata2","IntersectionObserver","observer","isIntersecting","observe","hidden","visibilityChange","msHidden","webkitHidden","load","once","bool","exportImage","_ref2","_ref2$quality","_ref2$bgcolor","_exportSvg2","exportData","_exportData2","chartType","parseRawData","parseRequest","initialize","pkg","splice","deleteRow","filterColumns","clone","selectedColumn","ri","filterRows","insertColumn","insertRow","_append","comp","head","cols","analysesUtilMethods","b","op","_analyses","lib","parsers","_flatten","_object","metric","res","record","grouped-metric","grouped-interval","group","double-grouped-metric","rowLabel","double-grouped-interval","steps","extraction","datasetExtraction","names","flatten","tableConfig","resultKeys","keyName","columns","iNames","valueAtDeepKey","heatmap-axis","heatmapDataset","objKeys","ob","toReturn","flatObject","is","response","selectedParser","parserArgs","metadata","filters","group_by","display_name","analysis","toUpperCase","getDefaultTitle","visualization","chart_type","getDefaultType","Date","timer","onresize","attachEvent","bindResizeListener","clearTimeout","delay","chart","c3Chart","parentWidth","offsetWidth","nextSiblingWidth","previousSibling","types","Funnel","funnel-3d","Funnel3d","horizontal-funnel","HorizontalFunnel","horizontal-funnel-3d","HorizontalFunnel3d","metric-combo","MetricCombo","Heatmap","Choropleth","getPaddings","paddingName","parseInt","getComputedStyle","ENFORCED_OPTIONS","bindto","renderingElement","offsetHeight","titleElement","subtitleElement","notesElement","DEFAULT_OPTIONS","sumArray","_calculatePercents","calculateSumForPercents","calculatePercents","tick","_calculateRange2","clearOnRender","_datasetMeta$type","spliceFrom","removeLegend","rotated","_defaultDateFormat2","culling","groups","categories","legendElement","partialResultsRegion","class","regions","contents","c3TooltipContents","ratio","id","valueFormatted","scope","c3options","hide","generate","c3PaginatingLegend","onLegendRendered","onPaginated","flush","defineC3","startDate","endDate","timeDiff","months","ms","date","getMonth","getFullYear","getDate","domNode","legendConfig","round","total","dataColumnsSorted","column","columnData","item","paginateHorizontalLeftElement","legendItemsElement","paginateVerticalElement","paginateHorizontalRightElement","paginateData","labelShortened","legendItem","chartPartId","legendItemColorSample","prepend","tooltipElement","revert","isHidden","arrowUp","arrowDown","paginate","direction","diff","floor","clearSelectedText","empty","getSelection","removeAllRanges","_assertDateString","defaultTitleFormat","defaultValueFormat","nameFormat","tooltip_format_name","titleFormat","tooltip_format_title","valueFormat","tooltip_format_value","CLASS","_escapeHtml","levelColor","tooltipName","outer","inner","titleContainer","subtitleContainer","notesContainer","currentTarget","previousElementSibling","util","parseExtension","mimeType","url","extension","WOFF","woff","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","svg","dataAsUrl","isDataUrl","search","canvasToBlob","canvas","binaryString","atob","toDataURL","binaryArray","Uint8Array","Blob","resolveUrl","baseUrl","doc","implementation","createHTMLDocument","base","href","getAndEncode","TIMEOUT","impl","cacheBust","request","XMLHttpRequest","onreadystatechange","status","fail","encoder","FileReader","onloadend","readAsDataURL","ontimeout","responseType","timeout","open","send","imagePlaceholder","uid","random","pow","toString","arg","asArray","arrayLike","array","escapeXhtml","makeImage","uri","image","Image","onload","onerror","src","leftBorder","px","rightBorder","scrollWidth","topBorder","bottomBorder","scrollHeight","styleProperty","getPropertyValue","newUtil","inliner","URL_REGEX","inlineAll","shouldProcess","readUrls","urls","inline","dataUrl","RegExp","urlAsRegex","newInliner","fontFaces","resolveAll","readAll","webFonts","all","webFont","cssStrings","styleSheets","cssRules","sheet","rule","CSSRule","FONT_FACE_RULE","rules","newWebFont","webFontRule","parentStyleSheet","cssText","newFontFaces","images","Element","background","inlined","setProperty","getPropertyPriority","inlineBackground","HTMLImageElement","newImage","childNodes","newImages","toSvg","toPng","draw","toJpeg","toPixelData","getContext","getImageData","copyOptions","HTMLCanvasElement","cloneNode","original","parent","childClone","cloneChildrenInOrder","cloneChildren","source","copyProperties","styleElement","selector","formatCssText","formatCssProperties","createTextNode","formatPseudoElementStyle","clonePseudoElement","HTMLTextAreaElement","HTMLInputElement","SVGElement","SVGRectElement","attribute","getAttribute","processClone","embedFonts","inlineImages","XMLSerializer","serializeToString","xhtml","foreignObject","makeSvgDataUri","ctx","fillStyle","fillRect","newCanvas","drawImage","makeNodeCopy","copyStyle","cloneStyle","clonePseudoElements","formatProperty","copyUserInput","fixSvg","styleNode","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","MouseEvent","createEvent","initMouseEvent","f","HTMLAnchorElement","h","URL","webkitURL","rel","origin","location","createObjectURL","revokeObjectURL","navigator","msSaveOrOpenBlob","autoBom","warn","HTMLElement","safari","userAgent","k","_prettyNumber","_copyToClipboard","opts","prevValue","suffix","formattedNum","flexDifferenceStyle","resultDifference","differenceStyle","smallerValue","_config","previousResults","isExtraction","comparedProp","formattedResult","itemProp","acc","formatExtractionData","resultClassName","previousResultsClassName","currentPage","_generateTableRows","customConfig","page","arrows","datasetPaginated","pages","columnsArray","colNamesToMap","_datavizInstance$conf","mapValues","mapDates","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","entries","_slicedToArray","rowColValue","rowColValueEscaped","pageNumber","prevPage","nextPage","fieldNumber","columnNames","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","colName","colNameEscaped","_generateTableHeader","querySelectorAll","sortOrder","first","shift","sortOrderNumber","nameA","nameB","unshift","attachBtnEventListeners","btn","tableClass","_e$target","clearInterval","radius","_svgTextWrap","_config$funnel","_config$funnel$percen","marginBetweenSteps","margin","yMarginElement","funnelContainer","svgWidth","svgHeight","elemHeight","prevElemWidth","percent","minimalSizeStep","polygons","newPoints","points","selectAll","enter","handleMouseOver","polygonsHover","labelHover","thisLabel","handleMouseOut","on","shadowCut","polygonsShadows","polygons3d","rgb","darker","xMarginElement","elemWidth","prevElemHeight","metricResults","prevResult","previous","count","current","percentDifference","labelClass","iconClass","containerTitle","containerSubtitle","chartRoot","currentCount","timeFormat","_config$heatmap","simpleTooltip","heatmapContainer","containerWidth","containerHeight","chartContainer","xLabel","Set","yLabel","formattedData","timestamp","parse","refValue","minRange","maxRange","getColor","baseColor","getColorAlpha","scaleLinear","domain","getTileColor","alpha","solidColor","bg","convertRGBAtoRGB","Rangeable","_data","handleSliderChange","containerToString","customStyle","scriptRef","getAxisLabelRatio","labelSize","xAxis","scaleBand","axisBottom","tickSize","yAxis","axisLeft","chartTooltip","bandwidth","raise","tooltipContent","clientX","clientY","_config$choropleth","_config$choropleth$bo","choroplethContainer","heightChanges","onlyValues","minVal","maxVal","lightColor","hsl","brighter","darkColor","ramp","json","zoom","scaleExtent","translateExtent","elementName","transform","projection","geoMercator","fitSize","geoAlbersUsa","scale","path","geoPath","usData","features","theOne","properties","dataList","dt","handleCopyToClipboard","dd","removeClassWithTimeOut","autocollector","modern","dracula"],"mappings":"CAAA,SAAAA,EAAAC,GACA,oBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,EAAAG,QAAA,MAAAA,QAAA,YACA,sBAAAC,eAAAC,IACAD,OAAA,YAAAJ,OACA,CACA,IAAAM,EAAA,iBAAAL,QAAAD,EAAAG,QAAA,MAAAA,QAAA,OAAAH,EAAAD,EAAA,GAAAA,EAAA,IACA,QAAAQ,KAAAD,GAAA,iBAAAL,gBAAAF,GAAAQ,GAAAD,EAAAC,IAPA,CASCC,OAAA,SAAAC,EAAAC,GACD,mBCTA,IAAAC,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAZ,QAGA,IAAAC,EAAAS,EAAAE,GAAA,CACAN,EAAAM,EACAC,GAAA,EACAb,QAAA,IAUA,OANAc,EAAAF,GAAAG,KAAAd,EAAAD,QAAAC,IAAAD,QAAAW,GAGAV,EAAAY,GAAA,EAGAZ,EAAAD,QA0DA,OArDAW,EAAAK,EAAAF,EAGAH,EAAAM,EAAAP,EAGAC,EAAAO,EAAA,SAAAlB,EAAAmB,EAAAC,GACAT,EAAAU,EAAArB,EAAAmB,IACAG,OAAAC,eAAAvB,EAAAmB,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CT,EAAAe,EAAA,SAAA1B,GACA,oBAAA2B,eAAAC,aACAN,OAAAC,eAAAvB,EAAA2B,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAvB,EAAA,cAAiD6B,OAAA,KAQjDlB,EAAAmB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAAlB,EAAAkB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFAvB,EAAAe,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAAlB,EAAAO,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAtB,EAAA0B,EAAA,SAAApC,GACA,IAAAmB,EAAAnB,KAAA+B,WACA,WAA2B,OAAA/B,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAU,EAAAO,EAAAE,EAAA,IAAAA,GACAA,GAIAT,EAAAU,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD5B,EAAA+B,EAAA,GAIA/B,IAAAgC,EAAA,sFClFgBC,KAAT,SAAcvB,EAAGwB,EAAIF,GAC1B,IAAIN,EACJ,IAAKhB,EACH,OAAO,EAGT,GADAsB,EAAKA,GAAItB,EACLA,aAAayB,OAEf,IAAKT,EAAI,EAAGA,EAAIhB,EAAE0B,OAAQV,IACxB,IAA+B,IAA3BQ,EAAG9B,KAAK4B,EAAGtB,EAAEgB,GAAIA,EAAGhB,GACtB,OAAO,OAKX,IAAKgB,KAAKhB,EACR,GAAIA,EAAEoB,eAAeJ,KACY,IAA3BQ,EAAG9B,KAAK4B,EAAGtB,EAAEgB,GAAIA,EAAGhB,GACtB,OAAO,EAKf,OAAO,4FCjBM,SAAyBQ,EAAOmB,GAC7C,IAAMC,EAAcC,SAASC,cAAc,SAO3C,GANAF,EAAYpB,MAAQA,EACpBqB,SAASE,KAAKC,YAAYJ,GAC1BA,EAAYK,SACZJ,SAASK,YAAY,QACrBL,SAASE,KAAKI,YAAYP,GAEtBD,EAAO,CACT,IAAMS,EAAeP,SAASC,cAAc,OAC5CM,EAAaC,MAAMC,QAAU,WAC7BF,EAAaC,MAAME,gBAAkB,UACrCH,EAAaC,MAAMG,SAAW,OAC9BJ,EAAaC,MAAMI,SAAW,WAC9BL,EAAaC,MAAMK,IAASf,EAAMgB,MAAlC,KACAP,EAAaC,MAAMO,KAAUjB,EAAMkB,MAAQ,GAA3C,KACAT,EAAaC,MAAMS,OAAS,MAC5BV,EAAaC,MAAMU,QAAU,EAC7BX,EAAaC,MAAMW,WAAa,kBAChCZ,EAAaa,UAAY,UAEzBpB,SAASE,KAAKC,YAAYI,GAC1BP,SAASqB,iBAAiB,YAAa,SAAAC,GAAA,OA5B3C,SAAsBxB,EAAOyB,GAC3BA,EAAQf,MAAMU,QAAU,EACxBK,EAAQf,MAAMK,IAASf,EAAMgB,MAA7B,KACAS,EAAQf,MAAMO,KAAUjB,EAAMkB,MAAQ,GAAtC,KAyB8CQ,CAAaF,EAAGf,KAE5DkB,WAAW,WACTlB,EAAaC,MAAMU,QAAU,EAC7BlB,SAASE,KAAKI,YAAYC,IACzB,sBCjCPxD,EAAAD,QAAAQ,mFCAgBoE,aAAT,SAAsBC,GAE3B,IACIC,GADAD,EAAQE,OAAOF,IACDG,YAAY,GAC1BC,EAAS,GACTC,EAAW,CAAC,GAAI,IAAK,IAAK,IAAK,KAEnC,GAAIH,OAAOD,IAAUD,GAASM,OAAON,GAAO9B,QAAU,EACpD,OAAOoC,OAAON,GAGhB,GAAIO,KAAKC,IAAIR,IAAU,KACrB,OAAOC,EAGT,OAAID,GAAS,GAAKA,IAAU,GACtBA,EAAQ,IAEVA,GAASA,EACTI,EAAS,KAEJA,EAMT,SAASK,EAAQT,EAAOU,GACtB,IAAIV,EAAQM,OAAON,GACnB,IAAIW,EAAQX,EAAMW,MAAM,KAExB,GAAIA,EAAMzC,OAAS,EAAG,CAEpB8B,EAAQW,EAAM,GACd,IAAIC,EAAMD,EAAM,GAEI,GAAhBX,EAAM9B,QAAe0C,EAAI1C,OAAS,EAEhC0C,EAAI1C,OAAS,EACf8B,EAAQA,EAAQ,IAAMY,EAAIC,OAAO,GAIjCb,GAAS,IAGY,GAAhBA,EAAM9B,QAAe0C,EAAI1C,OAAS,IACzC8B,EAAQA,EAAQ,IAAMY,EAAIC,OAAO,GAE7BD,EAAI1C,OAAS,EACf8B,GAASY,EAAIC,OAAO,GAIpBb,GAAS,KAIf,IAAIc,EAAcd,EAAM9B,OAEpB8B,EAAMW,MAAM,KAAKzC,OAAS,GAC5B4C,IAEF,OAAIA,GAAe,EACVR,OAAON,GAASK,EAASK,GAGzBD,EAAQP,OAAOF,GAAS,IAAMU,EAAY,GA9CnCD,CAAQT,EAAO,IAGxBA,EAAMG,YAAY,qFCdbY,WAAT,SAAoBC,GACzB,IAOIC,EAPAC,EAAM,GAAKF,EACXG,EAAQC,EAAgBC,KAAKH,GAEjC,IAAKC,EACH,OAAOD,EAIT,IAAII,EAAO,GACPC,EAAQ,EACRC,EAAY,EAEhB,IAAKD,EAAQJ,EAAMI,MAAOA,EAAQL,EAAIhD,OAAQqD,IAAS,CACrD,OAAQL,EAAIO,WAAWF,IACrB,KAAK,GACHN,EAAS,SACT,MACF,KAAK,GACHA,EAAS,QACT,MACF,KAAK,GACHA,EAAS,QACT,MACF,KAAK,GACHA,EAAS,OACT,MACF,KAAK,GACHA,EAAS,OACT,MACF,QACE,SAGAO,IAAcD,IAChBD,GAAQJ,EAAIQ,UAAUF,EAAWD,IAGnCC,EAAYD,EAAQ,EACpBD,GAAQL,EAGV,OAAOO,IAAcD,EACjBD,EAAOJ,EAAIQ,UAAUF,EAAWD,GAChCD,GAtDN,IAAMF,EAAkB,2FCARO,OAAT,SAAgBC,GACrB,IAAK,IAAInG,EAAI,EAAGA,EAAIoG,UAAU3D,OAAQzC,IACpC,IAAK,IAAIqG,KAAQD,UAAUpG,GACzBmG,EAAOE,GAAQD,UAAUpG,GAAGqG,GAGhC,OAAOF,oFCJOG,SAAT,SAAkBC,EAAMC,GAC7BD,EAAKjE,KAAK,WAeR,IAdA,IAAIiE,EAAOE,EAAGzD,OAAO0D,MACjBC,EAAQJ,EAAKA,OAAOrB,MAAM,OAAO0B,UACjCC,SACAC,EAAO,GACPC,EAAa,EAEbC,EAAIT,EAAKU,KAAK,KACdC,EAAIX,EAAKU,KAAK,KAEdE,EAAQZ,EAAKA,KAAK,MACLa,OAAO,SACPH,KAAK,IAAKD,GACVC,KAAK,IAAKC,GACVD,KAAK,KAAMI,OACrBR,EAAOF,EAAMW,OAChBR,EAAKS,KAAKV,GACVM,EAAMZ,KAAKO,EAAKU,KAAK,MACjBL,EAAMM,OAAOC,wBAA0BlB,IACvCM,EAAKQ,MACLH,EAAMZ,KAAKO,EAAKU,KAAK,MACrBV,EAAO,CAACD,GACRM,EAAQZ,EAAKa,OAAO,SACPH,KAAK,IAAKD,GACVC,KAAK,IAAKC,GACVD,KAAK,KAnBT,MAmBiBF,EAhBzB,EAgBwD,MAC5CR,KAAKM,OA7B9B,IAAYJ,0JAAZpG,EAAA,mBCAA,IAAAsH,EAGAA,EAAA,WACA,OAAAjB,KADA,GAIA,IAEAiB,KAAA,IAAAC,SAAA,iBACC,MAAA1D,GAED,iBAAAjE,SAAA0H,EAAA1H,QAOAN,EAAAD,QAAAiI,mFChBgBE,iBA6CAC,YAhDhB,MAAAC,EAAA1H,EAAA,uCACA2H,EAAA3H,EAAA,GAEO,SAASwH,EAAapC,EAAKlB,GAChC,IAAM0D,EAAOvB,KAEPwB,GADO1F,MAAMN,UAAUiG,MAAM1H,KAAK2F,UAAW,QAC5BgC,IAAR3C,EAAqBA,EAAM,MAuC1C,MArCqB,mBAAVlB,GACT0D,EAAKI,OAAO,GAAGd,KAAKW,IACpB,EAAAF,EAAA1F,MAAK2F,EAAKI,OAAQ,SAASC,EAAKtI,GAC9B,IAAIuI,SACAvI,EAAI,SAEc,KADpBuI,EAAOhE,EAAM9D,KAAKwH,EAAMK,EAAKtI,MAE3BuI,EAAO,MAETN,EAAKI,OAAOrI,GAAGuH,KAAKgB,SAKhBhE,GAASA,aAAiB/B,UAClC+B,EAAQA,GAAS,IAEP9B,QAAUwF,EAAKI,OAAO5F,OAAS,EACvC8B,EAAQA,EAAMiE,QAAO,EAAAC,EAAAC,SAAeT,EAAKI,OAAO5F,OAAS,EAAI8B,EAAM9B,UAKnE,EAAAuF,EAAA1F,MAAKiC,EAAO,SAAShD,EAAOvB,GACtBiI,EAAKI,OAAO5F,OAAQ,EAAI8B,EAAM9B,QAChCqF,EAAUrH,KAAKwH,EAAMpD,OAAOoD,EAAKI,OAAO5F,WAK9CwF,EAAKI,OAAO,GAAGd,KAAKW,IACpB,EAAAF,EAAA1F,MAAKiC,EAAO,SAAShD,EAAOvB,GAC1BiI,EAAKI,OAAOrI,EAAE,GAAGiI,EAAKI,OAAO,GAAG5F,OAAO,GAAKlB,KAKzC0G,EAGF,SAASH,EAAUrC,EAAKlB,GAC7B,IAAM0D,EAAOvB,KAEPwB,GADO1F,MAAMN,UAAUiG,MAAM1H,KAAK2F,UAAW,QAC5BgC,IAAR3C,EAAqBA,EAAM,MACpCkD,EAAS,GAqCf,OAnCAA,EAAOpB,KAAKW,GAES,mBAAV3D,IACT,EAAAyD,EAAA1F,MAAK2F,EAAKI,OAAO,GAAI,SAASH,EAAOlI,GACnC,IAAI4I,SACAL,SACAvI,EAAI,IACN4I,EAAMX,EAAKY,aAAa7I,QAEJ,KADpBuI,EAAOhE,EAAM9D,KAAKwH,EAAMW,EAAK5I,MAE3BuI,EAAO,MAETI,EAAOpB,KAAKgB,MAGhBN,EAAKI,OAAOd,KAAKoB,MAGTpE,GAASA,aAAiB/B,UAClC+B,EAAQA,GAAS,IAEP9B,QAAUwF,EAAKI,OAAO,GAAG5F,OAAS,EAC1C8B,EAAQA,EAAMiE,QAAQ,EAAAC,EAAAC,SAAgBT,EAAKI,OAAO,GAAG5F,OAAS,EAAI8B,EAAM9B,UAGxE,EAAAuF,EAAA1F,MAAKiC,EAAO,SAAShD,EAAOvB,GACtBiI,EAAKI,OAAO,GAAG5F,OAAQ,EAAI8B,EAAM9B,QACnCoF,EAAapH,KAAKwH,EAAMpD,OAAQoD,EAAKI,OAAO,GAAG5F,WAKrDwF,EAAKI,OAAOd,KAAKoB,EAAOH,OAAOjE,KAG1B0D,4FCzFM,SAAUa,GAEvB,IADA,IAAMC,EAAO,GACJ/I,EAAI,EAAGA,EAAI8I,EAAK9I,IACvB+I,EAAKxB,KAAK,MAEZ,OAAOwB,kBCLTpJ,EAAAD,QAAAS,iSCAO,SAAS6I,EAAWzE,GACzB,OAAc,OAAVA,GAA2C,mBAAlBA,EAAM0E,UAA2BC,MAAM3E,EAAM0E,WAMrE,SAASE,EAAW5E,GAEzB,MADiB,gEACD6E,KAAK7E,KATPyE,eAOAG,uBAKD,SAAU5E,GACvB,MAAqB,iBAAjB,IAAOA,EAAP,YAAA8E,EAAO9E,IACFyE,EAAWzE,GACQ,iBAAVA,GACT4E,EAAW5E,oGCftB,IAAY6C,IAAZ/G,EAAA,IACYiJ,IAAZjJ,EAAA,KACYkJ,IAAZlJ,EAAA,KACYmJ,IAAZnJ,EAAA,KACY2C,IAAZ3C,EAAA,KACYoJ,IAAZpJ,EAAA,KACYqJ,IAAZrJ,EAAA,SAGAA,EAAA,KACAsJ,EAAAtJ,EAAA,OACAA,EAAA,iNAEO,IAAMuJ,YAAU,SAAVA,IAAiC,IAAbC,EAAazD,UAAA3D,OAAA,QAAA2F,IAAAhC,UAAA,GAAAA,UAAA,GAAJ,GACxC,GAAIM,gBAAgBkD,IAAY,EAC9B,OAAO,IAAIA,EAAQC,GAGrBnD,KAAK2B,OAAS,CACZ,CAAC,UAEH3B,KAAKoD,KAAO,CACVC,UAAM3B,GAER1B,KAAKmD,OAASA,GAGhBD,EAAQ1H,UAAU8H,KAAO,SAAUC,GACjC,OAAK7D,UAAU3D,QACfiE,KAAK2B,OAAU4B,aAAezH,MAAQyH,EAAM,KACrCvD,MAFuBA,KAAK2B,QAKrCuB,EAAQ1H,UAAUgI,IAAM,SAAUC,EAAQ5I,GACxC,GAAI6E,UAAU3D,OAAS,GAAK0H,EAAO1H,OAAS,EAC1C,MAAM2H,MAAM,gDAGd,IAAIC,EAAW,iBAAoBF,EAAO,GAAKA,EAAO,GAAKzD,KAAK2B,OAAO,GAAGiC,QAAQH,EAAO,IACrFI,EAAW,iBAAoBJ,EAAO,GAAKA,EAAO,GAAKnH,EAAO6F,aAAapI,KAAKiG,KAAM,GAAG4D,QAAQH,EAAO,IAExGK,EAAYxH,EAAO6F,aAAapI,KAAKiG,KAAMyD,EAAO,IAClDM,EAAYzH,EAAO0H,UAAUjK,KAAKiG,KAAMyD,EAAO,IAgBnD,OAbIK,EAAU/H,OAAS,IACrB2E,EAAOS,aAAapH,KAAKiG,KAAM7B,OAAOsF,EAAO,KAC7CE,EAAW3D,KAAK2B,OAAO,GAAG5F,OAAS,GAIjCgI,EAAUhI,OAAS,IACrB2E,EAAOU,UAAUrH,KAAKiG,KAAM7B,OAAOsF,EAAO,KAC1CI,EAAW7D,KAAK2B,OAAO5F,OAAS,GAIlCiE,KAAK2B,OAAQkC,GAAYF,GAAa9I,EAC/BmF,MAGTkD,EAAQ1H,UAAU6H,KAAO,SAAStE,GAChC,OAAKW,UAAU3D,QACfiE,KAAKoD,KAAL,KAAqBrE,EAAMZ,OAAOY,QAAO2C,EAClC1B,MAFuBA,KAAKoD,KAAL,OAKhC,EAAAH,EAAAzD,QAAO0D,EAAQ1H,UAAWkF,IAC1B,EAAAuC,EAAAzD,QAAO0D,EAAQ1H,UAAWoH,IAC1B,EAAAK,EAAAzD,QAAO0D,EAAQ1H,UAAWqH,IAC1B,EAAAI,EAAAzD,QAAO0D,EAAQ1H,UAAWsH,IAC1B,EAAAG,EAAAzD,QAAO0D,EAAQ1H,UAAWc,IAC1B,EAAA2G,EAAAzD,QAAO0D,EAAQ1H,UAAWuH,IAC1B,EAAAE,EAAAzD,QAAO0D,EAAQ1H,UAAWwH,IAC1B,EAAAC,EAAAzD,QAAO0D,EAAQ1H,UAAWyI,WAC1Bf,EAAQgB,QAAS,EAAAC,EAAAnC,SAAQkB,aAEVA,iFC9Ef,IAAA5B,EAAA3H,EAAA,GACAA,EAAA,GAEA,SAASyK,EAAQb,EAAKc,EAAOC,GAC3B,IAAId,EAAMD,EAAI9B,MAAM4C,GAAO,EAAIC,EAAMA,EAAI,EAAIf,EAAIxH,QAC7CwI,EAAM,EASV,OALA,EAAAjD,EAAA1F,MAAK4H,EAAK,SAASgB,EAAKlL,GACH,iBAARkL,GAAqBhC,MAAMiC,WAAWD,MAC/CD,GAAOE,WAAWD,MAGfD,EAAMf,EAAIzH,OAGnB,SAAS2I,EAAQnB,EAAKc,EAAOC,GAC3B,IAAId,EAAMD,EAAI9B,MAAM4C,GAAO,EAAIC,EAAMA,EAAI,EAAIf,EAAIxH,QAC7C4I,EAAO,GAQX,OALA,EAAArD,EAAA1F,MAAK4H,EAAK,SAASgB,EAAKlL,GACH,iBAARkL,GAAqBhC,MAAMiC,WAAWD,KAC/CG,EAAK9D,KAAK4D,WAAWD,MAGlBpG,KAAKwG,IAAIC,MAAMzG,KAAMuG,GAG9B,SAASG,EAAQvB,EAAKc,EAAOC,GAC3B,IAAId,EAAMD,EAAI9B,MAAM4C,GAAO,EAAIC,EAAMA,EAAI,EAAIf,EAAIxH,QAC7C4I,EAAO,GAQX,OALA,EAAArD,EAAA1F,MAAK4H,EAAK,SAASgB,EAAKlL,GACH,iBAARkL,GAAqBhC,MAAMiC,WAAWD,KAC/CG,EAAK9D,KAAK4D,WAAWD,MAGlBpG,KAAK2G,IAAIF,MAAMzG,KAAMuG,GAG9B,SAASJ,EAAIhB,EAAKc,EAAOC,GAEvB,IAAId,EAAMD,EAAI9B,MAAM4C,GAAO,EAAIC,EAAMA,EAAI,EAAIf,EAAIxH,QAC7CwI,EAAM,EAQV,OALA,EAAAjD,EAAA1F,MAAK4H,EAAK,SAASgB,EAAKlL,GACH,iBAARkL,GAAqBhC,MAAMiC,WAAWD,MAC/CD,GAAOE,WAAWD,MAGfD,EAGT,IAAMS,EAAmB,SAAUzB,GACjC,OAAOa,EAAQb,EAAK,IAEhB0B,EAAgBD,EAEhBE,EAAe,SAAU3B,GAC7B,OAAOgB,EAAIhB,EAAK,IAEZ4B,EAAYD,EAEZE,EAAmB,SAAU7B,GACjC,OAAOmB,EAAQnB,EAAK,IAEhB8B,EAAgBD,EAEhBE,EAAmB,SAAU/B,GACjC,OAAOuB,EAAQvB,EAAK,IAEhBgC,EAAgBD,EAEhBE,EAAiB,SAAUjC,GAC/B,OAAOA,EAAI,IAEPkC,EAAcD,YAEL,CACbpB,UACAM,UACAI,UACAP,MACAS,mBACAC,gBACAC,eACAC,YACAC,mBACAC,gBACAC,mBACAC,gBACAC,iBACAC,gGCxFcC,cAAT,SAAuBC,GAC5B,GAA2B,iBAAhBA,EACT,OAAOA,EAET,OAAOA,EAAYC,QAAQ,gBAAiB,sSCV9BC,WAAT,SAASA,EAAWpG,GACzB,IAAK,IAAInG,EAAI,EAAGA,EAAIoG,UAAU3D,OAAQzC,KACpC,EAAAgI,EAAA1F,MAAK8D,UAAUpG,GAAI,SAASqG,EAAMxE,QACH,IAAhBsE,EAAOtE,SAAwC,IAATwE,GACtB,WAAvBgD,EAAOlD,EAAOtE,KAAwC,iBAAhB,IAAOwE,EAAP,YAAAgD,EAAOhD,KAC7B,OAAhBF,EAAOtE,IAAwC,OAATwE,EACtCkG,EAAWpG,EAAOtE,GAAMwE,GAG5BF,EAAOtE,GAAOwE,IAIpB,OAAOF,GAfT,IAAA6B,EAAA3H,EAAA,4FCEe,WAKP,IAAAmM,EAAApG,UAAA3D,OAAA,QAAA2F,IAAAhC,UAAA,GAAAA,UAAA,GAAJ,GAJFqG,EAIMD,EAJNC,QAIMC,EAAAF,EAHNtE,aAGME,IAAAsE,EAHE,WAGFA,EAAAC,EAAAH,EAFNzC,YAEM3B,IAAAuE,EAFC,OAEDA,EADN3C,EACMwC,EADNxC,KAKA,GAFsB,GAAAxB,6HAAAoE,CAAIH,EAAQI,WAAWC,WAC1CC,KAAK,SAAAC,GAAA,MAFS,wBAEAA,EAAMC,YACJ,OAEnB,IAAMC,EAAStK,SAASC,cAAc,UACtCqK,EAAOlJ,UAAYkE,EACnBgF,EAAOD,UAPU,sBAQjBC,EAAOjJ,iBAAiB,QAAS,SAAAvB,GAAA,OAAS,EAAAyK,EAAAzE,SAAgB,CAAEhG,QAAOqH,OAAMC,WACzEyC,EAAQI,WAAWO,aAAaF,EAAQT,EAAQY,cAjBlD,MAAAC,EAAAjN,EAAA,iICGe,SAAqBkN,GAAK,IAC/B9F,EAA2B8F,EAA3B9F,KAAM+F,EAAqBD,EAArBC,QAASC,EAAYF,EAAZE,QACvB,GAAID,EAAS,CACX,GAAIA,EAAU,GAAKA,EAAU,EAAG,MAAMpD,MAAM,gDAC5CsD,UAAWC,OAAOlG,EAAM,CAAE+F,UAASC,YAChCG,KAAK,SAACC,IACL,EAAAC,EAAAC,QAAOF,EAAM,gBAIdL,GACHE,UAAWC,OAAOlG,GACfmG,KAAK,SAACC,IACL,EAAAC,EAAAC,QAAOF,EAAM,gBAhBrB,MAAAG,EAAA3N,EAAA,wCACAyN,EAAAzN,EAAA,6FCgBe,SAAoBkN,GAAK,IAC9BxD,EAAewD,EAAfxD,KAAMC,EAASuD,EAATvD,KACRiE,EAAmB,CAAC,OAAQ,OAC5BC,EAASnE,EAAKoE,cACpB,IAAKF,EAAiBG,SAASrE,GAC7B,MAAM,IAAIK,MAAM,8BAGlB,IACIiE,EAAaJ,EAAiB,GAC9BK,EAAU,GAEC,SAAXJ,IACFI,mCAA2CC,mBAAmBC,KAAKC,UAAUzE,KAGhE,QAAXkE,IACFI,EAlCJ,SAA4BtE,GAC1B,IAAI0E,EAAa,GAajB,OAXA1E,EAAK2E,QAAQ,SAACrG,EAAKtI,GACjBsI,EAAIqG,QAAQ,SAACpG,EAAMqG,GACjBF,GAAc7J,OAAO0D,GAAM+D,QAAQ,KAAM,IACrChE,EAAI7F,OAASmM,EAAI,IACnBF,GAAc,OAGd1E,EAAKvH,OAASzC,EAAI,IACpB0O,GAAc,QAGlB,+BAAsCH,mBAAmBG,GAoB7CG,CAAmB7E,GAC7BqE,EAAaH,GAGf,IAAMY,EAAclM,SAASC,cAAc,KAC3CiM,EAAYC,aAAa,OAAQT,GACjCQ,EAAYC,aAAa,WAAeC,SAAYX,GACpDzL,SAASE,KAAKC,YAAY+L,GAC1BA,EAAYG,QACZrM,SAASE,KAAKI,YAAY4L,sBC3C5B,SAAAI,GAUoJ,IAAwElP,EAAmF4O,EAA8C7N,EAA4HoO,EAA+3B/N,OAApsC,IAAA8N,IAAAxI,KAAAzG,QAAAyG,KAAAwI,QAA7GvP,EAAAD,SAAqLM,EAAA,SAAAqC,EAAAb,GAAoB,IAAA4N,EAAAxM,SAAAC,cAAAR,GAAgC,OAAAb,GAAA4N,EAAAC,UAAAC,IAAA9N,GAAA4N,GAA+BR,EAAA,SAAAvM,GAAe,OAAAA,GAAA,mBAAAA,GAA+BtB,EAAA,SAAAsB,EAAAb,EAAA4N,GAAmB,IAAAG,EAAM,kBAAkB,GAAAH,KAAA1I,MAAA6I,EAAA,OAAAlN,EAAAkJ,MAAA6D,EAAAhJ,WAAAmJ,GAAA,EAAAlL,WAAA,WAAuEkL,GAAA,GAAK/N,MAAo4BJ,GAA/3B+N,EAAA,SAAA9M,EAAAb,GAAiBkF,KAAA8I,QAAA,2BAAAnN,MAAAO,SAAA6M,cAAApN,IAAAqE,KAAAnC,MAAAlC,EAAAqE,KAAAmD,OAAA7I,OAAA0O,OAAA,GAAkH,CAAE3F,KAAA,SAAA4F,SAAA,SAAAC,eAAA,GAAAC,cAAA,SAAAT,GAA4E,OAAAA,GAASU,QAAA,CAAUvL,MAAA,kBAAAwL,UAAA,sBAAAC,SAAA,qBAAAC,SAAA,qBAAAC,OAAA,mBAAAC,MAAA,kBAAAC,SAAA,qBAAAC,SAAA,qBAAAV,SAAA,qBAAAxL,QAAA,oBAAAmM,QAAA,gCAAmU9O,GAAAkF,KAAA6J,UAAA,CAAoBvJ,EAAA,UAAAE,EAAA,WAAwBR,KAAA8J,UAAA,CAAiBxJ,EAAA,QAAAE,EAAA,UAAqBR,KAAA+J,SAAA,CAAgBzJ,EAAA,OAAAE,EAAA,OAAiBR,KAAAgK,QAAA,EAAAhK,KAAAiK,OAAA,WAAAjK,KAAAmD,OAAAE,MAAAvH,MAAAoO,QAAAlK,KAAAmD,OAAAtI,OAAAmF,KAAAmK,MAAA,iBAAA5Q,eAAA6Q,eAAAlO,oBAAAkO,cAAApK,KAAAqK,QAAA,QAAArK,KAAAsK,OAAAtK,KAAAuK,WAAqO/O,WAAe8O,KAAA,WAAyB,IAAAtK,KAAAnC,MAAA2M,UAAA,CAA0B,IAAA1P,EAAAa,EAAA,CAASoJ,IAAA,EAAAH,IAAA,IAAA6F,KAAA,EAAA5P,MAAAmF,KAAAnC,MAAAhD,OAA6C,IAAAC,KAAAa,EAAAqE,KAAAnC,MAAA/C,KAAAkF,KAAAnC,MAAA/C,GAAAa,EAAAb,SAAA,IAAAkF,KAAAmD,OAAArI,KAAAkF,KAAAnC,MAAA/C,GAAAkF,KAAAmD,OAAArI,IAAuGkF,KAAA0K,KAAA1K,KAAAmD,OAAAmG,SAAA,QAAAtJ,KAAAnC,MAAA2M,UAAAxK,UAAAiK,QAAAjK,KAAAnC,MAAA8M,OAAA3K,KAAAmD,OAAAtI,MAAAmF,KAAAmD,OAAAtI,MAAA,CAAAmF,KAAAnC,MAAAkH,IAAA/E,KAAAnC,MAAA+G,KAAA5E,KAAAnC,MAAA+M,cAAA5K,KAAAnC,MAAA8M,OAAAlJ,SAAAzB,KAAAnC,MAAAgN,eAAA7K,KAAAnC,MAAAgN,aAAA7K,KAAAnC,MAAAhD,OAAAmF,KAAA8K,SAAA9K,KAAA+K,aAAA,IAA+TrQ,EAAAoQ,OAAA,WAAqB,IAAAnP,EAAAqE,KAAAlF,EAAAkF,KAAAmD,OAAAuF,EAAA5N,EAAAsO,QAAAP,EAAAvP,EAAA,MAAAoP,EAAAW,WAAA2B,EAAA1R,EAAA,MAAAoP,EAAAe,OAAAnJ,EAAAhH,EAAA,MAAAoP,EAAAa,UAAA/I,EAAAlH,EAAA,MAAAoP,EAAAc,QAAAyB,EAAA3R,EAAA,MAAAoP,EAAAjL,SAA8I,GAAAuC,KAAAnC,MAAAqN,UAAA,EAAAlL,KAAAiK,OAAA,CAAuCzJ,EAAA,CAAAlH,EAAA,MAAAoP,EAAAc,QAAAlQ,EAAA,MAAAoP,EAAAc,SAAAyB,EAAA,GAA6C,QAAAE,EAAA,EAAY,EAAAA,EAAIA,IAAAF,EAAAE,GAAA7R,EAAA,MAAAoP,EAAAjL,SAA4B+C,EAAAyH,QAAA,SAAAmD,EAAAC,GAAwBD,EAAAhM,MAAAiM,EAAA/K,EAAAjE,YAAA+O,KAAA/O,YAAA4O,EAAAI,IAAAD,EAAAF,SAAA,EAAApQ,EAAAwQ,UAAAxQ,EAAAwQ,SAAAD,IAAAvQ,EAAAwQ,SAAAD,GAAAE,SAAA,IAAAzQ,EAAAwQ,SAAAD,GAAAE,SAAAH,EAAAG,QAAA,KAAsJzQ,EAAAwO,UAAAhJ,EAAAjE,YAAAmE,EAAA,IAAAF,EAAAjE,YAAA4O,EAAA,IAAApC,EAAAF,UAAAC,IAAAF,EAAAgB,eAAkFpJ,EAAAjE,YAAAmE,KAAAnE,YAAA4O,GAAAzK,EAAA0K,SAAA,EAAApQ,EAAAwQ,UAAAxQ,EAAAwQ,SAAAC,SAAA,IAAAzQ,EAAAwQ,SAAAC,SAAA/K,EAAA+K,QAAA,GAAyH,GAAA1C,EAAAxM,YAAA2O,GAAAlQ,EAAAwO,UAAAT,EAAAF,UAAAC,IAAAF,EAAAY,UAAAxO,EAAA0Q,OAAA3C,EAAAnM,MAAAsD,KAAA8J,UAAA9J,KAAA0K,OAAAlI,MAAA1H,EAAA0Q,MAAA1Q,EAAA0Q,KAAA1Q,EAAA0Q,KAAA,MAAA1Q,EAAAmO,WAAAJ,EAAAF,UAAAC,IAAAF,EAAAO,UAAA,iBAAAnO,EAAAmO,UAAA,WAAAnO,EAAAmO,UAAAJ,EAAAF,UAAAC,IAAAF,EAAAkB,UAAA5J,KAAAyL,MAAA,CAA+QpC,UAAAR,EAAAY,MAAAuB,EAAAzB,SAAAjJ,EAAAkJ,OAAAhJ,EAAA/C,QAAAwN,GAAkDjL,KAAAiK,OAAA,CAAcjK,KAAAyL,MAAAC,OAAA,GAAqB,IAAAC,EAAArS,EAAA,2BAAmC0G,KAAAnC,MAAA8M,OAAA1C,QAAA,SAAAmD,EAAAC,GAAwC,IAAAO,EAAAtS,EAAA,0BAAkCqS,EAAAtP,YAAAuP,GAAAjQ,EAAA8P,MAAAC,OAAA7K,KAAA+K,GAAAZ,EAAA3O,YAAAsP,GAAA7Q,EAAAwQ,WAAA3P,EAAAkQ,OAAA,IAAkF,SAAG,IAAA/Q,EAAAwQ,SAAAD,GAAAtG,MAAApJ,EAAAkQ,OAAAR,GAAAtG,IAAAjK,EAAAwQ,SAAAD,GAAAtG,UAAA,IAAAjK,EAAAwQ,SAAAD,GAAAzG,MAAAjJ,EAAAkQ,OAAAR,GAAAzG,IAAA9J,EAAAwQ,SAAAD,GAAAzG,aAAqIpE,EAAAlH,EAAA,0BAAA0R,EAAA3O,YAAAmE,GAAAR,KAAAyL,MAAAC,OAAAlL,EAAAwK,EAAA3O,YAAAmE,GAAA1F,EAAAwQ,WAAAtL,KAAA6L,OAAA,QAAoH,IAAA/Q,EAAAwQ,SAAAvG,MAAA/E,KAAA6L,OAAA9G,IAAAjK,EAAAwQ,SAAAvG,UAAA,IAAAjK,EAAAwQ,SAAA1G,MAAA5E,KAAA6L,OAAAjH,IAAA9J,EAAAwQ,SAAA1G,MAAsH5E,KAAA8L,UAAAhR,EAAAwQ,UAAAN,EAAA3O,YAAAiE,GAAAN,KAAAnC,MAAAsI,WAAAO,aAAAmC,EAAA7I,KAAAnC,OAAAgL,EAAAnC,aAAA1G,KAAAnC,MAAAmN,GAAAhL,KAAAnC,MAAA8K,UAAAC,IAAAF,EAAA7K,OAAAmC,KAAA5E,OAAA4E,KAAAgD,UAAsLtI,EAAAqR,MAAA,WAAoB/L,KAAAiK,OAAAjK,KAAAnC,MAAA+M,cAAA3C,QAAAjI,KAAAgM,SAAAhM,WAAAgM,SAAAhM,KAAAnC,MAAAgN,cAAA7K,KAAAiM,SAAqHvR,EAAAwR,qBAAA,SAAAvQ,GAAoC,IAAAb,EAAAkF,KAAAmM,YAAAzD,EAAAjE,WAAAzE,KAAAnC,MAAA4M,MAAA5B,EAAA7I,KAAAmK,MAAAxO,EAAAyQ,QAAA,GAAApM,KAAA6J,UAAA7J,KAAA0K,OAAA/O,EAAAqE,KAAA6J,UAAA7J,KAAA0K,OAAAM,EAAAnC,EAAA7I,KAAAqM,MAAAhD,UAAArJ,KAAA+J,SAAA/J,KAAA0K,OAAApK,EAAAN,KAAAqM,MAAAhD,UAAArJ,KAAA8J,UAAA9J,KAAA0K,OAA4O,qBAAA/O,EAAA0H,SAAArD,KAAAiK,QAAAjK,KAAAyL,MAAAjC,OAAA8C,SAAA3Q,EAAA8D,SAAAO,KAAAiK,SAAAjK,KAAAyL,MAAAjC,OAAA,GAAA8C,SAAA3Q,EAAA8D,SAAAO,KAAAyL,MAAAjC,OAAA,GAAA8C,SAAA3Q,EAAA8D,aAAA9D,GAAAqE,KAAAmD,OAAAmG,UAAAhJ,EAAA0K,GAAA1K,EAAA,IAAA0K,EAAA1K,EAAA,MAAAxF,EAAA8J,IAAA9J,EAAAiK,KAAA,IAAAjK,EAAAiK,IAAApJ,EAAAyC,KAAAmO,KAAA5Q,EAAA+M,KAAAG,GAAA7I,KAAAgK,UAAArO,GAAA+M,GAAAjE,WAAA9I,KAAA8I,WAAAzE,KAAAwM,cAAA9D,GAAA,EAAA1I,KAAAiK,SAAAvB,EAAA1I,KAAAyM,aAAArN,OAAAzD,EAAAqE,KAAA0M,MAAA/Q,EAAA+M,QAAA1I,KAAAgM,SAAArQ,EAAA+M,MAAibhO,EAAA2J,MAAA,SAAA1I,GAAqB,OAAAA,EAAAgR,iBAAA3M,KAAAwM,WAAAxM,KAAA4M,WAAA5M,KAAA6M,UAAA7M,KAAAyL,MAAApC,UAAAV,UAAAC,IAAA,YAAA5I,KAAA8M,cAAA9M,KAAAyM,aAAAzM,KAAA+M,UAAApR,KAAAqE,KAAAyM,eAAAzM,KAAAyM,aAAA9D,UAAAC,IAAA,UAAA5I,KAAAkM,qBAAAvQ,QAAAqE,KAAAmK,OAAAjO,SAAAqB,iBAAA,YAAAyC,KAAAgN,OAAAC,MAAA,GAAA/Q,SAAAqB,iBAAA,WAAAyC,KAAAgN,OAAAE,MAAA,GAAAhR,SAAAqB,iBAAA,cAAAyC,KAAAgN,OAAAE,MAAA,KAAAhR,SAAAqB,iBAAA,YAAAyC,KAAAgN,OAAAC,MAAA,GAAA/Q,SAAAqB,iBAAA,UAAAyC,KAAAgN,OAAAE,MAAA,OAAskBxS,EAAAuS,KAAA,SAAAtR,GAAoBqE,KAAAkM,qBAAAvQ,GAAAqE,KAAAgK,QAAAhK,KAAAmK,MAAAxO,EAAAyQ,QAAA,GAAApM,KAAA6J,UAAA7J,KAAA0K,OAAA/O,EAAAqE,KAAA6J,UAAA7J,KAAA0K,QAA0HhQ,EAAAwS,KAAA,WAAmBlN,KAAAmN,UAAAnN,KAAA4M,WAAA5M,KAAAyL,MAAApC,UAAAV,UAAAyE,OAAA,YAAApN,KAAAiM,QAAAjM,KAAAyM,aAAA9D,UAAAyE,OAAA,UAAApN,KAAAyM,cAAA,EAAAzM,KAAAmK,OAAAjO,SAAAmR,oBAAA,YAAArN,KAAAgN,OAAAC,MAAA/Q,SAAAmR,oBAAA,WAAArN,KAAAgN,OAAAE,MAAAhR,SAAAmR,oBAAA,cAAArN,KAAAgN,OAAAE,QAAAhR,SAAAmR,oBAAA,YAAArN,KAAAgN,OAAAC,MAAA/Q,SAAAmR,oBAAA,UAAArN,KAAAgN,OAAAE,OAAAlN,KAAAwM,aAAAxM,KAAAmN,WAAAnN,KAAAnC,MAAAyP,cAAA,IAAAC,MAAA,WAAAvN,KAAAwM,WAAA,MAA0jB9R,EAAA8S,QAAA,SAAA7R,GAAuB,IAAAb,EAAAkF,KAAA0I,EAAA,SAAAG,GAAyB,OAAAlN,EAAAR,KAAc,+BAAAL,EAAA2S,OAAA5E,GAA2C,MAAM,gCAAA/N,EAAA4S,SAAA7E,KAAiD7I,KAAAiK,OAAAjK,KAAAyL,MAAAjC,OAAAvB,QAAA,SAAAY,GAAkDA,IAAA3M,SAAAyR,eAAAjF,EAAAG,EAAAzJ,SAAuCY,KAAAyL,MAAAjC,SAAAtN,SAAAyR,eAAAjF,KAAkDhO,EAAA+S,OAAA,SAAA9R,GAAsB,IAAAb,EAAA2J,WAAAzE,KAAAnC,MAAA4M,MAAA/B,EAAA1I,KAAA4M,WAAoD5M,KAAAiK,aAAA,IAAAtO,IAAA+M,IAAA/M,IAAAb,EAAAkF,KAAA0M,MAAAjI,WAAAiE,GAAA5N,EAAAa,GAAAqE,KAAAgM,SAAAlR,EAAAa,IAAqFjB,EAAAgT,SAAA,SAAA/R,GAAwB,IAAAb,EAAA2J,WAAAzE,KAAAnC,MAAA4M,MAAA/B,EAAA1I,KAAA4M,WAAoD5M,KAAAiK,aAAA,IAAAtO,IAAA+M,IAAA/M,IAAAb,EAAAkF,KAAA0M,MAAAjI,WAAAiE,GAAA5N,EAAAa,GAAAqE,KAAAgM,SAAAlR,EAAAa,IAAqFjB,EAAAgS,MAAA,SAAA/Q,EAAAb,GAAuB,IAAA4N,EAAA1I,KAAAnC,MAAAgL,EAAA7I,KAAAmM,YAAoC,OAAAxQ,EAAA8I,WAAA9I,GAAAqE,KAAAiK,aAAA,IAAAnP,OAAAa,EAAA+M,EAAAiC,OAAA,GAAAhP,EAAA+M,EAAAiC,OAAA,KAAA7P,GAAAa,EAAA+M,EAAAiC,OAAA,KAAAhP,EAAA+M,EAAAiC,OAAA,IAAA3K,KAAA6L,SAAA/Q,EAAAa,EAAAqE,KAAA6L,OAAA,GAAAjH,IAAAjJ,EAAAqE,KAAA6L,OAAA,GAAAjH,IAAAjJ,EAAAqE,KAAA6L,OAAA,GAAA9G,MAAApJ,EAAAqE,KAAA6L,OAAA,GAAA9G,KAAApJ,EAAAqE,KAAA6L,OAAA,GAAAjH,IAAAjJ,EAAAqE,KAAA6L,OAAA,GAAAjH,IAAAjJ,EAAAqE,KAAA6L,OAAA,GAAA9G,MAAApJ,EAAAqE,KAAA6L,OAAA,GAAA9G,OAAA/E,KAAA6L,SAAAlQ,EAAAqE,KAAA6L,OAAAjH,IAAAjJ,EAAAqE,KAAA6L,OAAAjH,IAAAjJ,EAAAqE,KAAA6L,OAAA9G,MAAApJ,EAAAqE,KAAA6L,OAAA9G,MAAApJ,EAAAkN,EAAAjE,IAAAjJ,EAAAkN,EAAAjE,IAAAjJ,EAAAkN,EAAA9D,MAAApJ,EAAAkN,EAAA9D,KAAApJ,KAAA8I,WAAA9I,IAAAiS,QAAA5N,KAAA6N,WAA4dnT,EAAAoS,YAAA,WAA0B,IAAAnR,EAAA,GAASqE,KAAAiK,OAAAjK,KAAAyL,MAAAjC,OAAAvB,QAAA,SAAAnN,EAAA4N,GAAoD/M,EAAA+M,GAAA5N,EAAAgT,0BAA+BnS,EAAAqE,KAAAyL,MAAAjC,OAAAsE,wBAAA9N,KAAAqM,MAAA,CAA0D7C,OAAA7N,EAAA0N,UAAArJ,KAAAyL,MAAApC,UAAAyE,0BAAiEpT,EAAAsI,OAAA,WAAqB,IAAArH,EAAAqE,KAAWA,KAAA8M,cAAA9M,KAAA6N,SAAA,EAAA7N,KAAAnC,MAAA4M,KAAA/C,SAAA,OAAA1H,KAAA6N,UAAA7N,KAAAnC,MAAA4M,KAAAjM,MAAA,aAAAzC,QAA6H,IAAAjB,EAAAkF,KAAA4M,WAAAlE,EAAA1I,KAAAmM,YAAAtD,EAAA7I,KAAAqM,MAAAhD,UAAArJ,KAAA8J,UAAA9J,KAAA0K,OAAAM,EAAA,SAAA1K,EAAAE,EAAAyK,GAA6G3K,EAAA5D,MAAAf,EAAAwH,OAAAmG,SAAA,iBAAA9I,EAAA,KAAAF,EAAA5D,MAAAf,EAAAmO,UAAAnO,EAAA+O,OAAAO,EAAAvC,EAAA9D,IAAAiE,EAAArI,EAAA,MAAiGR,KAAAiK,QAAAjK,KAAA6L,QAAA7L,KAAA6L,OAAA5D,QAAA,SAAA3H,EAAAE,GAA4DwK,EAAArP,EAAA8P,MAAAC,OAAAlL,GAAAF,EAAAyE,IAAA2D,EAAA9D,IAAAiE,EAAAvI,EAAAsE,OAAyC5E,KAAAnC,MAAA8M,OAAA1C,QAAA,SAAA3H,EAAAE,GAA0C7E,EAAAqQ,SAAArQ,EAAA+Q,MAAApM,EAAAE,UAA2BR,KAAA6L,QAAAb,EAAAhL,KAAAyL,MAAAC,OAAA1L,KAAA6L,OAAA9G,IAAA2D,EAAA9D,IAAAiE,EAAA7I,KAAA6L,OAAAjH,KAAA5E,KAAAgM,SAAAhM,KAAA0M,MAAA5R,MAA4GJ,EAAAkS,SAAA,WAAuB,OAAA5M,KAAAiK,OAAAjK,KAAAnC,MAAA8M,OAAA3K,KAAAnC,MAAAhD,OAAsDH,EAAAsR,SAAA,SAAArQ,EAAAb,GAA0B,IAAA4N,EAAA1I,KAAAyL,MAAiB,GAAAzL,KAAAiK,aAAA,IAAAnP,EAAA,cAAoC,IAAAa,MAAAqE,KAAAnC,MAAAhD,OAAAc,EAAAqE,KAAA0M,MAAA/Q,EAAAb,GAAmD,IAAA+N,EAAA7I,KAAA+K,cAAApP,IAAAqE,KAAAnC,MAAAhD,OAAAmF,KAAA+N,aAAA/C,EAAAhL,KAAAmD,OAAAgG,cAA6F,GAAAnJ,KAAAiK,OAAA,CAAgB,IAAA3J,EAAAN,KAAAnC,MAAA8M,OAAwB,GAAArK,EAAAxF,GAAAa,EAAAqE,KAAAmD,OAAA8F,SAAA,CAAgCP,EAAAjL,QAAA3C,GAAAkT,YAAAhD,EAAAjR,KAAAiG,KAAArE,GAAwC,IAAA6E,EAAAkI,EAAAjL,QAAA,GAAAqQ,wBAAA7C,EAAAvC,EAAAjL,QAAA,GAAAqQ,wBAAkFtN,MAAAyN,MAAAhD,EAAAhO,MAAAuD,EAAAvD,KAAAgO,EAAAgD,OAAAzN,EAAA0N,OAAAjD,EAAAlO,KAAAyD,EAAAzD,IAAAkO,EAAAiD,QAAAxF,EAAAW,UAAAV,UAAAwF,OAAA,mBAAA3N,OAAAkI,EAAAjL,QAAA,GAAAuQ,YAAA1N,EAAA,KAAAA,EAAA,GAAA0K,EAAAjR,KAAAiG,KAAAM,EAAA,IAAA0K,EAAAjR,KAAAiG,KAAAM,EAAA,UAAA0K,EAAAjR,KAAAiG,KAAAM,EAAA,WAA8NN,KAAAnC,MAAAhD,MAAAc,EAAA+M,EAAAjL,QAAAuQ,YAAAhD,EAAAjR,KAAAiG,KAAArE,GAA6DqE,KAAAoO,YAAAzS,EAAAb,GAAA+N,IAAA7I,KAAAqO,WAAArO,KAAA+N,aAAA/N,KAAAnC,MAAAyP,cAAA,IAAAC,MAAA,UAAAvN,KAAA+N,aAAA,IAA8HrT,EAAA4T,OAAA,WAAqBtO,KAAA+N,aAAA,EAAA/N,KAAAgM,YAAoCtR,EAAAyR,UAAA,WAAwB,OAAOpH,IAAAN,WAAAzE,KAAAnC,MAAAkH,KAAAH,IAAAH,WAAAzE,KAAAnC,MAAA+G,OAA+DlK,EAAAoR,UAAA,SAAAnQ,GAAyB,IAAAb,EAAAkF,KAAW,YAAArE,EAAA,SAAuBqE,KAAA6L,SAAA7L,KAAA6L,OAAAlQ,GAA6B,IAAA+M,EAAA,SAAAG,EAAAmC,QAAoB,IAAAA,EAAAjG,MAAA8D,EAAA9D,IAAAiG,EAAAjG,UAAA,IAAAiG,EAAApG,MAAAiE,EAAAjE,IAAAoG,EAAApG,MAA6D5E,KAAAiK,OAAAtO,EAAAsM,QAAA,SAAAY,EAAAmC,GAAoCtC,EAAA5N,EAAA+Q,OAAAb,GAAAnC,KAAiBH,EAAA1I,KAAA6L,OAAAlQ,GAAAqE,KAAAgD,UAAiCtI,EAAA0T,YAAA,SAAAzS,GAA2B,GAAAqE,KAAAiK,OAAA,CAAgBtO,EAAAqE,KAAAuO,YAAAvO,KAAAnC,MAAA8M,OAAA,IAAyC,IAAA7P,EAAAkF,KAAAuO,YAAAvO,KAAAnC,MAAA8M,OAAA,IAA6C3K,KAAAyL,MAAAlC,SAAA7M,MAAAsD,KAAAmD,OAAAmG,SAAA,iBAAA3N,EAAA,KAAAA,EAAAb,EAAAa,OAA6EA,EAAAqE,KAAAuO,cAA0BvO,KAAAyL,MAAAlC,SAAA7M,MAAAsD,KAAA8J,UAAA9J,KAAA0K,OAAA/O,EAAA,MAA4DjB,EAAA6T,YAAA,SAAA5S,QAA2B,IAAAA,MAAAqE,KAAAnC,MAAAhD,OAAiC,IAAAC,EAAAkF,KAAAmM,YAAuB,OAAAxQ,EAAAb,EAAAiK,MAAAjK,EAAA8J,IAAA9J,EAAAiK,KAAA/E,KAAAqM,MAAAhD,UAAArJ,KAAA8J,UAAA9J,KAAA0K,QAA8EhQ,EAAAqS,UAAA,SAAApR,GAAyB,IAAAqE,KAAAiK,OAAA,OAAAjK,KAAAyL,MAAAjC,OAAA+B,QAAAvL,KAAAyL,MAAAjC,OAAmE,IAAA1O,EAAAkF,KAAAqM,MAAA3D,EAAAtK,KAAAC,IAAA1C,EAAAqE,KAAA6J,UAAA7J,KAAA0K,OAAA5P,EAAA0O,OAAA,GAAAxJ,KAAA+J,SAAA/J,KAAA0K,QAAgG,OAAA5P,EAAAsD,KAAAC,IAAA1C,EAAAqE,KAAA6J,UAAA7J,KAAA0K,OAAA5P,EAAA0O,OAAA,GAAAxJ,KAAA+J,SAAA/J,KAAA0K,SAAA/O,IAAA8D,OAAA+O,QAAA,IAAAxO,KAAAmD,OAAAiG,QAAAI,WAAA7N,EAAA+M,EAAA5N,EAAAkF,KAAAyL,MAAAjC,OAAA,GAAAxJ,KAAAyL,MAAAjC,OAAA,KAAA7N,EAAA4P,QAAA5P,GAA2MjB,EAAA+T,OAAA,WAAqBzO,KAAAnC,MAAA8L,WAAA3J,KAAAyL,MAAApC,UAAA9L,iBAAAyC,KAAAmK,MAAA,yBAAAnK,KAAAgN,OAAA3I,OAAA,GAAArE,KAAAiK,OAAAjK,KAAAyL,MAAAjC,OAAAvB,QAAA,SAAAtM,GAAwK,OAAAA,EAAAuP,SAAA,IAAoBlL,KAAAyL,MAAAjC,OAAA0B,SAAA,EAAAlL,KAAAyL,MAAApC,UAAAV,UAAAyE,OAAApN,KAAAmD,OAAAiG,QAAAO,UAAA3J,KAAAnC,MAAA8L,UAAA,IAA2HjP,EAAAgU,QAAA,WAAsB1O,KAAAnC,MAAA8L,WAAA3J,KAAAyL,MAAApC,UAAAgE,oBAAArN,KAAAmK,MAAA,yBAAAnK,KAAAgN,OAAA3I,OAAArE,KAAAiK,OAAAjK,KAAAyL,MAAAjC,OAAAvB,QAAA,SAAAtM,GAAwK,OAAAA,EAAAgT,gBAAA,cAAqC3O,KAAAyL,MAAAjC,OAAAmF,gBAAA,YAAA3O,KAAAyL,MAAApC,UAAAV,UAAAC,IAAA5I,KAAAmD,OAAAiG,QAAAO,UAAA3J,KAAAnC,MAAA8L,UAAA,IAAyIjP,EAAAU,KAAA,WAAmB,IAAAO,EAAAqE,KAAWA,KAAAgN,OAAA,GAAc,8CAAAxO,MAAA,KAAAyJ,QAAA,SAAAnN,GAA8Ea,EAAAqR,OAAAlS,GAAAa,EAAAb,GAAAM,KAAAO,KAAyBqE,KAAAgN,OAAA4B,OAAAvU,EAAA2F,KAAAgN,OAAAhK,OAAAhD,KAAAmD,OAAA+F,gBAAAlJ,KAAAgN,OAAA6B,OAAAxU,EAAA2F,KAAAgN,OAAAhK,OAAAhD,KAAAmD,OAAA+F,gBAAAhN,SAAAqB,iBAAA,SAAAyC,KAAAgN,OAAA4B,QAAA,GAAArV,OAAAgE,iBAAA,SAAAyC,KAAAgN,OAAA6B,QAAA,GAAA3S,SAAAqB,iBAAA,UAAAyC,KAAAgN,OAAAQ,SAAA,GAAAxN,KAAAyL,MAAApC,UAAA9L,iBAAAyC,KAAAmK,MAAA,yBAAAnK,KAAAgN,OAAA3I,OAAA,GAAArE,KAAAnC,MAAAN,iBAAA,QAAAyC,KAAAgN,OAAAsB,QAAA,GAAAtO,KAAAnC,MAAAiR,MAAA9O,KAAAnC,MAAAiR,KAAAvR,iBAAA,QAAAyC,KAAAgN,OAAAjB,OAAA,IAAmiBrR,EAAAqU,OAAA,WAAqB7S,SAAAmR,oBAAA,SAAArN,KAAAgN,OAAA4B,QAAArV,OAAA8T,oBAAA,SAAArN,KAAAgN,OAAA6B,QAAA3S,SAAAmR,oBAAA,UAAArN,KAAAgN,OAAAQ,SAAAxN,KAAAyL,MAAApC,UAAAgE,oBAAArN,KAAAmK,MAAA,yBAAAnK,KAAAgN,OAAA3I,OAAArE,KAAAnC,MAAAwP,oBAAA,QAAArN,KAAAgN,OAAAsB,QAAAtO,KAAAnC,MAAAiR,MAAA9O,KAAAnC,MAAAiR,KAAAzB,oBAAA,QAAArN,KAAAgN,OAAAjB,OAAA/L,KAAAgN,OAAA,MAA0atS,EAAAsU,QAAA,WAAsBhP,KAAAnC,MAAA2M,YAAAxK,KAAA+O,SAAA/O,KAAAnC,MAAA8K,UAAAyE,OAAApN,KAAAmD,OAAAiG,QAAAvL,OAAAmC,KAAAyL,MAAApC,UAAAlD,WAAA8I,aAAAjP,KAAAnC,MAAAmC,KAAAyL,MAAApC,kBAAArJ,KAAAnC,MAAA2M,UAAAxK,KAAA+K,aAAA,IAA2NrQ,EAAA6P,OAAA,WAAqBrC,EAAAlI,KAAAmD,OAAAoH,SAAAvK,KAAAmD,OAAAoH,OAAAxQ,KAAAiG,UAAA4M,aAAqElS,EAAAmS,QAAA,WAAsB3E,EAAAlI,KAAAmD,OAAA0J,UAAA7M,KAAAmD,OAAA0J,QAAA9S,KAAAiG,UAAA4M,aAAuElS,EAAA2T,SAAA,WAAuBnG,EAAAlI,KAAAmD,OAAAkL,WAAArO,KAAAmD,OAAAkL,SAAAtU,KAAAiG,UAAA4M,aAAyElS,EAAAuR,MAAA,WAAoB/D,EAAAlI,KAAAmD,OAAA8I,QAAAjM,KAAAmD,OAAA8I,MAAAlS,KAAAiG,UAAA4M,aAAmEnE,mLCVtsY,IAAAyG,EAAAvV,EAAA,6EAwBSwV,oFAASjM,gBAtBY,IAAXsF,IAAkD,oBAATjH,KAAuBA,KAAyB,oBAAXhI,QAAyBA,QAE7G6V,yBAAyB,SAASC,GAC7CA,EAAIC,YAAcH,UAClBE,EAAIE,YAAcrM,UAGlBmM,EAAIG,KAAOH,EAAIG,MAAQ,GACvBH,EAAIG,KAAKtM,QAAUA,UACnBmM,EAAIG,KAAKL,QAAUA,WAQVM,mBAAc/N,EACS,oBAAvBgO,qBACT1W,EAFSyW,YAEKC,8BAIDP,0fCnBfQ,EAAAhW,EAAA,6EA8+BSuJ,WAn/BT,IAAYnD,0JAAZpG,EAAA,QACAA,EAAA,SAEAA,EAAA,SACAA,EAAA,KAIA2H,EAAA3H,EAAA,OACAA,EAAA,KACAiW,EAAAjW,EAAA,OACAA,EAAA,KACAA,EAAA,MACAkW,EAAAlW,EAAA,QACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,QAEAA,EAAA,wDAGO,IAAMwV,YAAU,SAAVA,IAAkC,IAAAW,EAAA9P,KAAd+P,EAAcrQ,UAAA3D,OAAA,QAAA2F,IAAAhC,UAAA,GAAAA,UAAA,GAAJ,GACzC,GAAIM,gBAAgBmP,IAAY,EAC9B,OAAO,IAAIA,EAAQY,GAGrB/P,KAAKgQ,GAAKA,UACVhQ,KAAKD,GAAKA,EAEV,IACMkQ,EAAiB,CACrBC,yBAAyB,EACzBC,oBAAoB,EAEpB9G,eAAW3H,EACX0O,sBAAkB1O,EAKlB2O,WAAO3O,EACP4O,WAAW,EAEXC,cAAU7O,EAEV8O,WAAO9O,EACP+O,MAAO,eAEPC,OAAQ,CACN,UAAW,UAAW,UAAW,UAAW,UAAW,UACvD,UAAW,UAAW,UAAW,UAAW,UAAW,UACvD,UAAW,UAAW,UAAW,UAAW,UAAW,UACvD,UAAW,UAAW,UAAW,UAAW,UAAW,UACvD,UAAW,UAAW,WAGxBC,aAAc,GACdC,GAAI,CACFC,mBAAmB,GAErBC,MAAO,CACLC,wBAAwB,GAG1BC,QAAS,kBACTC,OAAQ,GACRC,aAAc,GACdC,wBAAoBzP,EACpB0P,aAAc,GACdC,mBAAmB,EACnBC,QAAS,UACTC,gBAAY7P,EACZ8P,mBAAe9P,EAEf+P,aAAS/P,EAGT2B,UAAM3B,EACNgQ,SAAS,EACTC,gBAAYjQ,EACZkQ,OAAQ,CACNC,MAAM,EACN/U,SAAU,QACVgV,UAAW,MACXtQ,MAAO,CACLuQ,cAAe,IAEjBC,WAAY,CACVC,OAAQ,EACRvF,MAAO,GAETjP,QAAS,CACPoU,MAAM,EACNK,SAAS,GAEXnP,UAAMrB,GAGRgJ,KAAM,GACNyH,MAAO,GACP3G,KAAM,GAGN7O,QAAS,CACPI,IAAK,IAEPqV,MAAO,CACLC,MAAO,CACLC,OAAQ,CACNC,SAAS,IAGb7X,EAAG,EACHmX,MAAM,EACNW,YAAa,KAEf/U,QAAS,CACPgV,YAAY,EACZjL,OAAQ,IAIVnK,WAAY,GAGZiG,KAAM,CACJoP,MAAO,KACPC,UAAW,CACVJ,SAAS,EACTK,WAAW,EACXlJ,UAAU,GAEZmJ,WAAY,SAAC3Y,EAAG6L,GACf,IACMxB,EADgBuL,EAAKgD,KAAKC,WAAW/C,GAAGgD,WACpBC,OAAO,SAACC,EAAMC,GAAP,OAAgBD,EAAOC,EAAKtY,OAAO,IACpE,EAAAuY,EAAApR,SAAgBuC,KAGnB8O,KAAM,CACJ7S,EAAG,CACDqR,MAAM,IAGVyB,yBAA0B,CACxBzB,UAAMnQ,EACN6E,UAAW,8BAEbgN,SAAU,MACVC,MAAO,CACLC,OAAQ,UAEVC,iBAAiB,EACjBC,OAAQ,CACNC,OAAO,EACPC,cAAc,EACdC,SAAU,CACRjC,MAAM,EACNkC,eAAgB,WAChBC,SAAU,GAEZC,uBAAuB,EACvBC,OAAO,EACPC,SAAU,aACVC,aAAa,GAEfC,OAAO,EACPC,OAAO,EACPC,WAAW,EACVC,WAAY,CACVC,IAAK,QACLC,QAAS,CACP7C,MAAM,EACNrG,KAAM,GACN2G,MAAO,QAETwC,YAAY,GAEdC,QAAS,IAGX5U,KAAKmD,OAAL0R,EAAA,IAAmB,EAAAhF,EAAAhK,YAAWoK,EAAgBF,IAE1CA,EAAQ+E,UACLC,UAAShF,EAAQ+E,UACpBE,QAAQC,IAAI,2BAA4BlF,EAAQ+E,SAElD9U,KAAKmD,OAAOuN,OAASqE,UAAShF,EAAQ+E,SAASpE,QAG7C1Q,KAAKmD,OAAOE,OAEdrD,KAAKmD,OAAOE,KAAO6R,EAAkBlV,KAAKmD,OAAOE,OAIhDrD,KAAKmD,OAAOE,MAAQrD,KAAKmD,OAAOE,KAAKqE,SAAS,YAC/C1H,KAAKmD,OAAOmR,OAAQ,EACpBtU,KAAKmD,OAAOE,KAAOrD,KAAKmD,OAAOE,KAAKuC,QAAQ,SAAU,IACtD5F,KAAKmD,OAAOyO,OAAOC,MAAO,EAC1B7R,KAAKmD,OAAOgS,SAAW,SACvBnV,KAAKmD,OAAO8N,OAAS,CAAC,MAAO,OAC7BjR,KAAKmD,OAAOuN,OAAS,CACnB1Q,KAAKmD,OAAOuN,OAAO,GACnB1Q,KAAKmD,OAAOuN,OAAO,KAKnB1Q,KAAKmD,OAAOgS,WACdnV,KAAKmD,OAAOuO,SAAU,GAIpB1R,KAAKmD,OAAOoR,YACdvU,KAAKmD,OAAOyO,OAAOC,MAAO,EAC1B7R,KAAKmD,OAAOuH,KAAO,CACjBpK,EAAG,CACDuR,MAAM,GAERrR,EAAG,CACDqR,MAAM,IAGV7R,KAAKmD,OAAOkQ,KAAO,CACjB/S,EAAG,CACDuR,MAAM,GAERrR,EAAG,CACDqR,MAAM,KAMR7R,KAAKmD,OAAOkG,WACdrJ,KAAKoV,GAAGpV,KAAKmD,OAAOkG,gBAGC3H,IAAnBqO,EAAQ6B,QAAyB7B,EAAQ6B,SAC3C5R,KAAKmD,OAAOyO,OAAZiD,EAAA,GACK9E,EADL,CAEE8B,MAAM,KAIN9B,EAAQoC,OAASpC,EAAQoC,MAAMkD,UAEjCrV,KAAKmD,OAAOuN,OAASX,EAAQoC,MAAMkD,SAGjCrV,KAAKmD,OAAOyO,QACT5R,KAAKmD,OAAOyO,OAAOnU,UACiB,IAApCuC,KAAKmD,OAAOyO,OAAOnU,QAAQoU,WACEnQ,IAA7B1B,KAAKmD,OAAO1F,QAAQoU,OACzB7R,KAAKmD,OAAO1F,QAAU,CAAEoU,MAAM,IAGhC7R,KAAKsV,QAAU,IAAIpS,UAAQlD,KAAKmD,QAChCnD,KAAK8S,KAAO,CACVyC,WAAW,EACXC,WAAW,EACXzC,WAAY,IAGd5D,EAAQsG,QAAQ5U,KAAKb,MAEjBA,KAAKmD,OAAOgN,oBACdnQ,KAAK0V,UAGD1V,KAAKmD,OAAOsO,SAChBzR,KAAK8K,OAAO9K,KAAKmD,OAAOsO,SAE1BzR,KAAKmD,OAAOwS,qBAAuBzZ,SAAS0Z,gBAEvC5V,KAAKmD,OAAO2N,MAAMC,yBACrB/Q,KAAKmD,OAAOG,KAAKuP,WAAa,cAG5B9C,EAAQzM,MAAQyM,EAAQzM,KAAKuP,aAC/B7S,KAAKmD,OAAOG,KAAKuP,WAAa,SAAC3Y,EAAG6L,GAIhC,GAHiBgK,EAAQzM,KAAKuP,WAAWzX,KAAK,KAAMlB,EAAG6L,EACvD8P,GAEI/F,EAAK3M,OAAO2N,MAAMC,uBAAwB,CAC5C,IACMxM,EADgBuL,EAAKgD,KAAKC,WAAW/C,GAAGgD,WACpBC,OAAO,SAACC,EAAMC,GAAP,OAAgBD,EAAOC,EAAKtY,OAAO,IACpE,EAAAuY,EAAApR,SAAgBuC,OAoLxB,SAASuR,EAAUC,GAEwB,IAArCA,EAAgBzS,OAAO,GAAGvH,SAAiB,EAAAia,EAAAhU,SAAa+T,EAAgBzS,OAAO,GAAG,IASpFyS,EAAgBT,QAAQW,UAAU,EAAG,SAASpb,EAAOuE,GACnD,OAAIA,EAAQ,GAAK2W,EAAgB5S,OAAO8N,OAAO7R,EAAM,IAC5C,EAAAwQ,EAAAlK,eAAcvH,OAAO4X,EAAgB5S,OAAO8N,OAAO7R,EAAM,MAE3D,EAAAwQ,EAAAlK,eAAc7K,IACrBO,KAAK2a,IAbPA,EAAgBT,QAAQY,aAAa,EAAG,SAASrb,EAAOuE,GACtD,OAAI2W,EAAgB5S,OAAO8N,OAAO7R,EAAM,IAC/B,EAAAwQ,EAAAlK,eAAcvH,OAAO4X,EAAgB5S,OAAO8N,OAAO7R,EAAM,MAE3D,EAAAwQ,EAAAlK,eAAc7K,IACrBO,KAAK2a,IA+BX,SAASI,EAATrQ,GAAkD,IAAzBiQ,EAAyBjQ,EAAzBiQ,gBAAiBlb,EAAQiL,EAARjL,MACxC,GAAIkb,EAAgB5S,OAAOgO,mBAAmB,CAC5C,IAAIiF,EAAqBvb,EASzB,OARAkb,EAAgB5S,OAAOgO,mBAAmBlJ,QAAQ,SAAAoO,GAC5CA,EAAeta,OAAS,IACVsa,EAAe,GACjB3T,KAAK7H,KACjBub,EAAqBC,EAAe,QAInC,EAAAzG,EAAAlK,eAAc0Q,GAEvB,OAAIL,EAAgB5S,OAAO+N,aAAarW,IAC/B,EAAA+U,EAAAlK,eAAcvH,OAAO4X,EAAgB5S,OAAO+N,aAAarW,MAE3D,EAAA+U,EAAAlK,eAAc7K,GAGvB,SAASyb,EAAUP,GAEZA,EAAgB5S,OAAOoT,wBAEe,IAArCR,EAAgBzS,OAAO,GAAGvH,SAAiB,EAAAia,EAAAhU,SAAa+T,EAAgBzS,OAAO,GAAG,IAGpFyS,EAAgB5S,OAAOoT,sBAAwB,SAF/CR,EAAgB5S,OAAOoT,sBAAwB,OAME,QAAjDR,EAAgB5S,OAAOoT,uBAC2B,SAAjDR,EAAgB5S,OAAOoT,uBAC1BR,EAAgBT,QAAQY,aAAa,EAAG,SAASrb,GAC/C,OAAOsb,EAAc,CAAEJ,kBAAiBlb,WACxCO,KAAK2a,IAG4C,WAAjDA,EAAgB5S,OAAOoT,uBAC2B,SAAjDR,EAAgB5S,OAAOoT,uBAC1BR,EAAgBT,QAAQW,UAAU,EAAG,SAASpb,GAC5C,OAAOsb,EAAc,CAAEJ,kBAAiBlb,WACxCO,KAAK2a,IAmQX,SAASxE,EAAWwE,GAEdA,EAAgB5S,OAAOoO,YAAcwE,EAAgBzS,OAAOvH,OAAS,KACnE,EAAAia,EAAAhU,SAAa+T,EAAgBzS,OAAO,GAAG,IACzCyS,EAAgBT,QAAQkB,YAAYT,EAAgB5S,OAAOoO,WAAYwE,EAAgBT,QAAQpQ,cAG/F6Q,EAAgBT,QAAQmB,SAASV,EAAgB5S,OAAOoO,WAAYwE,EAAgBT,QAAQnQ,YAiBlG,SAASqM,EAAcuE,GACjBA,EAAgB5S,OAAOqO,eACzBuE,EAAgBT,QAAQmB,SAASV,EAAgB5S,OAAOqO,eA4I5D,SAAS0D,EAAkBnW,GAQzB,MAPY,CACV2X,UAAW,OACXC,SAAU,iBACVC,YAAa,MACbC,UAAW,OACXC,SAAU,OAED/X,IAAQA,EAarB,SAASgY,EAASC,GACQ,oBAAb9a,UAA8C,oBAAX3C,QAKnB,MAAvB2C,SAAS+a,YAAsB/a,SAASqB,mBAC1CrB,SAASqB,iBAAiB,mBAAoB,SAAS2Z,IACrDhb,SAASmR,oBAAoB,mBAAoB6J,GAAkB,GACnEhb,SAAS+a,WAAa,aACrB,GACH/a,SAAS+a,WAAa,WArB1B,SAASE,EAAQH,GACX,KAAKtU,KAAKxG,SAAS+a,YACrBtZ,WAAW,WACTwZ,EAAQH,IACP,GAEHA,IAiBFG,CAAQH,IAXNA,IA5rBJ7H,EAAQiI,UAAY,CAAEpV,QAAS,IACT,oBAAXzI,SACT4V,EAAQiI,UAAUpV,SAAU,EAAAqV,EAAArV,SAAUmN,IAExCA,EAAQsG,QAAU,GAElBtG,EAAQmI,SAAW,SAAUnd,EAAMod,GACjCpI,EAAQiI,UAAUjd,GAAQgV,EAAQiI,UAAUjd,IAAS,IACrD,EAAAmH,EAAA1F,MAAK2b,EAAS,SAASC,EAAQrc,GAC7BgU,EAAQiI,UAAUjd,GAAMgB,GAAOqc,KAInCrI,EAAQ9I,KAAO,SAAS5G,GACtB,IAAKC,UAAU3D,OAAQ,OAAOoT,EAAQsG,QACtC,IAAML,EAAK3V,EAAOgY,SAAWhY,EAASvD,SAAS6M,cAActJ,GACzDT,EAAQ,KAOZ,OANA,EAAAsC,EAAA1F,MAAKuT,EAAQsG,QAAS,SAASiC,GAC7B,GAAItC,GAAMsC,EAAOvU,OAAOkG,UAEtB,OADArK,EAAQ0Y,GACD,IAGJ1Y,GAOTmQ,EAAQ3T,UAAUmc,WAAa,SAAS9Q,GAItC,GAHI7G,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,6EAETvV,UAAU3D,OAAQ,OAAOiE,KAAKmD,OACnC,IAAM2P,EAAO9S,KAAKmD,OAQlB,OAPA,EAAA7B,EAAA1F,MAAKiL,EAAK,SAASlH,EAAMxE,GAEX,cAARA,IACFA,EAAM,QAER2X,EAAK3X,GAAOwE,IAEPK,MAGTmP,EAAQ3T,UAAUzB,KAAO,SAASid,GAE9B,OADAA,EAAGjd,KAAKiG,MACDA,MAGXmP,EAAQ3T,UAAUoc,aAAe,SAAS/Q,GAIxC,OAHI7G,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,8EAETvV,UAAU3D,QACfiE,KAAKmD,QAAS,EAAA0M,EAAAhK,YAAW7F,KAAKmD,OAAQ0D,GAC/B7G,MAFuBA,KAAKmD,QAKrCgM,EAAQ3T,UAAUkV,OAAS,SAASnN,GAIlC,OAHIvD,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,gFAETvV,UAAU3D,QACfiE,KAAKmD,OAAOuN,OAAUnN,aAAezH,MAAQyH,EAAM,GAC5CvD,MAFuBA,KAAKmD,OAAOuN,QAK5CvB,EAAQ3T,UAAUmV,aAAe,SAAS9J,GACpC7G,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,4FAEd,IAAMc,EAAkB/V,KACxB,OAAKN,UAAU3D,QACH,OAAR8K,EACF7G,KAAKmD,OAAOwN,aAAe,GAEL,iBAAf,IAAO9J,EAAP,YAAAlE,EAAOkE,MACd,EAAAvF,EAAA1F,MAAKiL,EAAK,SAAShM,EAAOM,GACxB4a,EAAgB5S,OAAOwN,aAAaxV,GAAQN,GAAgB,OAGzDmF,MATuBA,KAAKmD,OAAOwN,cAY5CxB,EAAQ3T,UAAU8H,KAAOA,UAEzB6L,EAAQ3T,UAAUmW,WAAa,SAASnN,GAItC,OAHIxE,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,wFAETvV,UAAU3D,QAEbiE,KAAKmD,OAAOwO,WADK,iBAARnN,GAAmC,mBAARA,EACXA,OAGA9C,EAEpB1B,MAPuBA,KAAKmD,OAAOwO,YAU5CxC,EAAQ3T,UAAUwT,QAAU,WAC1B,IAAMsC,EAAUtR,KAAKsR,UACfjO,EAAOrD,KAAKmD,OAAOE,KACnB0C,EAAU/F,KAAKoV,KAerB,OAZIjG,EAAQiI,UAAU9F,IACfnC,EAAQiI,UAAU9F,GAASjO,IAC5B8L,EAAQiI,UAAU9F,GAASjO,GAAM2L,QAAQjV,KAAKiG,MAIhD+F,IACFA,EAAQ8R,UAAY,IAEtB7X,KAAK8S,KAAKyC,WAAY,EACtBvV,KAAK8S,KAAK0C,WAAY,EACtBxV,KAAK8S,KAAKC,WAAa,GAChB/S,MAGTmP,EAAQ3T,UAAU4Z,GAAK,SAAS3V,GAC9B,IAAMsW,EAAkB/V,KACxB,OAAKN,UAAU3D,QACfgb,EAAS,WACHtX,GAAqB,OAAXA,EACRA,EAAOgY,SACT1B,EAAgB5S,OAAOiN,iBAAmB3Q,EAEnCvD,SAAS6M,gBAChBgN,EAAgB5S,OAAOiN,iBAAmBlU,SAAS6M,cAActJ,IAInEsW,EAAgB5S,OAAOiN,sBAAmB1O,IAGvC1B,MAduBA,KAAKmD,OAAOiN,kBAiB5CjB,EAAQ3T,UAAUsc,OAAS,SAASC,GAIlC,OAHI/X,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,6CAEPjV,MAITmP,EAAQ3T,UAAUwV,QAAU,SAASjS,GAInC,OAHIiB,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,kFAETvV,UAAU3D,QACfiE,KAAKmD,OAAO6N,QAAWjS,EAAMZ,OAAOY,GAAO,kBACpCiB,MAFuBA,KAAKmD,OAAO6N,SAK5C7B,EAAQ3T,UAAUyV,OAAS,SAAS1N,GAKlC,OAJIvD,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,gFAGTvV,UAAU3D,QACfiE,KAAKmD,OAAO8N,OAAU1N,aAAezH,MAAQyH,EAAM,GAEnDuS,EAAU9V,MAEHA,MALuBA,KAAKmD,OAAO8N,QA4B5C9B,EAAQ3T,UAAU0V,aAAe,SAASrK,GAIxC,OAHI7G,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,4FAETvV,UAAU3D,QACH,OAAR8K,EACF7G,KAAKmD,OAAO+N,aAAe,GAEL,iBAAf,IAAOrK,EAAP,YAAAlE,EAAOkE,MACd,EAAAvF,EAAA1F,MAAKiL,EAAK,SAAShM,EAAOM,GACxB6E,KAAKmD,OAAO+N,aAAa/V,GAAQN,GAAgB,MACjDO,KAAK4E,OAGTsW,EAAUtW,MAEHA,MAZuBA,KAAKmD,OAAO+N,cA4D5C/B,EAAQ3T,UAAU8V,QAAU,SAASvS,GACjC,OAAKW,UAAU3D,QACfiE,KAAKmD,OAAL,QAA0BpE,EAAMZ,OAAOY,GAAO,KACvCiB,MAFuBA,KAAKmD,OAAL,SAKlCgM,EAAQ3T,UAAUwc,QAAU,WAIxB,GAHIhY,KAAK8S,KAAK0C,WACZxV,KAAKgP,UAEHhP,KAAKoV,KAAM,CACbpV,KAAKoV,KAAKyC,UAAY,GACtB,IAAMG,EAAU7I,EAAQiI,UAAUpV,QAAQgW,QACtCA,EAAQlN,QACVkN,EAAQlN,OAAOjG,MAAM7E,KAAMN,WAG/B,OAAOM,MAGXmP,EAAQ3T,UAAUgV,MAAQ,SAASzR,GAIjC,OAHIiB,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,8EAETvV,UAAU3D,QACfiE,KAAKmD,OAAOqN,MAASzR,EAAMZ,OAAOY,GAAO,KAClCiB,MAFuBA,KAAKmD,OAAOqN,OAK5CrB,EAAQ3T,UAAUka,QAAU,WACxB,IAAMK,EAAkB/V,KAExB,IAAKA,KAAKoV,KACR,MAASpV,KAAKmD,OAAOkG,UAArB,mEAkBF,OAdA0N,EAAS,WAIP,GAHIhB,EAAgBjD,KAAK0C,WACvBO,EAAgB/G,UAEd+G,EAAgBX,KAAM,CACxBW,EAAgBX,KAAKyC,UAAY,GACjC,IAAMI,EAAS9I,EAAQiI,UAAUpV,QAAQkW,QACrCD,EAAOnN,QACTmN,EAAOnN,OAAO/Q,KAAKgc,GAErBA,EAAgBjD,KAAKyC,WAAY,KAI9BvV,MAGXmP,EAAQ3T,UAAUsP,OAAS,WAA6B,IAAAqN,EAAAnY,KAApByR,EAAoB/R,UAAA3D,OAAA,QAAA2F,IAAAhC,UAAA,GAAAA,UAAA,QAAVgC,EACtCqU,EAAkB/V,KAExB,GAAMyR,EAAS,CACb,IAAM2G,EAAc3G,EAAQ,IAAMA,EAclC,GAZE2G,EAAYC,OACTD,EAAYC,MAAMC,UAClBF,EAAYC,MAAME,WACqB,iBAAhCH,EAAYC,MAAME,WACzBH,EAAYC,MAAME,UAAU7Q,SAAS,UACrC1H,KAAKmD,OAAOmQ,+BACkC5R,IAA9C1B,KAAKmD,OAAOmQ,yBAAyBzB,OAGxC7R,KAAKmD,OAAOmQ,yBAAyBzB,MAAO,GAG1C/V,MAAMoO,QAAQuH,GAAU,CAC1B,IAAM+G,EAAa/G,EAAQgD,IAAI,SAAAgE,GAAA,OAAcA,EAAWJ,MAAME,YAY9D,OAXAC,EAAWvQ,QAAQ,SAAAyQ,GAIjB,GAHqBF,EAAWnS,KAAK,SAAAsS,GAAA,OACnC7Q,KAAKC,UAAU4Q,KAAmB7Q,KAAKC,UAAU2Q,KAEhC,CACjB,IAAME,EAAM,+CAEZ,MADA5D,QAAQ6D,MAAMD,GACRA,KAIH7C,EACJzS,KAAKmO,EAAQ,IACb1X,KAAK,WACJ,IAAM8D,EAAQ4T,EAAQ,GACtB0G,EAAK7C,QAAQwD,aAAa,GAFhB,IAAAC,GAAA,EAAAC,GAAA,EAAAC,OAAAvX,EAAA,IAGV,QAAAwX,EAAAC,EAAmB1H,EAAnB9W,OAAAye,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,EAA4B,KAAnBQ,EAAmBL,EAAAre,MACtB2G,EAAW3D,EAAMwa,MAAMmB,iBAAvB,IAA2C3b,EAAMwa,MAAMoB,cACvDC,EAAMxW,UAAQgB,OAAO,WAAfhB,CAA2BqW,GACrCxD,EAAgBT,QAAQnU,aAAaK,EAAOkY,EAAIvX,aAAa,GAAGV,MAAM,KAN9D,MAAAkY,GAAAX,GAAA,EAAAC,EAAAU,EAAA,aAAAZ,GAAAI,EAAAS,QAAAT,EAAAS,SAAA,WAAAZ,EAAA,MAAAC,MASXnO,SAGL,OAAOiL,EAAgBzS,KAAKmO,GAAS3G,UAGlC9K,KAAKmD,OAAO+N,cAAgB5W,OAAOuf,KAAK7Z,KAAKmD,OAAO+N,cAAcnV,OAAS,GAE3EiE,KAAKmD,OAAOgO,oBAAsBnR,KAAKmD,OAAOgO,mBAAmBpV,OAAS,IAE7Eua,EAAUP,GAEN/V,KAAKmD,OAAO8N,QAAU3W,OAAOuf,KAAK7Z,KAAKmD,OAAO8N,QAAQlV,OAAS,GACnE+Z,EAAUC,GAEN/V,KAAKmD,OAAOoO,YAChBA,EAAWwE,GAEP/V,KAAKmD,OAAOqO,eAChBA,EAAcuE,GAGhB,IAAMkC,EAAS9I,EAAQiI,UAAUpV,QAAQkW,QACnC5G,EAAUtR,KAAKmD,OAAOmO,QACtBjO,EAAOrD,KAAKmD,OAAOE,KACnB+M,EAAmBpQ,KAAKoV,KAE9B,IAAKhF,QAAyC1O,IAArB0O,EAAgC,CACvD,IAAMwI,EAAS5Y,KAAKmD,OAAOkG,UAArB,mEAEN,MADA2L,QAAQ6D,MAAMD,GACRA,EAIR,IAAIkB,EAAc/D,EA8GlB,OA5GIA,EAAgB5S,OAAO4W,kBACzBD,EAAc,IAAIE,QAAQ,SAACC,EAASC,GAClC,IAAMC,EAAiBhC,EAAKhV,OAAOiX,WACnCrE,EAAgB5S,OAAOiX,WAAa,WAC9BD,GACFA,IAEFF,EAAQlE,OAKdgB,EAAS,WACP,IAAMsD,EAAgCtE,EAAgBuE,oBACjDvE,EAAgB5S,OAAOyN,IACvBmF,EAAgB5S,OAAOyN,GAAGC,kBACzB0J,EAA0BxE,EAAgB5S,OAAOyN,IAClDmF,EAAgB5S,OAAOyN,GAAG4J,SAC1BzE,EAAgB5S,OAAOyN,GAAG4J,QAAQC,UAClC1E,EAAgB5S,OAAOyN,GAAG4J,QAAQC,SAASpX,KAMhD,GALI0S,EAAgBjD,KAAKyC,WAAa0C,EAAOjJ,SAC3CiJ,EAAOjJ,QAAQnK,MAAMkR,EAAiBrW,WAExC0Q,EAAiByH,UAAY,GAEM,cAA/B1I,EAAQiI,UAAU9F,GAAyB,CAE7C,IAAMsH,sBAEN,MADA7C,EAAgBiC,QAAQY,GAClBA,EAIN,QAAgD,IAArCzJ,EAAQiI,UAAU9F,GAASjO,GAAuB,CAC3D,IAAMuV,yBACA8B,EAAY1a,KAAKmD,OAAOiO,aAAawH,IAAQA,EAEnD,MADA7C,EAAgBiC,QAAQ0C,GAClB9B,EAsBN,GAmLR,SAAyBxD,EAAIrF,GAC3B,IAAI5Q,EAAO,GACPwb,EAAsB,GACtBC,EAAa,GACe,QAA5B7K,EAAQ6B,OAAO9U,UAAkD,WAA5BiT,EAAQ6B,OAAO9U,WACtD6d,EAAsB,wBAEpB5K,EAAQuE,QACVsG,EAAa,sBAEf,IAAIvR,0BAAoCsR,EAApC,IAA2DC,EAA3D,WAGAC,EAAQ,aACRC,EAAmB,SAFK,CAAC,OAAQ,SAAU,SAGvBpT,SAASqI,EAAQ6B,OAAOE,aAC9CgJ,EAAmB/K,EAAQ6B,OAAOE,WAEJ,SAA5B/B,EAAQ6B,OAAO9U,UAAmD,UAA5BiT,EAAQ6B,OAAO9U,WACvD+d,EAAQ,WARgB,CAAC,MAAO,SAAU,UASpBnT,SAASqI,EAAQ6B,OAAOE,aAC5CgJ,EAAmB/K,EAAQ6B,OAAOE,YAGlC/B,EAAQ6B,QAAU7B,EAAQ6B,OAAOC,OAEjCxI,EAD8B,QAA5B0G,EAAQ6B,OAAO9U,UAAkD,SAA5BiT,EAAQ6B,OAAO9U,SACtDuM,6CAAyDwR,EAAzD,mBAAiF9K,EAAQ6B,OAAO9U,SAAhG,yBAAiIge,EAAjI,WAA4JzR,EAE7IA,EAAf,6CAAqEwR,EAArE,mBAA6F9K,EAAQ6B,OAAO9U,SAA5G,yBAA6Ige,EAA7I,YAGA/K,EAAQsE,QACVlV,kBAAuB4Q,EAAQU,MAA/B,MAEEV,EAAQM,OAASN,EAAQO,YAC3BnR,qCAA0C4Q,EAAQU,MAAlD,WAAkEV,EAAQM,MAA1E,UAEEN,EAAQQ,WACVpR,wCAA6C4Q,EAAQU,MAArD,cAAwEV,EAAQQ,SAAhF,UAEFpR,gEAAqE0b,EAArE,IAA8E9K,EAAQU,MAAtF,cAAyGV,EAAQU,MAAjH,cAAoIoK,EAApI,KAA8IxR,EAA9I,SACI0G,EAAQS,QACVrR,qCAA0C4Q,EAAQU,MAAlD,WAAkEV,EAAQS,MAA1E,UAEET,EAAQsE,QACVlV,GAAQ,UAGViW,EAAGyC,UAAY1Y,EArPT4b,CAAgB3K,EACd2F,EAAgB5S,QAEdoX,IACF,EAAAS,EAAAhZ,SAAqB,CACnB+D,QAASqK,EACT9M,KAAMyS,EAAgBT,QAAQ3T,OAC9B0B,KAAM0S,EAAgB5S,OAAOyN,GAAG4J,QAAQC,SAASpX,KACjD7B,MAAOuU,EAAgB5S,OAAOyN,GAAG4J,QAAQC,SAASjZ,QAGlD6Y,IACF,EAAAY,EAAAjZ,SAAwB,CACtB+D,QAASqK,EACT9M,KAAMyS,EAAgBuE,qBAGEvE,EAAgB5S,OAApCuQ,iBAE6B,oBAAzBwH,qBADZ,CAYqB,IAAIA,qBAVQ,SAAClO,EAAQmO,GACpCnO,EAAO/E,QAAQ,SAAAmN,GACVA,EAAGgG,iBACArF,EAAgBjD,KAAK0C,YACvBrG,EAAQiI,UAAU9F,GAASjO,GAAMyH,OAAO/Q,KAAKgc,GAC7CA,EAAgBjD,KAAK0C,WAAY,QAMhC6F,QAAQjL,OAbrB,CAiBA,GAAmD,WAAhD2F,EAAgB5S,OAAOwS,sBACD,oBAAbzZ,SAA0B,CAClC,IAAIof,SAAQC,cACmB,IAApBrf,SAASof,QAClBA,EAAS,SACTC,EAAmB,yBACmB,IAAtBrf,SAASsf,UACzBF,EAAS,WACTC,EAAmB,2BACuB,IAA1Brf,SAASuf,eACzBH,EAAS,eACTC,EAAmB,+BAOmB,IAA9Brf,SAASqB,uBACLmE,IAAX4Z,GACDpf,SAASqB,iBAAiBge,EAPG,YACzBrf,SAASof,IAAWvF,EAAgBjD,KAAKC,WAAW/C,IACtD+F,EAAgBjD,KAAKC,WAAW/C,GAAG0L,KAAK3F,EAAgBT,QAAQ3T,SAKE,CAClEga,MAAM,IAKdxM,EAAQiI,UAAU9F,GAASjO,GAAMyH,OAAO/Q,KAAKgc,GAC7CA,EAAgBjD,KAAK0C,WAAY,KAKhCsE,GAGT3K,EAAQ3T,UAAU+V,WAAa,SAASxS,GAItC,OAHIiB,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,wFAETvV,UAAU3D,QACfiE,KAAKmD,OAAOoO,WAAcxS,EAAMZ,OAAOY,GAAO,KAE9CwS,EAAWvR,MAEJA,MALuBA,KAAKmD,OAAOoO,YAoB5CpC,EAAQ3T,UAAUgW,cAAgB,SAASzS,GAIzC,OAHIiB,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,8FAETvV,UAAU3D,QACfiE,KAAKmD,OAAOqO,cAAiBzS,EAAMZ,OAAOY,GAAO,KAEjDyS,EAAcxR,MAEPA,MALuBA,KAAKmD,OAAOqO,eAc5CrC,EAAQ3T,UAAUkW,QAAU,SAASkK,GAInC,OAHI5b,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,kFAETvV,UAAU3D,QACfiE,KAAKmD,OAAOuO,UAAUkK,EACf5b,MAFuBA,KAAKmD,OAAOuO,SAK5CvC,EAAQ3T,UAAUiV,MAAQ,SAAS1R,GAIjC,OAHIiB,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,8EAETvV,UAAU3D,QACfiE,KAAKmD,OAAOsN,MAAS1R,EAAMZ,OAAOY,GAAO,KAClCiB,MAFuBA,KAAKmD,OAAOsN,OAK5CtB,EAAQ3T,UAAU6U,MAAQ,SAAStR,GAIjC,OAHIiB,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,8EAETvV,UAAU3D,QACfiE,KAAKmD,OAAOkN,MAAStR,EAAMZ,OAAOY,GAAO,KAClCiB,MAFuBA,KAAKmD,OAAOkN,OAK5ClB,EAAQ3T,UAAU6H,KAAO,SAAStE,GAIhC,OAHIiB,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,4EAETvV,UAAU3D,QACfiE,KAAKmD,OAAOE,KAAQtE,EAAMmW,EAAkBnW,GAAO,KAC5CiB,MAFuBA,KAAKmD,OAAOE,MAK5C8L,EAAQ3T,UAAUwH,OAAS,WACzB,IAAMsO,EAAUtR,KAAKmD,OAAOmO,QACtBjO,EAAOrD,KAAKmD,OAAOE,KACnB0C,EAAU/F,KAAKoV,KAIrB,OAHI9D,GAAWjO,GAAQ0C,GAAWoJ,EAAQiI,UAAU9F,GAASjO,GAAML,QACjEmM,EAAQiI,UAAU9F,GAASjO,GAAML,OAAO6B,MAAM7E,KAAMN,WAE/CM,MAGTmP,EAAQ3T,UAAUsE,MAAQ,SAASiY,GAIjC,OAHI/X,KAAKmD,OAAO+M,yBACd8E,QAAQC,IAAI,4CAEPjV,MAGTmP,EAAQ3T,UAAUqgB,YAAc,WAAiD,IAAAC,EAAApc,UAAA3D,OAAA,QAAA2F,IAAAhC,UAAA,GAAAA,UAAA,GAAJ,GAAIqc,EAAAD,EAAtChV,eAAsCpF,IAAAqa,EAA5B,EAA4BA,EAAAC,EAAAF,EAAzB/U,eAAyBrF,IAAAsa,EAAf,OAAeA,GAC/E,EAAAC,EAAAja,SAAY,CACVjB,KAAMf,KAAKmD,OAAOiN,iBAClBtJ,UACAC,aAIJoI,EAAQ3T,UAAU0gB,WAAa,WAAsB,IAAb7Y,EAAa3D,UAAA3D,OAAA,QAAA2F,IAAAhC,UAAA,GAAAA,UAAA,GAAR,QAC3C,EAAAyc,EAAAna,SAAW,CACTsB,KAAMtD,KAAKsV,QAAQ3T,OACnB0B,UAKJ8L,EAAQ3T,UAAU4gB,UAAYjN,EAAQ3T,UAAU6H,KAChD8L,EAAQ3T,UAAUqd,MAAQ1J,EAAQ3T,UAAUwc,QAC5C7I,EAAQ3T,UAAU6gB,aAAelN,EAAQ3T,UAAU8H,KACnD6L,EAAQ3T,UAAU8gB,aAAe,WAE/B,OAAOtc,MAETmP,EAAQ3T,UAAU+gB,WAAa,WAE7B,OAAOvc,MAGTmP,EAAQ9E,QAAUmS,UAAInS,kBA8FP8E,mFCp/BC2J,aAAT,SAAsBrQ,GAC3B,IAAMlH,EAAOvB,KACPZ,EAAsB,iBAANqJ,EAAkBA,EAAIzI,KAAK2B,OAAO,GAAGiC,QAAQ6E,GAE/DrJ,GAAS,IACX,EAAAkC,EAAA1F,MAAK2F,EAAKI,OAAQ,SAASC,EAAKtI,GAC9BiI,EAAKI,OAAOrI,GAAGmjB,OAAOrd,EAAO,KAGjC,OAAOmC,KAGOmb,UAAT,SAAmBjU,GACxB,IAAIrJ,EAAsB,iBAANqJ,EAAkBA,EAAIzI,KAAKmC,aAAa,GAAGyB,QAAQ6E,GAEnErJ,GAAS,GACXY,KAAK2B,OAAO8a,OAAOrd,EAAO,GAE5B,OAAOY,MApBT,IAAAsB,EAAA3H,EAAA,oFCEgBgjB,cAAT,SAAuB3F,GAC5B,IAAMzV,EAAOvB,KACP4c,EAAQ,GAgBd,OAdA,EAAAtb,EAAA1F,MAAK2F,EAAKI,OAAQ,SAASC,EAAKtI,GAC9BsjB,EAAM/b,KAAK,OAGb,EAAAS,EAAA1F,MAAK2F,EAAKI,OAAO,GAAI,SAASO,EAAK5I,GACjC,IAAIujB,EAAiBtb,EAAKY,aAAa7I,IAC9B,GAALA,GAAU0d,EAAGjd,KAAKwH,EAAMsb,EAAgBvjB,MAC1C,EAAAgI,EAAA1F,MAAKihB,EAAgB,SAAShb,EAAMib,GAClCF,EAAME,GAAIjc,KAAKgB,OAKrBN,EAAK+B,KAAKsZ,GACHrb,KAGOwb,WAAT,SAAoB/F,GACzB,IAAMzV,EAAOvB,KACP4c,EAAQ,GASd,OAPA,EAAAtb,EAAA1F,MAAK2F,EAAKI,OAAQ,SAASC,EAAKtI,IACrB,GAALA,GAAU0d,EAAGjd,KAAKwH,EAAMK,EAAKtI,KAC/BsjB,EAAM/b,KAAKe,KAIfL,EAAK+B,KAAKsZ,GACHrb,GAlCT,IAAAD,EAAA3H,EAAA,oFCIgBqjB,aAAT,SAAsB5d,EAAOL,EAAKlB,GACvC,IAAM0D,EAAOvB,KACPwB,OAAiBE,IAAR3C,EAAqBA,EAAM,KAErB,mBAAVlB,GAET0D,EAAKI,OAAO,GAAG8a,OAAOrd,EAAO,EAAGoC,IAChC,EAAAF,EAAA1F,MAAK2F,EAAKI,OAAQ,SAASC,EAAKtI,GAC9B,IAAIuI,EACAvI,EAAI,SAEc,KADpBuI,EAAOhE,EAAM9D,KAAKwH,EAAMK,EAAKtI,MAE3BuI,EAAO,MAETN,EAAKI,OAAOrI,GAAGmjB,OAAOrd,EAAO,EAAGyC,SAM5BhE,GAASA,aAAiB/B,UAClC+B,EAAQA,GAAS,IAEP9B,QAAUwF,EAAKI,OAAO5F,OAAS,EACvC8B,EAAQA,EAAMiE,QAAQ,EAAAC,EAAAC,SAAeT,EAAKI,OAAO5F,OAAS,EAAI8B,EAAM9B,UAKpE,EAAAuF,EAAA1F,MAAKiC,EAAO,SAAShD,EAAOvB,GACtBiI,EAAKI,OAAO5F,OAAQ,EAAI8B,EAAM9B,QAChCqF,YAAUrH,KAAKwH,EAAMpD,OAAQoD,EAAKI,OAAO5F,WAK/CwF,EAAKI,OAAO,GAAG8a,OAAOrd,EAAO,EAAGoC,IAChC,EAAAF,EAAA1F,MAAKiC,EAAO,SAAShD,EAAOvB,GAC1BiI,EAAKI,OAAOrI,EAAE,GAAGmjB,OAAOrd,EAAO,EAAGvE,MAItC,OAAO0G,KAGO0b,UAAT,SAAmB7d,EAAOL,EAAKlB,GACpC,IAAM0D,EAAOvB,KACPiC,EAAS,GACTT,OAAiBE,IAAR3C,EAAqBA,EAAM,KAC1CkD,EAAOpB,KAAKW,GAES,mBAAV3D,IACT,EAAAyD,EAAA1F,MAAK2F,EAAKI,OAAO,GAAI,SAASH,EAAOlI,GACnC,IAAI4I,SACAL,SACAvI,EAAI,IACN4I,EAAMX,EAAKY,aAAa7I,QAEJ,KADpBuI,EAAOhE,EAAM9D,KAAKwH,EAAMW,EAAK5I,MAE3BuI,EAAO,MAETI,EAAOpB,KAAKgB,MAGhBN,EAAKI,OAAO8a,OAAOrd,EAAO,EAAG6C,MAGrBpE,GAASA,aAAiB/B,UAClC+B,EAAQA,GAAS,IAEP9B,QAAUwF,EAAKI,OAAO,GAAG5F,OAAS,EAC1C8B,EAAQA,EAAMiE,QAAQ,EAAAC,EAAAC,SAAgBT,EAAKI,OAAO,GAAG5F,OAAS,EAAI8B,EAAM9B,UAGxE,EAAAuF,EAAA1F,MAAKiC,EAAO,SAAShD,EAAOvB,GACtBiI,EAAKI,OAAO,GAAG5F,OAAQ,EAAI8B,EAAM9B,QACnCoF,eAAapH,KAAKwH,EAAMpD,OAAQoD,EAAKI,OAAO,GAAG5F,WAKrDwF,EAAKI,OAAO8a,OAAOrd,EAAO,EAAG6C,EAAOH,OAAOjE,KAG7C,OAAO0D,GAxFT,MAAAD,EAAA3H,EAAA,GACA0H,EAAA1H,EAAA,uCACAujB,EAAAvjB,EAAA,oFCAgBwI,aAAT,SAAsBsG,GAC3B,IAAM8Q,EAAS,GACTna,EAAsB,iBAANqJ,EAAkBA,EAAIzI,KAAK2B,OAAO,GAAGiC,QAAQ6E,GAE/DrJ,GAAS,QAAsC,IAA1BY,KAAK2B,OAAO,GAAGvC,KACtC,EAAAkC,EAAA1F,MAAKoE,KAAK2B,OAAQ,SAASC,EAAKtI,GAC9BigB,EAAO1Y,KAAKe,EAAIxC,MAGpB,OAAOma,KAGOvV,UAAT,SAAmByE,GACxB,IAAI8Q,EAAS,GACPna,EAAsB,iBAANqJ,EAAkBA,EAAIzI,KAAKmC,aAAa,GAAGyB,QAAQ6E,GAErErJ,GAAS,QAAmC,IAAvBY,KAAK2B,OAAOvC,KACnCma,EAASvZ,KAAK2B,OAAOvC,IAEvB,OAAOma,GArBT,IAAAjY,EAAA3H,EAAA,oFCGgB6c,YAAT,SAAqBzX,EAAKoe,GAC/B,IAAI5b,EAAOvB,KACPod,EAAOpd,KAAK2B,OAAO,GAAGF,MAAM,GAC5B4b,EAAO,GAEPrG,EAAKmG,GAAQG,UAAoB9X,eAsBrC,OAnBA,EAAAlE,EAAA1F,MAAKwhB,EAAM,SAASvb,EAAMvI,GACxB+jB,EAAKxc,KAAKU,EAAKY,aAAa7I,EAAE,GAAGmI,MAAM,MAEzC4b,EAAKta,KAAK,SAAS1J,EAAEkkB,GAEnB,IAAIC,EAAKxG,EAAGjd,KAAKwH,EAAMlI,GAAK2d,EAAGjd,KAAKwH,EAAMgc,GAC1C,OAAIC,EACc,QAARze,EAAgB,GAAK,EACnBye,EAGH,EAFS,QAARze,GAAiB,EAAI,KAKjC,EAAAuC,EAAA1F,MAAKyhB,EAAM,SAASnb,EAAK5I,GACvBiI,EACGuX,aAAaxf,EAAE,GACf0jB,aAAa1jB,EAAE,EAAG4I,EAAI,GAAIA,EAAIT,MAAM,MAElCF,KAGOkV,SAAT,SAAkB1X,EAAKoe,GAC5B,IAAI5b,EAAOvB,KACPod,EAAOpd,KAAK2B,OAAOF,MAAM,EAAE,GAC3BrF,EAAO4D,KAAK2B,OAAOF,MAAM,GACzBuV,EAAKmG,GAAQG,UAAoB7X,YAarC,OAZArJ,EAAK2G,KAAK,SAAS1J,EAAGkkB,GAEpB,IAAIC,EAAKxG,EAAGjd,KAAKwH,EAAMlI,GAAK2d,EAAGjd,KAAKwH,EAAMgc,GAC1C,OAAIC,EACc,QAARze,EAAgB,GAAK,EACnBye,EAGH,EAFS,QAARze,GAAiB,EAAI,IAKjCwC,EAAK+B,KAAK8Z,EAAKtb,OAAO1F,IACfmF,GAlDT,MAAAD,EAAA3H,EAAA,GACA8jB,EAAA9jB,EAAA,yHCGgBuc,aAAT,SAAsBzN,EAAG5K,GAC9B,IAAI0D,EAAOvB,KACPZ,EAAsB,iBAANqJ,EAAkBA,EAAIzI,KAAK2B,OAAO,GAAGiC,QAAQ6E,GAE7DrJ,GAAS,IAEU,mBAAVvB,GAET,EAAAyD,EAAA1F,MAAK2F,EAAK+B,OAAQ,SAAS1B,EAAKtI,GAC9B,IAAIuI,EACAvI,EAAI,QAEc,KADpBuI,EAAOhE,EAAM9D,KAAKwH,EAAMK,EAAIxC,GAAQ9F,EAAGsI,MAErCL,EAAKI,OAAOrI,GAAG8F,GAASyC,OAKpBhE,GAASA,aAAiB/B,UACpC+B,EAAQA,GAAS,IAEP9B,QAAUwF,EAAK+B,OAAOvH,OAAS,EACvC8B,EAAQA,EAAMiE,QAAQ,EAAAC,EAAAC,SAAeT,EAAK+B,OAAOvH,OAAS,EAAI8B,EAAM9B,UAKpE,EAAAuF,EAAA1F,MAAKiC,EAAO,SAAShD,EAAOvB,GACtBiI,EAAKI,OAAO5F,OAAQ,EAAI8B,EAAM9B,QAChCqF,YAAUrH,KAAKwH,EAAMpD,OAAQoD,EAAKI,OAAO5F,YAK/C,EAAAuF,EAAA1F,MAAKiC,EAAO,SAAShD,EAAOvB,GAC1BiI,EAAKI,OAAOrI,EAAE,GAAG8F,GAASvE,MAMhC,OAAO0G,KAGO0U,UAAT,SAAmBxN,EAAG5K,GAC3B,IAAI0D,EAAOvB,KACPZ,EAAsB,iBAANqJ,EAAkBA,EAAIzI,KAAKmC,aAAa,GAAGyB,QAAQ6E,GAEnErJ,GAAS,IAEU,mBAAVvB,GAET,EAAAyD,EAAA1F,MAAK2F,EAAK+B,OAAOlE,GAAQ,SAASvE,EAAOvB,GACvC,IAAI4I,EAAMX,EAAKY,aAAa7I,GAC5BuI,EAAOhE,EAAM9D,KAAKwH,EAAM1G,EAAOvB,EAAG4I,QACd,IAATL,IACTN,EAAKI,OAAOvC,GAAO9F,GAAKuI,OAIlBhE,GAASA,aAAiB/B,UACpC+B,EAAQA,GAAS,IAEP9B,QAAUwF,EAAKI,OAAO,GAAG5F,OAAS,EAC1C8B,EAAQA,EAAMiE,QAAQ,EAAAC,EAAAC,SAAgBT,EAAKI,OAAO,GAAG5F,OAAS,EAAI8B,EAAM9B,UAGxE,EAAAuF,EAAA1F,MAAKiC,EAAO,SAAShD,EAAOvB,GACtBiI,EAAKI,OAAO,GAAG5F,OAAQ,EAAI8B,EAAM9B,QACnCoF,eAAapH,KAAKwH,EAAMpD,OAAQoD,EAAKI,OAAO,GAAG5F,YAKrD,EAAAuF,EAAA1F,MAAKiC,EAAO,SAAShD,EAAOvB,GAC1BiI,EAAKI,OAAOvC,GAAO9F,EAAE,GAAKuB,MAKhC,OAAO0G,GApFT,MAAAD,EAAA3H,EAAA,GACA0H,EAAA1H,EAAA,uCACAujB,EAAAvjB,EAAA,4FCIe,SAAoB+jB,GAEjC,OADAxa,EAAUwa,EACH,SAASvjB,GACd,IAAI4V,EAAUjU,MAAMN,UAAUiG,MAAM1H,KAAK2F,UAAW,GAEpD,GAAKie,EAAQxjB,GAIX,OAAOwjB,EAAQxjB,GAAM0K,MAAM7E,KAAM+P,GAHjC,KAAM,oCAVZ,IAAAzO,EAAA3H,EAAA,GACAikB,EAAAjkB,EAAA,IACAkkB,EAAAlkB,EAAA,IAJIuJ,SAoOJ,IAAMya,EAAU,CACdG,OAjNF,WACE,OAAO,SAASC,GACd,OAAO,IAAI7a,GACRM,IAAI,CAAC,QAAS,UAAWua,EAAIxE,QAC7BlW,KAAK,YA8MViV,SAzMF,WACE,IAAIvI,EAAUjU,MAAMN,UAAUiG,MAAM1H,KAAK2F,WACzC,OAAO,SAASqe,GACd,IAAIzI,GAAU,IAAIpS,GACfG,KAAK,YAKR,OAJA,EAAA/B,EAAA1F,MAAKmiB,EAAIxE,OAAQ,SAASyE,EAAQ1kB,GAChC,IAAI8F,EAAQ2Q,EAAQ,IAAqB,kBAAfA,EAAQ,GAAyBiO,EAAOzF,UAAUjU,IAAM0Z,EAAOzF,UAAUlU,MACnGiR,EAAQ9R,IAAI,CAAC,SAAUpE,GAAQ4e,EAAOnjB,SAEjCya,IAiMT2I,iBA7LF,WACE,OAAO,SAASF,GACd,IAAIzI,GAAU,IAAIpS,GACfG,KAAK,kBAUR,OATA,EAAA/B,EAAA1F,MAAKmiB,EAAIxE,OAAQ,SAASyE,EAAQ1kB,GAChC,IAAIkI,GACJ,EAAAF,EAAA1F,MAAKoiB,EAAQ,SAASnjB,EAAOM,GACf,WAARA,IACFqG,EAAQrG,KAGZma,EAAQ9R,IAAI,CAAC,SAAUrF,OAAO6f,EAAOxc,KAAUwc,EAAOzE,UAEjDjE,IAiLT4I,mBA5KF,WACE,IAAInO,EAAUjU,MAAMN,UAAUiG,MAAM1H,KAAK2F,WACzC,OAAO,SAASqe,GACd,IAAIzI,GAAU,IAAIpS,GACfG,KAAK,oBAkBR,OAjBA,EAAA/B,EAAA1F,MAAKmiB,EAAIxE,OAAQ,SAASyE,EAAQ1kB,GAChC,IAAI8F,EAAQ2Q,EAAQ,IAAqB,kBAAfA,EAAQ,GAAyBiO,EAAOzF,UAAUjU,IAAM0Z,EAAOzF,UAAUlU,MAC/F2Z,EAAOnjB,MAAMkB,QACf,EAAAuF,EAAA1F,MAAKoiB,EAAOnjB,MAAO,SAASsjB,EAAOjW,GACjC,IAAI1G,GACJ,EAAAF,EAAA1F,MAAKuiB,EAAO,SAAStjB,EAAOM,GACd,WAARA,IACFqG,EAAQrG,KAGZma,EAAQ9R,IAAI,CAAErF,OAAOggB,EAAM3c,IAASpC,GAAS+e,EAAM5E,UAIrDjE,EAAQlU,UAAUhC,KAGfkW,IAuJT8I,wBAlJF,WACE,IAAIrO,EAAUjU,MAAMN,UAAUiG,MAAM1H,KAAK2F,WACzC,IAAKqQ,EAAQ,GAAI,KAAM,mGACvB,OAAO,SAASgO,GACd,IAAIzI,GAAU,IAAIpS,GACfG,KAAK,yBAKR,OAJA,EAAA/B,EAAA1F,MAAKmiB,EAAIxE,OAAQ,SAASyE,EAAQ1kB,GAChC,IAAI+kB,EAAWL,EAAOjO,EAAQ,GAAG,IAAM,IAAMiO,EAAOjO,EAAQ,GAAG,IAC/DuF,EAAQ9R,IAAI,CAAE,SAAU6a,GAAYL,EAAOzE,UAEtCjE,IAyITgJ,0BApIF,WACE,IAAIvO,EAAUjU,MAAMN,UAAUiG,MAAM1H,KAAK2F,WACzC,IAAKqQ,EAAQ,GAAI,KAAM,mGACvB,OAAO,SAASgO,GACd,IAAIzI,GAAU,IAAIpS,GACfG,KAAK,2BAQR,OAPA,EAAA/B,EAAA1F,MAAKmiB,EAAIxE,OAAQ,SAASyE,EAAQ1kB,GAChC,IAAI8F,EAAQ2Q,EAAQ,IAAqB,kBAAfA,EAAQ,GAAyBiO,EAAOzF,UAAUjU,IAAM0Z,EAAOzF,UAAUlU,OACnG,EAAA/C,EAAA1F,MAAKoiB,EAAA,MAAiB,SAASnjB,EAAOqN,GACpC,IAAI1G,EAAQ3G,EAAMkV,EAAQ,GAAG,IAAM,IAAMlV,EAAMkV,EAAQ,GAAG,IAC1DuF,EAAQ9R,IAAI,CAAEhC,EAAOpC,GAASvE,EAAM0e,YAGjCjE,IAwHT3B,OApHF,WACE,OAAO,SAASoK,GACd,IAAIxE,EAAQgF,EAAOjJ,EAsBnB,YArByB,IAAdyI,EAAIQ,YACc,IAAfR,EAAIxE,QACTwE,EAAIxE,kBAAkBzd,OAEvByd,EAASwE,EAAIxE,OACbgF,EAAQR,EAAIQ,YAEiB,IAArBR,EAAIxE,OAAOgF,YACS,IAAtBR,EAAIxE,OAAOA,QAChBwE,EAAIxE,OAAOA,kBAAkBzd,QAE9Byd,EAASwE,EAAIxE,OAAOA,OACpBgF,EAAQR,EAAIxE,OAAOgF,QAE3BjJ,GAAU,IAAIpS,GAAUG,KAAK,WACrBlC,aAAa,eACrB,EAAAG,EAAA1F,MAAK2d,EAAQ,SAAS1e,EAAOvB,QACN,IAAVilB,GAAyBA,EAAMjlB,IACxCgc,EAAQlU,UAAUjD,OAAOogB,EAAMjlB,GAAGkgB,kBAAmB,CAAC3e,MAGnDya,IA6FTjT,KAzFF,WACE,OAAO,SAAS0b,GACd,IAAIzI,GAAU,IAAIpS,GACfG,KAAK,QAIR,OAHA,EAAA/B,EAAA1F,MAAKmiB,EAAIxE,OAAQ,SAAS1e,EAAOvB,GAC/Bgc,EAAQ9R,IAAK,CAAE,SAAUrF,OAAO7E,EAAE,IAAMuB,KAEnCya,IAmFTkJ,WA/EF,WACE,IAAIrb,EAASnD,KAAKmD,OAClB,OAAO,SAAS4a,GACd,IAAMU,GAAoB,IAAIvb,GAC3BG,KAAK,cAGJqb,EAAQpkB,OAAOuf,MAAK,EAAA+D,EAAAe,SAAQZ,EAAIxE,OAAO,KAErCqF,EAAczb,GAAUA,EAAOqQ,MACrC,GAAIoL,GAAsC,YAAvBA,EAAYnL,OAAsB,CACnD,IAAMhC,EAAUsM,EAAIxE,OACdM,EAAO,GACbpI,EAAQxJ,QAAQ,SAAAwQ,GACd,IAAMoG,EAAavkB,OAAOuf,MAAK,EAAA+D,EAAAe,SAAQlG,IACnCoG,GAAcA,EAAW9iB,QAC3B8iB,EAAW5W,QAAQ,SAAA6W,GACZjF,EAAKiF,KACRjF,EAAKiF,IAAW,OAKxBJ,EAAQpkB,OAAOuf,KAAKA,GAItB6E,EAAMzW,QAAQ,SAAApN,GACZ4jB,EAAkBjb,IAAI,CAAE3I,EAAO,KAAOA,KAIpCqI,GACEC,GACCA,EAAOqQ,OACPrQ,EAAOqQ,MAAMuL,UAChBL,EAAQvb,EAAOqQ,MAAMuL,SAIzB,IAAK,IAAIzlB,EAAE,EAAGA,EAAEykB,EAAIxE,OAAOxd,OAAQzC,IAAI,CAErC,IADA,IAAI0kB,EAAS,CAAC1kB,EAAE,GACP0lB,EAAO,EAAGA,EAAON,EAAM3iB,OAAQijB,IACtChB,EAAOnd,MAAK,EAAAgd,EAAAoB,gBAAelB,EAAIxE,OAAOjgB,GAAIolB,EAAMM,KAElDP,EAAkB9c,OAAOxD,OAAO7E,EAAE,IAAM0kB,EAK1C,OAFAS,EAAkB3F,aAAa,GAExB2F,IA8BTS,eA1BF,WACE,OAAO,SAASnB,GACd,IAAMoB,GAAiB,IAAIjc,GACxBG,KAAK,WAQR,OANA,EAAA/B,EAAA1F,MAAKmiB,EAAIxE,OAAQ,SAAS1e,EAAOvB,GAC/B,IAAM8lB,EAAU9kB,OAAOuf,KAAKhf,GACtByF,EAAIzF,EAAMukB,EAAQ,IAClB5e,EAAI3F,EAAMukB,EAAQ,IACxBD,EAAe/d,UAAU,CAAEjD,OAAOmC,GAAInC,OAAOqC,GAAI3F,EAAM0e,WAElD4F,sSC5NKR,QAAT,SAASA,EAAQU,GACtB,IAAIC,EAAW,GACf,IAAK,IAAIhmB,KAAK+lB,EACZ,GAAKA,EAAG5jB,eAAenC,GACvB,GAAsB,UAAlBqJ,EAAQ0c,EAAG/lB,KAA6B,OAAV+lB,EAAG/lB,GAAa,CAChD,IAAIimB,EAAaZ,EAAQU,EAAG/lB,IAC5B,IAAK,IAAIgH,KAAKif,EACPA,EAAW9jB,eAAe6E,KAC/Bgf,EAAShmB,EAAI,IAAMgH,GAAKif,EAAWjf,SAGrCgf,EAAShmB,GAAK+lB,EAAG/lB,GAGrB,OAAOgmB,oFCjBOL,eAAT,SAASA,EAAepY,EAAK2Y,EAAI3kB,GACtC,MAAiB,iBAAN2kB,EACFP,EAAepY,EAAK2Y,EAAGhhB,MAAM,KAAM3D,GACxB,GAAX2kB,EAAGzjB,aAAqB2F,IAAR7G,GAA6B,OAARgM,QACtB,IAAfA,EAAI2Y,EAAG,IACP3Y,EAAI2Y,EAAG,IAAM3kB,EACF,GAAX2kB,EAAGzjB,OACH8K,OACc,IAAP2Y,QAAqC,IAAR3Y,GACjC,OAAP2Y,GAAuB,OAAR3Y,QACO,IAAfA,EAAI2Y,EAAG,IACV,KAEAP,EAAepY,EAAI2Y,EAAG,IAAKA,EAAG/d,MAAM,GAAI5G,k4HCTpC,SAAUyI,GACvB,OAAK5D,UAAU3D,OACXuH,aAAgBJ,WAClBlD,KAAKsV,QAAUhS,EACRtD,MAKX,SAAuByf,GACrB,IAAInK,EACAtE,EACA5N,EACAc,EAEAmU,EACAqH,EACArP,EACAhN,EAJAsc,EAAa,GAMjB3O,EAAUhR,KAAKmD,OAAO6N,QACtB5N,EAAOqc,EAASG,UAAY,GAC5BvH,OAAmC,IAAnBoH,EAASpH,MAAyBoH,EAASpH,MAAQ,GAavC,YAV5BA,GAAQ,EAAApV,EAAAzD,QAAO,CACbia,cAAe,KACfD,iBAAkB,KAClBqG,QAAS,GACTC,SAAU,KACVxH,SAAU,KACVC,UAAW,KACXhF,SAAU,MACT8E,IAEOoB,cACRvV,EAAS,SAEsB,eAAxBmU,EAAMoB,cACbvV,EAAS,aAEsB,kBAAxBmU,EAAMoB,cACRpB,EAAMyH,UAAazH,EAAMC,WAC5BpU,EAAS,QAIJmU,EAAMoB,gBACRpB,EAAMyH,UAAazH,EAAMC,SAGrBD,EAAMyH,WAAazH,EAAMC,SAC5BD,EAAMyH,oBAAoBhkB,OAASuc,EAAMyH,SAAS/jB,OAAS,GAC7DmI,EAAS,wBACTyb,EAAW9e,KAAKwX,EAAMyH,WAGtB5b,EAAS,iBAGJmU,EAAMC,WAAaD,EAAMyH,UAChC5b,EAAS,WACTyb,EAAW9e,KAAKmQ,IAETqH,EAAMyH,UAAYzH,EAAMC,WAC3BD,EAAMyH,oBAAoBhkB,OAASuc,EAAMyH,SAAS/jB,OAAS,GAC7DmI,EAAS,0BACTyb,EAAW9e,KAAKwX,EAAMyH,UACtBH,EAAW9e,KAAKmQ,KAGhB9M,EAAS,mBACTyb,EAAW9e,KAAKmQ,KAvBlB9M,EAAS,UA4BRA,IAI4B,iBAApBub,EAASlG,SAClBrV,EAAS,UAKPub,EAASlG,kBAAkBzd,OAAS2jB,EAASlG,OAAOxd,OAAS,KAI3D0jB,EAASlG,OAAO,GAAGhB,WAAiD,iBAA5BkH,EAASlG,OAAO,GAAG1e,OAAiD,MAA5B4kB,EAASlG,OAAO,GAAG1e,QACrGqJ,EAAS,WACTyb,EAAW9e,KAAKmQ,IAKsB,iBAA7ByO,EAASlG,OAAO,GAAGA,SAC5BrV,EAAS,kBAIc,YAArBlE,KAAKmD,OAAOE,MAAsB/I,OAAOuf,KAA4B,IAAvB4F,EAASlG,OAAO,IAAiD,iBAA9BkG,EAASlG,OAAO,GAAGA,UACtGrV,EAAS,gBAKPub,EAASlG,OAAO,GAAG1e,iBAAiBiB,QACtCoI,EAAS,mBACTyb,EAAW9e,KAAKmQ,IAKgB,iBAAvByO,EAASlG,OAAO,SACI,IAAnBkG,EAASlB,QACjBra,EAAS,SAETmU,EAAMkG,MAAQkB,EAASlB,OAKQ,iBAAvBkB,EAASlG,OAAO,IAAgD,iBAAtBkG,EAASlG,OAAO,SAA6C,IAAnBkG,EAASlB,QACvGra,EAAS,QAKNA,IACHA,EAAS,eAIRA,IACHA,EAAS,oBAKaxC,IAAtB1B,KAAKmD,OAAOkN,QAEZA,EADEjN,EAAK2c,aACC3c,EAAK2c,aA6CnB,SAAyB1H,GACvB,IACIhI,EADA2P,EAAW3H,EAAMoB,cAAgBpB,EAAMoB,cAAc7T,QAAQ,IAAK,KAAO,GAG7EyK,EAAQ2P,EAASpa,QAAS,OAAQ,SAASvM,GACzC,OAAOA,EAAE4mB,gBAGP5H,EAAMmB,mBACRnJ,GAAS,MAAQgI,EAAMmB,kBAEzB,OAAOnJ,EArDK6P,CAAgB7H,GAE1BrY,KAAKmD,OAAOkN,MAAQA,GAIjBrQ,KAAKmD,OAAOE,OAEbA,EADED,EAAK+c,eAAiB/c,EAAK+c,cAAcC,WACpChd,EAAK+c,cAAcC,WAgDhC,SAAwBlc,GACtB,IAAIb,SACJ,OAAQa,GACN,IAAK,SACHb,EAAO,SACP,MACF,IAAK,WACHA,EAAO,OACP,MACF,IAAK,iBACL,IAAK,wBACHA,EAAO,MACP,MACF,IAAK,mBACL,IAAK,0BACHA,EAAO,OACP,MACF,IAAK,SACHA,EAAO,iBACP,MACF,IAAK,OACL,IAAK,aACL,QACEA,EAAO,QAEX,OAAOA,EAtEIgd,CAAenc,GAExBlE,KAAKmD,OAAOE,KAAOA,GAIrBqc,EAAiBxc,UAAQgB,OAAOW,MAAM7E,KAAM,CAACkE,GAAQpC,OAAO6d,IAG5DrK,EAAUoK,GAAe,EAAAzc,EAAAzD,QAAOigB,EAAU,CAAEpH,MAASA,KAGjDnU,EAAON,QAAQ,aAAe,GAChC0R,EAAQY,aAAa,EAAG,SAASrb,EAAOvB,GACtC,OAAO,IAAIgnB,KAAKzlB,KAIpBya,EAAQW,UAAU,EAAG,SAASpb,EAAOvB,GACnC,OAAO,EAAAsW,EAAAlK,eAAc7K,KAGvBmF,KAAKsV,QAAUA,EAEXmK,EAASnF,qBACXta,KAAKsa,mBAAqBmF,EAASnF,oBAGrC,OAAOta,MApLgBjG,KAAKiG,KAAMsD,GALJtD,KAAKsV,QAAQhS,QAL7C,MAAAqM,EAAAhW,EAAA,wCACAsJ,EAAAtJ,EAAA,GACAiW,EAAAjW,EAAA,qQCuBe,SAAS+jB,GACtB,IAAI6C,SA2BJ,OA6ZF,SAA4BvJ,GAC1B,GAAsB,oBAAXzd,OAAwB,OACnCA,OAAOinB,SAAWjnB,OAAOsV,OAAS,aAC9BtV,OAAOgE,iBACThE,OAAOgE,iBAAiB,SAAUyZ,GAAI,GAE/Bzd,OAAOknB,aACdlnB,OAAOknB,YAAY,WAAYzJ,GA9bjC0J,CAAmB,WACbH,GACFI,aAAaJ,GAEf,IAAMK,EAASlD,EAAIjI,QAAQ1Z,OAAS,GAAM,IAAO,IACjDwkB,EAAQ5iB,WAAW,YACjB,EAAA2D,EAAA1F,MAAK8hB,EAAIjI,QAAS,SAASoL,GACzB,IAAMC,EAAUD,EAAM/N,KAAKC,WAAW/C,GACtC,GAAI8Q,EAAS,CACX,IAAMC,EAAcD,EAAQ/a,QAAQI,WAAWA,WAAW6a,YACtDlhB,EAAQihB,EACZ,GAAIF,EAAM1d,OAAOyO,QAAUiP,EAAM1d,OAAOyO,OAAOC,OAA0C,SAAjCgP,EAAM1d,OAAOyO,OAAO9U,UAAwD,UAAjC+jB,EAAM1d,OAAOyO,OAAO9U,UAAuB,CAC5I,IAAMmkB,EAAmBH,EAAQ/a,QAAQY,YAAcma,EAAQ/a,QAAQY,YAAYqa,YAAc,EAEjGlhB,EAAQihB,GADiBD,EAAQ/a,QAAQmb,gBAAkBJ,EAAQ/a,QAAQmb,gBAAgBF,YAAc,GAChEC,EAG3CH,EAAQjS,OAAO,CACb/O,cAKL8gB,KAMP,WACE,IAAMO,EAAQ,CACZnJ,kBACA8F,iBACAtK,gBACA0E,kBACAvE,OAAU,IAAIyN,UACdC,YAAa,IAAIC,UACjBC,oBAAqB,IAAIC,UACzBC,uBAAwB,IAAIC,UAC5BC,eAAgB,IAAIC,UACpBhN,QAAW,IAAIiN,UACfrN,WAAc,IAAIsN,WA0BdC,EAAc,SAAChc,EAASic,GAC5B,OAAOC,SAAS1oB,OAAO2oB,iBAAiBnc,GAAxB,UAA2Cic,GAAepc,QAAQ,KAAM,MAsU1F,OApPA,EAAAtE,EAAA1F,MA1GgB,CAEd,OACA,cACA,YACA,MACA,QACA,QACA,OACA,MACA,OACA,SAGA,kBACA,yBACA,uBACA,iBACA,kBACA,kBACA,qBAsFY,SAASyH,EAAMjE,GAC3B+hB,EAAM9d,GAAQ,CACZyH,OAAQ,WAAU,IAAAgF,EAAA9P,KACV+P,EAlFZ,WACE,IAAMoS,EAAmB,CACvBC,OAAQpiB,KAAKoV,KAAKrM,cAAc,IAAM/I,KAAKmD,OAAOsN,MAAQ,wBAC1D0B,MAAO,CACLkD,QAASrV,KAAKmD,OAAOuN,QAEvBpN,KAAM,CACJoN,YAAa1Q,KAAKmD,OAAOwN,cACzBoO,QAAS,GACT1b,KAAMrD,KAAKmD,OAAOE,KAAKuC,QAAQ,cAAe,MAI5Cyc,EAAmBriB,KAAKoV,KAE1B0C,EAASuK,EAAiBC,aAI9B,GAFAxK,GAAWiK,EAAYM,EAAkB,OAASN,EAAYM,EAAkB,UAE5EriB,KAAKmD,OAAOmN,UAAW,CACzB,IAAMiS,EAAeviB,KAAKoV,KAAKrM,cAAc,uBAE3C+O,GADEyK,EACQA,EAAaD,aAEbL,SACR1oB,OACG2oB,iBAAiBliB,KAAKoV,KAAM,MAC5B,aAAaxP,QAAQ,KAAK,KAKnC,GAAI5F,KAAKmD,OAAOoN,SAAU,CACxB,IAAMiS,EAAkBxiB,KAAKoV,KAAKrM,cAAc,0BAE9C+O,GADE0K,EACQA,EAAgBF,aAEhBL,SACR1oB,OACG2oB,iBAAiBliB,KAAKoV,KAAM,MAC5B,aAAaxP,QAAQ,KAAK,KAKnC,GAAI5F,KAAKmD,OAAOqN,MAAO,CACrB,IAAMiS,EAAeziB,KAAKoV,KAAKrM,cAAc,uBAE3C+O,GADE2K,EACQA,EAAaH,aAEbL,SACR1oB,OACG2oB,iBAAiBliB,KAAKoV,KAAM,MAC5B,aAAaxP,QAAQ,KAAK,KAKnC,IAAI9F,EAAQE,KAAKoV,KAAKrM,cAAc,aAAaiY,aAC5Ce,EAAYM,EAAkB,QAAUN,EAAYM,EAAkB,UACvEviB,EAAQ,IACVA,EAAQ,GAGV,IAAM4iB,EAAkB,CACtBlX,KAAM,CACJ1L,QACAgY,OACEA,EAAS,EACPA,OACEpW,IAMV,OAFuB,EAAAmO,EAAAhK,YAAW,GAAI6c,EAAiB1iB,KAAKmD,OAAQgf,IAQ9BpoB,KAAKiG,MAGjC2iB,GAAW,EAAAC,EAAAC,yBAAwB7iB,KAAKsV,QAAQ3T,QAwBtD,GAtByB,YAArBoO,EAAQoF,UAAoC,QAAT9R,GAA2B,mBAATA,GAAsC,SAATA,GAA4B,cAATA,GAAiC,gBAATA,IACnHrD,KAAKsV,QAAQ3T,OACzB3B,KAAKsV,QAAQ3T,OAAb,CAAuB3B,KAAKsV,QAAQ3T,OAAO,IAA3CG,OAAAoE,GAAkD,EAAA0c,EAAAE,mBAAkB9iB,KAAKsV,QAAQ3T,OAAQghB,KACrF5S,EAAQwE,YACVxE,EAAQrF,KAAO,CACblK,EAAG,CACD7D,QAAS,CACPI,IAAK,GAEPgmB,KAAM,CACJvb,OAAQ,SAAAtN,GAAA,OAAQA,EAAR,UAQd6V,EAAQuE,QACVtU,KAAKsV,QAAQ3T,OAAb,CAAuB3B,KAAKsV,QAAQ3T,OAAO,IAA3CG,OAAAoE,GAAkD,EAAA8c,EAAAhhB,SAAehC,KAAKsV,QAAQ3T,WAG1E3B,KAAKmD,OAAO8f,eAAiBlT,EAAQzM,KAAKyb,QAAQhjB,QAAUiE,KAAKsV,SAAWtV,KAAKsV,QAAQlS,KAAM,CACnG,IADmG8f,GAC/EljB,KAAKsV,QAAQlS,MAAQ,IACjCC,KACJ8f,EAAa,EACK,CAAC,YACLzb,cALiFhG,IAAAwhB,EAEpF,GAFoFA,KAMjGC,EAAa,GAEfpT,EAAQzM,KAAKyb,QAAQtC,OAAO0G,GAG9B,GAA8B,IAA1BnjB,KAAKsD,OAAO,GAAGvH,QAAuC,IAAvBiE,KAAKsD,OAAOvH,OAA/C,CASA,IAAIqnB,GAAe,EAiEnB,GA/Da,UAAT/f,GAEF0M,EAAQ6B,OAAOC,MAAO,EACtB9B,EAAQzM,KAAKyb,QAAU,CAAC,CACtB/e,KAAKmD,OAAOkN,OAASrQ,KAAKsD,OAAO,GAAG,GACpCtD,KAAKsD,OAAO,GAAG,KAEjB8f,GAAe,GAEC,QAAT/f,GAA2B,UAATA,EACzB0M,EAAQzM,KAAKyb,QAAU/e,KAAKsD,OAAO7B,MAAM,IAKrC4B,EAAKO,QAAQ,gBAAkB,IACjCmM,EAAQrF,KAAK2Y,QAAUhgB,EAAKO,QAAQ,gBAAkB,IAGpD,EAAAoS,EAAAhU,SAAahC,KAAKsD,OAAO,GAAG,KAE9ByM,EAAQrF,KAAKpK,EAAIyP,EAAQrF,KAAKpK,GAAK,GACnCyP,EAAQrF,KAAKpK,EAAE+C,KAAO,aACtB0M,EAAQrF,KAAKpK,EAAEyiB,KAAOhT,EAAQrF,KAAKpK,EAAEyiB,MAAQ,CAC3Cvb,OAAQxH,KAAKmD,OAAOwO,aAAc,EAAA2R,EAAAthB,SAAoBhC,KAAKsD,OAAO,GAAG,GAAItD,KAAKsD,OAAO,GAAKtD,KAAKsD,OAAO,GAAG,GAAKtD,KAAKsD,OAAO,GAAG,IAC7HigB,QAAS,CAAE3e,IAAK,IAGlBmL,EAAQzM,KAAKyb,QAAQ,GAAK,IAC1B,EAAAzd,EAAA1F,MAAKoE,KAAKsV,QAAQnT,aAAa,GAAI,SAASN,EAAMvI,GAC5CA,EAAI,IACNuI,EAAO,IAAIye,KAAKze,IAElBkO,EAAQzM,KAAKyb,QAAQ,GAAGzlB,GAAKuI,IAE/BkO,EAAQzM,KAAKyb,QAAQ,GAAG,GAAK,IAC7BhP,EAAQzM,KAAKhD,EAAI,IACbN,KAAKmD,OAAOuO,SAAW1R,KAAKsD,OAAO,GAAGvH,OAAS,IACjDgU,EAAQzM,KAAKkgB,OAAS,CAAExjB,KAAKsV,QAAQtR,UAAU,GAAGvC,MAAM,OAK1DsO,EAAQrF,KAAKpK,EAAIyP,EAAQrF,KAAKpK,GAAK,GACnCyP,EAAQrF,KAAKpK,EAAE+C,KAAO,WACtB0M,EAAQrF,KAAKpK,EAAEmjB,WAAazjB,KAAKsV,QAAQnT,aAAa,GAAGV,MAAM,GAC3DzB,KAAKmD,OAAOuO,SAAW1R,KAAKsD,OAAO,GAAGvH,OAAS,IACjDgU,EAAQzM,KAAKkgB,OAAS,CAAExjB,KAAKsV,QAAQtR,UAAU,GAAGvC,MAAM,MAI9B,IAA1BzB,KAAKsD,OAAO,GAAGvH,SACjBgU,EAAQ6B,OAAOC,MAAO,EACtBuR,GAAe,IAGjB,EAAA9hB,EAAA1F,MAAKoE,KAAKsD,OAAO,GAAI,SAASzB,EAAMvI,GAC9BA,EAAI,GACNyW,EAAQzM,KAAKyb,QAAQle,KAAKb,KAAKsV,QAAQnT,aAAa7I,KAEtD8B,KAAK4E,QAGLojB,EAAa,CACf,IAAMM,EAAgB1jB,KAAKoV,KAAKrM,cAAc,mBAC1C2a,IACFA,EAActW,SACd2C,EAAQvE,KAAK1L,MAAQE,KAAKoV,KAAKrM,cAAc,aAAaiY,aAE5DjR,EAAQ6B,OAAOC,MAAO,EAKxB,GAAI9B,EAAQuD,0BACPvD,EAAQuD,yBAAyBzB,MAHS,CAAC,OAAQ,cAAe,YAAa,OAAQ,SAAU,QAI1DjO,QAAQmM,EAAQ1M,OAAS,EACnE,CACA,IAAMoO,EAAU1B,EAAQzM,KAAKyb,SAAWhP,EAAQzM,KAAKyb,QAAQ,GAC7D,GAAItN,GAAWA,EAAQ1V,OAAS,EAAG,CACjC,IAAM4nB,EAAuB,CAC3BjZ,KAAM,IACNrG,MAAO,IAAIic,KAAK7O,EAAQA,EAAQ1V,OAAS,IACzC6nB,MAAO7T,EAAQuD,yBAAyB/M,WAE1CwJ,EAAQ8T,QAAR,GAAA/hB,OAAAoE,EAAuB6J,EAAQ8T,SAAW,IAA1C,CAA+CF,KAsDnD,GAjDI5T,EAAQtS,UAAoC,IAAzBsS,EAAQtS,QAAQoU,SAEZ,IAAxB9B,EAAQ6B,OAAOC,MACf9B,EAAQ6B,QACJ7B,EAAQ6B,OAAOnU,SACfsS,EAAQ6B,OAAOnU,QAAQoU,QAI5B9B,EAAQtS,QAAU,CAChBqmB,SAAUC,UACVvc,OAAQ,CACN6I,MAAOrQ,KAAKmD,OAAO1F,QAAQ+J,OAAO6I,MAClCxV,MAAO,SAACA,EAAOmpB,EAAOC,EAAI7kB,GACxB,IAAI8kB,EAoHpB,SAAkCrpB,EAAOmpB,EAAOC,EAAI7kB,GAClD,IAAMiE,EAAOrD,KAAKmD,OAAOE,KAEzB,IAAIrD,KAAK8S,KAAKC,WAAWf,YACX,UAAT3O,EASH,OAAOxI,EAND,IAAMspB,EAAQnkB,KAAK8S,KAAKC,WAAWf,WAAWf,OAC9C,OAAIkT,EAAMvgB,QAAQqgB,IAAO,EAChBppB,OADT,GA5HoDd,KAAK+V,EAAMjV,EAAOmpB,EAAOC,EAAI7kB,GAC3E,OAAI0Q,EAAK3M,OAAO1F,SAAWqS,EAAK3M,OAAO1F,QAAQ+J,QAAUsI,EAAK3M,OAAO1F,QAAQ+J,OAAO3M,OAElFqpB,EAAiBpU,EAAK3M,OAAO1F,QAAQ+J,OAAO3M,MAAMd,KAAK+V,EAAMoU,EAAgBF,EAAOC,EAAI7kB,GAE/D,YAArB2Q,EAAQoF,UAAoC,QAAT9R,GAA2B,mBAATA,GAAsC,SAATA,GAC1E,cAATA,GAAiC,gBAATA,IACzB6gB,EAAiBzf,YAAayf,EAAiB,IAAOvB,EAASvjB,IAAQwO,QAAQ,KAG7EmC,EAAQuE,OACA,QAAP2P,IACDC,GAAkBpU,EAAKwF,QAAQ3T,OAAOvC,EAAM,GAAG,IAG5C8kB,GAGgB,YAArBnU,EAAQoF,UAAoC,QAAT9R,GAA2B,mBAATA,GAAsC,SAATA,GAC1E,cAATA,GAAiC,gBAATA,GAKvB0M,EAAQuE,OACA,QAAP2P,IACDC,GAAkBpU,EAAKwF,QAAQ3T,OAAOvC,EAAM,GAAG,IAG5C8kB,IATLA,GAAmBA,EAAiB,IAAOvB,EAASvjB,IAAQwO,QAAQ,GAC7DnJ,WAAWyf,SAcA,IAAxBnU,EAAQ6B,OAAOC,KAAe,CAC9B,IAAMuS,OAAiBrU,GAEvBqU,EAAU9gB,KAAK6O,MAqD3B,SAA6BA,EAAOjY,GAClC,IAAMmJ,EAAOrD,KAAKmD,OAAOE,KACzB,GAAIrD,KAAK8S,KAAKC,WAAWf,YACX,UAAT3O,EAE+B,CAC5B,IAAM8gB,EAAQnkB,KAAK8S,KAAKC,WAAWf,WAAWf,OAC9C,OAAK/W,EAAE+pB,IAAME,EAAMvgB,QAAQ1J,EAAE+pB,KAAO,GAC9B/pB,IAAMA,EAAE+pB,IAAME,EAAMvgB,QAAQ1J,IAAM,EAC7BiY,EAGI,UAAT9O,GAA6B,QAATA,EACf,iBAGA,kBAKjB,OAAO8O,GA1E4C/W,KAAK4E,MAEhDokB,EAAUxS,OAAOyS,MAAO,EAGxBrkB,KAAK8S,KAAKC,WAAV,GAA6B/C,UAAGsU,SAASF,GAEzCG,UAAmBxqB,KAAKiG,KAAxB6U,EAAA,GAAkC9E,EAAlC,CAA2CyU,iBAAkB,WAC3D,IAAMd,EAAgB5T,EAAKsF,KAAKrM,cAAc,mBAC1C2a,IAE8B,QAA5B3T,EAAQ6B,OAAO9U,UACa,WAA5BiT,EAAQ6B,OAAO9U,UAEjBsnB,EAAU5Y,KAAKsM,QAAU4L,EAAcpB,aACvCxS,EAAKgD,KAAKC,WAAV,GAA2BlE,OAAO,CAAEiJ,OAAQsM,EAAU5Y,KAAKsM,WAE9B,IAAzBsM,EAAU5Y,KAAK1L,QACjBskB,EAAU5Y,KAAK1L,MAAQgQ,EAAKsF,KAAK4L,YAC7Be,EAAYjS,EAAKsF,KAAM,QACvB2M,EAAYjS,EAAKsF,KAAM,UAE7BgP,EAAU5Y,KAAK1L,OAAS4jB,EAAc1C,YACtClR,EAAKgD,KAAKC,WAAV,GAA2BlE,OAAO,CAAE/O,MAAOskB,EAAU5Y,KAAK1L,WAIhE2kB,YAAa,WACX3U,EAAKgD,KAAKC,WAAV,GAA2B2R,iBAK/B1kB,KAAK8S,KAAKC,WAAV,GAA6B/C,UAAGsU,SAASvU,OA1L3C,CACE,IAAM6I,EAAM,qBACN8B,EAAY1a,KAAKmD,OAAOiO,aAAawH,IAAQA,EAC/C5Y,KAAKmD,OAAOkO,mBACdrR,KAAKgY,QAAQ0C,KA0LnB1X,OAAQ,WAENhD,KAAK8K,UAEPkE,QAAS,WACHhP,KAAK8S,KAAKC,WAAV,KACF/S,KAAK8S,KAAKC,WAAV,GAA2B/D,UAC3BhP,KAAK8S,KAAKC,WAAV,GAA6B,UAM9BoO,EAhXAwD,IArDT,QAAAhrB,EAAA,KAEA2H,EAAA3H,EAAA,GAEAkW,GADAlW,EAAA,GACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SAEAA,EAAA,KACAipB,EAAAjpB,EAAA,QAEAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,SACAA,EAAA,0QCvBe,SAAUirB,EAAWC,GAClC,IAAMC,EAAW1mB,KAAKC,IAAI,IAAIiiB,KAAKsE,GAAWriB,UAAY,IAAI+d,KAAKuE,GAAStiB,WACtEwiB,EAAS,CACb,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,OACA,MACA,MACA,OAIF,OAAID,GAAY,QACP,SAASE,GACd,IAAMC,EAAO,IAAI3E,KAAK0E,GACtB,OAAOD,EAAOE,EAAKC,YAAc,IAAMD,EAAKE,eAIvCL,GAAY,MACZ,SAASE,GACd,IAAMC,EAAO,IAAI3E,KAAK0E,GACtB,OAAOD,EAAOE,EAAKC,YAAc,IAAMD,EAAKG,WAIvCN,GAAY,KACZ,WAIA,gRCjCI,SAAU/U,GACvB,IAAMsN,EAAOtN,EAAQzM,KAAKyb,QACpBhJ,EAAkB/V,KAClB6gB,EAAQ7gB,KAAK8S,KAAKC,WAAW/C,GAC/B+O,EAAU,GACRsG,EAAUrlB,KAAKoV,KAAKrM,cAAc,IAAMgN,EAAgB5S,OAAOsN,MAAQ,cACvE6U,EAAevP,EAAgB5S,OAAOyO,OAEtCI,EAAahS,KAAK8S,KAAKC,WAAWf,WAArB6C,EACd,CACDyG,OAAQ,GACRrK,OAAQ,GACRgB,OAAQ,EACRvF,MAAOtO,KAAKmnB,OAAOF,EAAQ/C,aAAe,IAAM,IAChDkD,MAAO,GAENF,EAAatT,YAGlB,GAAIjC,EAAQ6B,OAAO7O,KAAM,CACvBgc,EAAUhP,EAAQ6B,OAAO7O,KAAKsa,GAG9B,IACMoI,EAAoB,GACP,MAAfpI,EAAK,GAAG,IACVoI,EAAkB5kB,KAAKwc,EAAK,IAE9B0B,EAAQ9W,QAAQ,SAAAyd,GACd,IAAIC,EAAa5V,EAAQzM,KAAKyb,QAAQ1Y,KAAK,SAAAuf,GAAA,OAAQA,EAAK,KAAOF,IAC/DD,EAAkB5kB,KAAK8kB,KAEzB5V,EAAQzM,KAAKyb,QAAU0G,OAEvB,IAAK,IAAInsB,EAAI,EAAGA,EAAI+jB,EAAKthB,OAAQzC,IACZ,MAAf+jB,EAAK/jB,GAAG,KAAe,EAAA0c,EAAAhU,SAAaqb,EAAK/jB,GAAG,KAC9CylB,EAAQle,KAAKwc,EAAK/jB,GAAG,IAK3B,IAAMoqB,EAAgB1jB,KAAKoV,KAAKrM,cAAc,mBAE1C8R,EAAQ,WACkB,QAA1ByK,EAAaxoB,UAAgD,WAA1BwoB,EAAaxoB,WAClD+d,EAAQ,cAGV,IAAMgL,EAAgC3pB,SAASC,cAAc,OAC7D0pB,EAA8Bxd,aAAa,QAAS,6EACtC,eAAVwS,GACF6I,EAAchjB,OAAOmlB,GAGvB,IAAMC,EAAqB5pB,SAASC,cAAc,OAClD2pB,EAAmBzd,aAAa,QAAhC,uCAAgFwS,EAAhF,UACA6I,EAAchjB,OAAOolB,GAErB,IAAMC,EAA0B7pB,SAASC,cAAc,OACvD4pB,EAAwB1d,aAAa,QAAS,6DAChC,aAAVwS,GACF6I,EAAchjB,OAAOqlB,GAGvB,IAAMC,EAAiC9pB,SAASC,cAAc,OAQ9D,SAAS8pB,IACPjU,EAAWf,OAAS8N,EAAQtd,MAAMuQ,EAAWC,OAAQD,EAAWC,OAASD,EAAWtF,OACpFsF,EAAWwT,MAAQzG,EAAQhjB,OAU7B,WACE+pB,EAAmBjO,UAAY,GAE/B7F,EAAWf,OAAOhJ,QAAQ,SAAAzG,GACxB,IAAM0kB,EAAiBZ,EAAa9jB,MAAMuQ,cAAgBvQ,EAAMC,MAAM,EAAG6jB,EAAa9jB,MAAMuQ,cAAgB,GAAKvQ,EAC3G2kB,EAAajqB,SAASC,cAAc,OAC1CgqB,EAAWtO,UAAX,kCAAyDqO,EAAzD,UACAC,EAAWC,YAAc5kB,EACzB2kB,EAAW9d,aAAa,QAAS,eACjCyd,EAAmBplB,OAAOylB,GAE1B,IAAME,EAAwBnqB,SAASC,cAAc,QACrDkqB,EAAsBhe,aAAa,QAAS,4BAC5Cge,EAAsB3pB,MAAME,gBAAkBikB,EAAM1O,MAAMgU,EAAWC,aACrED,EAAWG,QAAQD,GAEnB,IAAME,EAAiBrqB,SAASC,cAAc,OAC9CgqB,EAAW5oB,iBAAiB,YAAa,SAACvB,GACxC6kB,EAAMxO,MAAM8T,EAAWC,aACnBd,EAAa7nB,QAAQoU,MAAQsU,EAAWC,YAAYrqB,OAASupB,EAAa9jB,MAAMuQ,gBAClFwU,EAAele,aAAa,QAA5B,wDAA6Fid,EAAaxoB,UAC1GypB,EAAe1O,WAEX9H,EAAQ6B,OAAOnU,QAAQyU,QAAvB,0CACCiU,EAAWC,YAChBD,EAAWzlB,OAAO6lB,MAGtBJ,EAAW5oB,iBAAiB,WAAY,SAACvB,GACvC6kB,EAAM2F,SACND,EAAenZ,WAEjB+Y,EAAW5oB,iBAAiB,QAAS,SAACvB,GACpC,IAAIoB,EAAU,EACRqpB,EAAWzU,EAAWsJ,OAAO1X,QAAQuiB,EAAWC,aAClDK,EAAW,GACbzU,EAAWsJ,OAAOza,KAAKslB,EAAWC,aAClChpB,EAAU,MAGV4U,EAAWsJ,OAAOmB,OAAOgK,EAAU,GACnCrpB,EAAU,GAEZ+oB,EAAWzpB,MAAMU,QAAUA,EAC3ByjB,EAAM1S,OAAOgY,EAAWC,iBAIxBrW,EAAQyU,mBACVzU,EAAQyU,mBACRzU,EAAQyU,iBAAmB,OA3DPzqB,KAAKgc,EAAiB/D,EAAWf,QACnDe,EAAWwT,MAAQxT,EAAWtF,OA+DpC,WACEqZ,EAAwBlO,UAAY,GACpCgO,EAA8BhO,UAAY,GAC1CmO,EAA+BnO,UAAY,GAE3C,IAAM6O,EAAUxqB,SAASC,cAAc,KACjCwqB,EAAYzqB,SAASC,cAAc,KAEnCyqB,EAAW,SAACC,GAChB,GAAkB,YAAdA,EAAyB,CAC3B,IAAMC,EAAO9U,EAAWC,OAASD,EAAWtF,MAC5C,OAAIoa,EAAO9U,EAAWwT,WACpBxT,EAAWC,OAAS6U,QAGtB9U,EAAWC,OAAS,GAItB,IAAM6U,EAAO9U,EAAWC,OAASD,EAAWtF,MAE1CsF,EAAWC,OADT6U,GAAQ,EACUA,EAIF1oB,KAAK2oB,MAAM/U,EAAWwT,MAAMxT,EAAWtF,OAASsF,EAAWtF,OAGjFia,EAAUppB,iBAAiB,QAAS,WAClCqpB,EAAS,WACTX,IACAe,MAGFN,EAAQnpB,iBAAiB,QAAS,WAChCqpB,EAAS,YACTX,IACAe,MAG4B,SAA1B1B,EAAaxoB,UAAiD,UAA1BwoB,EAAaxoB,UACnD4pB,EAAQre,aAAa,QAAS,MAC9Bse,EAAUte,aAAa,QAAS,QAChC0d,EAAwBrlB,OAAOimB,GAC/BZ,EAAwBrlB,OAAOgmB,KAG/BA,EAAQre,aAAa,QAAS,QAC9Bse,EAAUte,aAAa,QAAS,SAChCwd,EAA8BnlB,OAAOgmB,GACrCV,EAA+BtlB,OAAOimB,KAhHZ5sB,KAAKgc,GAE7BhG,EAAQ0U,aACV1U,EAAQ0U,cAkHZ,SAASuC,IAEH9qB,SAASyW,WAAazW,SAASyW,UAAUsU,MAC/B/qB,SAASyW,UACXsU,QAEH1tB,OAAO2tB,cACF3tB,OAAO2tB,eACTC,kBAzIdnB,EAA+B3d,aAAa,QAAS,8EACvC,eAAVwS,GACF6I,EAAchjB,OAAOslB,GAGvBC,qJA1EFtsB,EAAA,UAEAytB,EAAAztB,EAAA,iICAe,SAAUO,EAAGmtB,EAAoBC,EAAoBnV,GASlE,IARA,IAAItS,SACAwQ,SAEEkX,EAAavnB,KAAKmD,OAAOqkB,qBAAuB,SAAUrtB,GAAQ,OAAOA,GACzEstB,EAAcznB,KAAKmD,OAAOukB,sBAAwBL,EAClDM,EAAc3nB,KAAKmD,OAAOykB,sBAAwBN,EAG/ChuB,EAAI,EAAGA,EAAIY,EAAE6B,OAAQzC,IAC5B,GAAOY,EAAEZ,KAAOY,EAAEZ,GAAGuB,OAAwB,IAAfX,EAAEZ,GAAGuB,OAAnC,CACKgF,IACHwQ,EAAQoX,EAAcA,EAAYvtB,EAAEZ,GAAGgH,GAAKpG,EAAEZ,GAAGgH,EACjDT,EAAO,iBAAmBG,KAAK6nB,MAAMpqB,QAAU,MAAQ4S,GAAmB,IAAVA,EAAc,wBAAyB,EAAAyX,EAAAlpB,YAAWyR,GAAS,aAAe,KAE5I,IAAIlW,EAAOotB,EAAWrtB,EAAEZ,GAAGa,MACvBU,EAAQ8sB,EAAYztB,EAAEZ,GAAGuB,MAAOX,EAAEZ,GAAG0qB,MAAO9pB,EAAEZ,GAAG2qB,GAAI/pB,EAAEZ,GAAG8F,OAC1D2H,EAAU/G,KAAK+nB,WAAa/nB,KAAK+nB,WAAW7tB,EAAEZ,GAAGuB,OAASsX,EAAMjY,EAAEZ,GAAG2qB,IACrEppB,IAAU2H,MAAM3H,KAClBgF,GAAQ,cAAgBG,KAAK6nB,MAAMG,YAAc,IAAM9tB,EAAEZ,GAAG2qB,GAAK,MACV,IAAnD9pB,EAAKyJ,QAAQ,mCACf/D,GAAU,kDAAoDkH,EAAU,aAAc,EAAA+gB,EAAAlpB,YAAWzE,GAAQ,SAE3G0F,GAAU,sBAAuB,EAAAioB,EAAAlpB,YAAW/D,GAAS,QACrDgF,GAAQ,SAGZ,OAAOA,EAAO,YA7BhB,IAAAioB,EAAAnuB,EAAA,4FCAe,SAAwBgI,GASrC,OARkBA,EAAOF,MAAM,GAAGgT,IAAI,SAAAva,GAAA,OAAKA,EAAEua,IAAI,SAACjX,EAAGlE,GACnD,MAAiB,iBAANkE,GACC,IAANlE,EACKkE,EAAItD,EAAEZ,EAAI,GAGdkE,wFCPKqlB,wBAAT,SAAiClhB,GACtC,IAAMghB,EAAW,GAajB,OAZAhhB,EAAOF,MAAM,GAAGwG,QAAQ,SAAC/N,EAAGZ,GAC1BY,EAAE+N,QAAQ,SAACzK,GACT,GAAiB,iBAANA,EAAgB,CACzB,IAAKmlB,EAASrpB,GAEZ,OADAqpB,EAASrpB,GAAKkE,EACPmlB,EAASrpB,GAElBqpB,EAASrpB,IAAMkE,EAEjB,OAAOmlB,EAASrpB,OAGbqpB,KAGOG,kBAAT,SAA2BnhB,EAAQghB,GAOxC,OANkBhhB,EAAOF,MAAM,GAAGgT,IAAI,SAACva,EAAGZ,GAAJ,OAAUY,EAAEua,IAAI,SAACjX,GACrD,MAAiB,iBAANA,EACDA,EAAImlB,EAASrpB,GAAM,IAEtBkE,sFCtBX,IAAAsqB,EAAAnuB,EAAA,OACAA,EAAA,SACAA,EAAA,iEAEe,CACbmR,OAAQ,SAASjL,GACf,IAAMooB,EAAQ/rB,SAASC,cAAc,OAC/B+rB,EAAQhsB,SAASC,cAAc,OAC/Byc,EAAM1c,SAASC,cAAc,QAE7BgsB,EAAiBjsB,SAASC,cAAc,OACxCisB,EAAoBlsB,SAASC,cAAc,OAC3CksB,EAAiBnsB,SAASC,cAAc,OAE9C8rB,EAAM1hB,UAAYvG,KAAKmD,OAAOsN,MAAQ,oBACtCyX,EAAM3hB,UAAYvG,KAAKmD,OAAOsN,MAAQ,WAGtC0X,EAAe5hB,UAAYvG,KAAKmD,OAAOsN,MAAQ,SAC/C0X,EAAetQ,WAAY,EAAAiQ,EAAAlpB,YAAWoB,KAAKmD,OAAOkN,OAAS,IAC3D+X,EAAkB7hB,UAAYvG,KAAKmD,OAAOsN,MAAQ,YAClD2X,EAAkBvQ,WAAY,EAAAiQ,EAAAlpB,YAAWoB,KAAKmD,OAAOoN,UAAY,IACjE8X,EAAe9hB,UAAYvG,KAAKmD,OAAOsN,MAAQ,SAC/C4X,EAAexQ,WAAY,EAAAiQ,EAAAlpB,YAAWoB,KAAKmD,OAAOqN,OAAS,IAE3DoI,EAAIf,WAAY,EAAAiQ,EAAAlpB,YAAWiB,IAAS,GACpCqoB,EAAM7rB,YAAYuc,GAEd5Y,KAAKmD,OAAOkN,OAASrQ,KAAKmD,OAAOmN,WACnC2X,EAAM5rB,YAAY8rB,GAGhBnoB,KAAKmD,OAAOoN,UACd0X,EAAM5rB,YAAY+rB,GAGpBH,EAAM5rB,YAAY6rB,GAEdloB,KAAKmD,OAAOqN,OACdyX,EAAM5rB,YAAYgsB,GAGhBroB,KAAKmD,OAAOyN,IACX5Q,KAAKmD,OAAOyN,GAAG4J,SACfxa,KAAKmD,OAAOyN,GAAG4J,QAAQC,UACvBza,KAAKmD,OAAOyN,GAAG4J,QAAQC,SAASpX,OACjC,EAAA2X,EAAAhZ,SAAqB,CACnB+D,QAAS/F,KAAKoV,KACd9R,MAAM,EAAAwkB,EAAAlpB,YAAWiB,IAAS,GAC1BwD,KAAMrD,KAAKmD,OAAOyN,GAAG4J,QAAQC,SAASpX,KACtC7B,MAAOxB,KAAKmD,OAAOyN,GAAG4J,QAAQC,SAASjZ,QAIvCxB,KAAKmD,OAAO2N,OACX9Q,KAAKmD,OAAO2N,MAAMC,yBACnBoX,EAAe5qB,iBAAiB,QAAS,SAAAC,GAAA,OAAK,EAAA4V,EAAApR,SAAgBxE,EAAEiC,OAAOnC,UAAWE,KAClF6qB,EAAe9qB,iBAAiB,QAAS,SAAAC,GAAA,OAAK,EAAA4V,EAAApR,SAAgBxE,EAAEiC,OAAOnC,UAAWE,KAClFob,EAAIrb,iBAAiB,QAAS,SAAAC,GAAA,OAAK,EAAA4V,EAAApR,SAAgBxE,EAAEiC,OAAOnC,UAAWE,MAG7EwC,KAAKoV,KAAKyC,UAAY,GACtB7X,KAAKoV,KAAK/Y,YAAY4rB,IAGxBjlB,OAAQ,WAENhD,KAAK8K,UAEPkE,QAAS,uGClEI,SAAyBnI,GAAK,IACnC7K,EAAsB6K,EAAtB7K,MAAOqH,EAAewD,EAAfxD,KAAMC,EAASuD,EAATvD,KACrBtH,EAAM2Q,iBACN,IACMnF,EAASnE,EAAKoE,cACpB,IAFyB,CAAC,OAAQ,MAAO,MAAO,OAAQ,OAElCC,SAASrE,GAC7B,MAAM,IAAIK,MAAM,8BAOlB,GAAe,QAAX8D,EAIF,YAHA,EAAAyU,EAAAja,SAAY,CACVjB,KAAM/E,EAAMssB,cAAcC,yBAK9B,GAAe,QAAX/gB,GAA+B,SAAXA,EAMtB,YALA,EAAAyU,EAAAja,SAAY,CACVjB,KAAM/E,EAAMssB,cAAcC,uBAC1BzhB,QAAS,EACTC,QAAS,SAKE,SAAXS,IACF,EAAA2U,EAAAna,SAAW,CAAEqB,KAAMmE,EAAQlE,SAGd,QAAXkE,IACF,EAAA2U,EAAAna,SAAW,CAAEqB,KAAMmE,EAAQlE,UArC/B,QAAA3J,EAAA,SACAA,EAAA,2ECDA,SAAA6O,GACA,aAEA,IAAAggB,EAwVA,WACA,OACA1pB,OAmLA,SAAAD,GACA,OAAAA,EAAA+G,QAAA,2BAA6C,SAnL7C6iB,iBACAC,SA2CA,SAAAC,GACA,IAAAC,EAAAH,EAAAE,GAAAlhB,cACA,OAzBAohB,EAAA,wBAGA,CACAC,KAAAD,EACAE,MAAAF,EACAG,IAAA,4BACAC,IAAA,gCACAC,IAAA,YACAC,IARA,aASAC,KATA,aAUAC,IAAA,YACAC,KAAA,aACAC,IAAA,kBAYAX,IAAA,GA9BA,IAKAC,GAnBAW,UA4KA,SAAA5hB,EAAAvE,GACA,cAAAA,EAAA,WAAsCuE,GA5KtC6hB,UA8CA,SAAAd,GACA,WAAAA,EAAAe,OAAA,aA9CAC,aAgEA,SAAAC,GACA,OAAAA,EAAA3iB,OACA,IAAA+S,QAAA,SAAAC,GACA2P,EAAA3iB,OAAAgT,KAlBA,SAAA2P,GACA,WAAA5P,QAAA,SAAAC,GAKA,IAJA,IAAA4P,EAAAtwB,OAAAuwB,KAAAF,EAAAG,YAAAvrB,MAAA,SACAzC,EAAA8tB,EAAA9tB,OACAiuB,EAAA,IAAAC,WAAAluB,GAEAzC,EAAA,EAA+BA,EAAAyC,EAAYzC,IAC3C0wB,EAAA1wB,GAAAuwB,EAAAvqB,WAAAhG,GAEA2gB,EAAA,IAAAiQ,KAAA,CAAAF,GAAA,CACA3mB,KAAA,iBAWA4D,CAAA2iB,IArEAO,WAwEA,SAAAxB,EAAAyB,GACA,IAAAC,EAAAnuB,SAAAouB,eAAAC,qBACAC,EAAAH,EAAAluB,cAAA,QACAkuB,EAAAjN,KAAA/gB,YAAAmuB,GACA,IAAAnxB,EAAAgxB,EAAAluB,cAAA,KAIA,OAHAkuB,EAAAjuB,KAAAC,YAAAhD,GACAmxB,EAAAC,KAAAL,EACA/wB,EAAAoxB,KAAA9B,EACAtvB,EAAAoxB,MA/EAC,aA0GA,SAAA/B,GACA,IAAAgC,EAAA,IACA3jB,EAAA4jB,KAAA7a,QAAA8a,YAGAlC,IAAA,KAAAjmB,KAAAimB,GAAA,cAAArI,MAAA/d,WAGA,WAAAyX,QAAA,SAAAC,GACA,IASAhe,EATA6uB,EAAA,IAAAC,eAUA,GARAD,EAAAE,mBAeA,WACA,OAAAF,EAAA7T,WAAA,OAEA,SAAA6T,EAAAG,OAOA,YANAhvB,EACAge,EAAAhe,GAEAivB,EAAA,0BAAAvC,EAAA,aAAAmC,EAAAG,SAMA,IAAAE,EAAA,IAAAC,WACAD,EAAAE,UAAA,WACA,IAAAzjB,EAAAujB,EAAA5R,OAAA/a,MAAA,QACAyb,EAAArS,IAEAujB,EAAAG,cAAAR,EAAArL,WAhCAqL,EAAAS,UAmCA,WACAtvB,EACAge,EAAAhe,GAEAivB,EAAA,cAAAP,EAAA,uCAAAhC,IAtCAmC,EAAAU,aAAA,OACAV,EAAAW,QAAAd,EACAG,EAAAY,KAAA,MAAA/C,GAAA,GACAmC,EAAAa,OAGA3kB,EAAA4jB,KAAA7a,QAAA6b,iBAAA,CACA,IAAAptB,EAAAwI,EAAA4jB,KAAA7a,QAAA6b,iBAAAptB,MAAA,KACAA,KAAA,KACAvC,EAAAuC,EAAA,IAiCA,SAAA0sB,EAAAlT,GACAhD,QAAA6D,MAAAb,GACAiC,EAAA,QAlKA4R,KAkFAzsB,EAAA,EAEA,WACA,WAIA,QAAAhB,KAAA0tB,SAAA1tB,KAAA2tB,IAAA,UAAAC,SAAA,KAAAvqB,OAAA,GAJArC,MApFAwhB,MA8KA,SAAAoE,GACA,gBAAAiH,GACA,WAAAjS,QAAA,SAAAC,GACAtc,WAAA,WACAsc,EAAAgS,IACqBjH,OAlLrBkH,QAuLA,SAAAC,GAGA,IAFA,IAAAC,EAAA,GACArwB,EAAAowB,EAAApwB,OACAzC,EAAA,EAA2BA,EAAAyC,EAAYzC,IAAA8yB,EAAAvrB,KAAAsrB,EAAA7yB,IACvC,OAAA8yB,GA1LAC,YA6LA,SAAAxtB,GACA,OAAAA,EAAA+G,QAAA,YAAAA,QAAA,cA7LA0mB,UA0FA,SAAAC,GACA,WAAAvS,QAAA,SAAAC,EAAAC,GACA,IAAAsS,EAAA,IAAAC,MACAD,EAAAE,OAAA,WACAzS,EAAAuS,IAEAA,EAAAG,QAAAzS,EACAsS,EAAAI,IAAAL,KAhGAzsB,MA+LA,SAAAiB,GACA,IAAA8rB,EAAAC,EAAA/rB,EAAA,qBACAgsB,EAAAD,EAAA/rB,EAAA,sBACA,OAAAA,EAAAisB,YAAAH,EAAAE,GAjMAjV,OAoMA,SAAA/W,GACA,IAAAksB,EAAAH,EAAA/rB,EAAA,oBACAmsB,EAAAJ,EAAA/rB,EAAA,uBACA,OAAAA,EAAAosB,aAAAF,EAAAC,IA5HA,IACA9tB,EAnDA,SAAAqpB,EAAAE,GACA,IAAA3pB,EAAA,kBAAAE,KAAAypB,GACA,OAAA3pB,IAAA,GACA,GA8KA,SAAA8tB,EAAA/rB,EAAAqsB,GACA,IAAAvyB,EAAAtB,OAAA2oB,iBAAAnhB,GAAAssB,iBAAAD,GACA,OAAA3oB,WAAA5J,EAAA+K,QAAA,WApjBA0nB,GACAC,EAujBA,WACA,IAAAC,EAAA,8BAEA,OACAC,UAyCA,SAAA5uB,EAAAurB,EAAA3vB,GACA,OAeAizB,EAAA7uB,GAbAmb,QAAAC,QAAApb,GACAqI,KAAAymB,GACAzmB,KAAA,SAAA0mB,GACA,IAAAtU,EAAAU,QAAAC,QAAApb,GAMA,OALA+uB,EAAA3lB,QAAA,SAAA0gB,GACArP,IAAApS,KAAA,SAAArI,GACA,OAAAgvB,EAAAhvB,EAAA8pB,EAAAyB,EAAA3vB,OAGA6e,IAXAU,QAAAC,QAAApb,IAzCA6uB,gBACA9C,KAAA,CACA+C,WACAE,WAIA,SAAAH,EAAA7uB,GACA,WAAAA,EAAA6qB,OAAA8D,GAGA,SAAAG,EAAA9uB,GAGA,IAFA,IACAG,EADAua,EAAA,GAEA,QAAAva,EAAAwuB,EAAAtuB,KAAAL,KACA0a,EAAA1Y,KAAA7B,EAAA,IAEA,OAAAua,EAAA1W,OAAA,SAAA8lB,GACA,OAAAH,EAAAiB,UAAAd,KAIA,SAAAkF,EAAAhvB,EAAA8pB,EAAAyB,EAAA3vB,GACA,OAAAuf,QAAAC,QAAA0O,GACAzhB,KAAA,SAAAyhB,GACA,OAAAyB,EAAA5B,EAAA2B,WAAAxB,EAAAyB,GAAAzB,IAEAzhB,KAAAzM,GAAA+tB,EAAAkC,cACAxjB,KAAA,SAAA5D,GACA,OAAAklB,EAAAgB,UAAAlmB,EAAAklB,EAAAE,SAAAC,MAEAzhB,KAAA,SAAA4mB,GACA,OAAAjvB,EAAA+G,QAGA,SAAA+iB,GACA,WAAAoF,OAAA,kBAAAvF,EAAA1pB,OAAA6pB,GAAA,oBAJAqF,CAAArF,GAAA,KAAAmF,EAAA,SA5lBAG,GACAC,EAwnBA,WACA,OACAC,WAMA,WACA,OAAAC,EAAAlyB,UACAgL,KAAA,SAAAmnB,GACA,OAAArU,QAAAsU,IACAD,EAAA5Z,IAAA,SAAA8Z,GACA,OAAAA,EAAAtU,eAIA/S,KAAA,SAAAsnB,GACA,OAAAA,EAAA1tB,KAAA,SAfA8pB,KAAA,CACAwD,YAkBA,SAAAA,IACA,OAAApU,QAAAC,QAAAuO,EAAA0D,QAAAhwB,SAAAuyB,cACAvnB,KAgBA,SAAAunB,GACA,IAAAC,EAAA,GAQA,OAPAD,EAAAxmB,QAAA,SAAA0mB,GACA,IACAnG,EAAA0D,QAAAyC,EAAAD,UAAA,IAAAzmB,QAAAymB,EAAA7tB,KAAAzF,KAAAszB,IACqB,MAAAlxB,GACrBwX,QAAAC,IAAA,sCAAA0Z,EAAAlE,KAAAjtB,EAAAwuB,eAGA0C,IAxBAxnB,KAKA,SAAAwnB,GACA,OAAAA,EACA7rB,OAAA,SAAA+rB,GACA,OAAAA,EAAAvrB,OAAAwrB,QAAAC,iBAEAjsB,OAAA,SAAA+rB,GACA,OAAArB,EAAAG,cAAAkB,EAAAlyB,MAAA2wB,iBAAA,YAVAnmB,KAAA,SAAA6nB,GACA,OAAAA,EAAAta,IAAAua,KAyBA,SAAAA,EAAAC,GACA,OACAhV,QAAA,WACA,IAAAmQ,GAAA6E,EAAAC,kBAAA,IAAyEzE,KACzE,OAAA8C,EAAAE,UAAAwB,EAAAE,QAAA/E,IAEAwC,IAAA,WACA,OAAAqC,EAAAvyB,MAAA2wB,iBAAA,WAnrBA+B,GACAC,EAyrBA,WACA,OACA5B,UA6BA,SAAAA,EAAA1sB,GACA,KAAAA,aAAAuuB,SAAA,OAAAtV,QAAAC,QAAAlZ,GAEA,OAYA,SAAAA,GACA,IAAAwuB,EAAAxuB,EAAArE,MAAA2wB,iBAAA,cAEA,OAAAkC,EAEAhC,EAAAE,UAAA8B,GACAroB,KAAA,SAAAsoB,GACAzuB,EAAArE,MAAA+yB,YACA,aACAD,EACAzuB,EAAArE,MAAAgzB,oBAAA,iBAGAxoB,KAAA,WACA,OAAAnG,IAXAiZ,QAAAC,QAAAlZ,GAfA4uB,CAAA5uB,GACAmG,KAAA,WACA,OAAAnG,aAAA6uB,iBACAC,EAAA9uB,GAAA8sB,SAEA7T,QAAAsU,IACA9F,EAAA0D,QAAAnrB,EAAA+uB,YAAArb,IAAA,SAAAnO,GACA,OAAAmnB,EAAAnnB,SAtCAskB,KAAA,CACAiF,aAIA,SAAAA,EAAA9pB,GACA,OACA8nB,OAGA,SAAApzB,GACA,OAAA+tB,EAAAiB,UAAA1jB,EAAA6mB,KAAA5S,QAAAC,UAEAD,QAAAC,QAAAlU,EAAA6mB,KACA1lB,KAAAzM,GAAA+tB,EAAAkC,cACAxjB,KAAA,SAAA5D,GACA,OAAAklB,EAAAgB,UAAAlmB,EAAAklB,EAAAE,SAAA3iB,EAAA6mB,QAEA1lB,KAAA,SAAA4mB,GACA,WAAA9T,QAAA,SAAAC,EAAAC,GACAnU,EAAA2mB,OAAAzS,EACAlU,EAAA4mB,QAAAzS,EACAnU,EAAA6mB,IAAAkB,SAltBAiC,GAGA9f,EAAA,CAEA2b,sBAAAlqB,EAEAmpB,WAAA,GAGA7jB,EAAA,CACAgpB,QACAC,MAwFA,SAAAlvB,EAAAgP,GACA,OAAAmgB,EAAAnvB,EAAAgP,GAAA,IACA7I,KAAA,SAAA0iB,GACA,OAAAA,EAAAG,eA1FAoG,OAmGA,SAAApvB,EAAAgP,GAEA,OAAAmgB,EAAAnvB,EADAgP,KAAA,IAEA7I,KAAA,SAAA0iB,GACA,OAAAA,EAAAG,UAAA,aAAAha,EAAAjJ,SAAA,MAtGAG,OA+GA,SAAAlG,EAAAgP,GACA,OAAAmgB,EAAAnvB,EAAAgP,GAAA,IACA7I,KAAAshB,EAAAmB,eAhHAyG,YAoEA,SAAArvB,EAAAgP,GACA,OAAAmgB,EAAAnvB,EAAAgP,GAAA,IACA7I,KAAA,SAAA0iB,GACA,OAAAA,EAAAyG,WAAA,MAAAC,aACA,EACA,EACA9H,EAAA1oB,MAAAiB,GACAynB,EAAA1Q,OAAA/W,IACAuC,QA3EAsnB,KAAA,CACAsD,YACAmB,SACA7G,OACA+E,UACAxd,QAAA,KAyBA,SAAAigB,EAAAjvB,EAAAgP,GAGA,OAiFA,SAAAA,QAEA,IAAAA,EAAA,iBACA/I,EAAA4jB,KAAA7a,QAAA6b,iBAAA3b,EAAA2b,iBAEA5kB,EAAA4jB,KAAA7a,QAAA6b,iBAAA7b,EAAA6b,sBAGA,IAAA7b,EAAA,UACA/I,EAAA4jB,KAAA7a,QAAA8a,UAAA5a,EAAA4a,UAEA7jB,EAAA4jB,KAAA7a,QAAA8a,UAAA9a,EAAA8a,UA7FA0F,CADAxgB,KAAA,IAEAiK,QAAAC,QAAAlZ,GACAmG,KAAA,SAAAnG,GACA,OAuHA,SAAAA,EAAA8B,EAAA/J,GACA,IAAAA,GAAA+J,MAAA9B,GAAA,OAAAiZ,QAAAC,UAEA,OAAAD,QAAAC,QAAAlZ,GACAmG,KAQA,SAAAnG,GACA,OAAAA,aAAAyvB,kBAAAhI,EAAA8D,UAAAvrB,EAAAgpB,aACAhpB,EAAA0vB,WAAA,KATAvpB,KAAA,SAAA0V,GACA,OAWA,SAAA8T,EAAA9T,EAAA/Z,GACA,IAAAuD,EAAAsqB,EAAAZ,WACA,WAAA1pB,EAAArK,OAAAie,QAAAC,QAAA2C,GAOA,SAAA+T,EAAAvqB,EAAAvD,GACA,IAAAyW,EAAAU,QAAAC,UAUA,OATA7T,EAAA6B,QAAA,SAAA3B,GACAgT,IACApS,KAAA,WACA,OAAAupB,EAAAnqB,EAAAzD,KAEAqE,KAAA,SAAA0pB,GACAA,GAAAD,EAAAt0B,YAAAu0B,OAGAtX,EAhBAuX,CAAAjU,EAAA4L,EAAA0D,QAAA9lB,GAAAvD,GACAqE,KAAA,WACA,OAAA0V,IAjBAkU,CAAA/vB,EAAA6b,EAAA/Z,KAEAqE,KAAA,SAAA0V,GACA,OAgCA,SAAA8T,EAAA9T,GACA,OAAAA,aAAA0S,QAEAtV,QAAAC,UACA/S,KAQA,WAGA,IAAA6pB,EAAAtxB,EAAAsxB,EAFAx3B,OAAA2oB,iBAAAwO,GAEAjxB,EAFAmd,EAAAlgB,MAGAq0B,EAAA5B,QAAA1vB,EAAA0vB,QAAA4B,EAAA5B,QAGA,SAAA4B,EAAAtxB,GACA+oB,EAAA0D,QAAA6E,GAAA9oB,QAAA,SAAA9N,GACAsF,EAAAgwB,YACAt1B,EACA42B,EAAA1D,iBAAAlzB,GACA42B,EAAArB,oBAAAv1B,MAPA62B,CAAAD,EAAAtxB,KAZAyH,KA0BA,WACA,qBAAAe,QAAA,SAAAlC,IAIA,SAAAA,GACA,IAAArJ,EAAAnD,OAAA2oB,iBAAAwO,EAAA3qB,GACA6B,EAAAlL,EAAA2wB,iBAAA,WAEA,QAAAzlB,GAAA,SAAAA,EAAA,CAEA,IAAArB,EAAAiiB,EAAAqD,MACAjP,EAAArW,UAAAqW,EAAArW,UAAA,IAAAA,EACA,IAAA0qB,EAAA/0B,SAAAC,cAAA,SACA80B,EAAA50B,YAGA,SAAAkK,EAAAR,EAAArJ,GACA,IAAAw0B,EAAA,IAAA3qB,EAAA,IAAAR,EACAopB,EAAAzyB,EAAAyyB,QAGA,SAAAzyB,GACA,IAAAkL,EAAAlL,EAAA2wB,iBAAA,WACA,OAAA3wB,EAAAyyB,QAAA,aAAAvnB,EAAA,IALAupB,CAAAz0B,GAQA,SAAAA,GAEA,OAAA8rB,EAAA0D,QAAAxvB,GACA+X,IAGA,SAAAta,GACA,OAAAA,EAAA,KACAuC,EAAA2wB,iBAAAlzB,IACAuC,EAAAgzB,oBAAAv1B,GAAA,oBALA2G,KAAA,MAAwC,IAZxCswB,CAAA10B,GACA,OAAAR,SAAAm1B,eAAAH,EAAA,IAAoE/B,EAAA,KANpEmC,CAAA/qB,EAAAR,EAAArJ,IACAkgB,EAAAvgB,YAAA40B,IAbAM,CAAAxrB,OA3BAmB,KAoEA,WACAwpB,aAAAc,sBAAA5U,EAAA/E,UAAA6Y,EAAA71B,OACA61B,aAAAe,kBAAA7U,EAAAvU,aAAA,QAAAqoB,EAAA71B,SArEAqM,KAwEA,WACA0V,aAAA8U,aACA9U,EAAAvU,aAAA,sCAEAuU,aAAA+U,gBACA,mBAAA1pB,QAAA,SAAA2pB,GACA,IAAA/2B,EAAA+hB,EAAAiV,aAAAD,GACA/2B,GAEA+hB,EAAAlgB,MAAA+yB,YAAAmC,EAAA/2B,QAhFAqM,KAAA,WACA,OAAA0V,IARAA,EAjCAkV,CAAA/wB,EAAA6b,KAhIA6T,CAAA1vB,EAAAgP,EAAAlN,QAAA,KAEAqE,KAAA6qB,GACA7qB,KAAA8qB,GACA9qB,KAQA,SAAA0V,GACA7M,EAAAhJ,UAAA6V,EAAAlgB,MAAAE,gBAAAmT,EAAAhJ,SAEAgJ,EAAAjQ,QAAA8c,EAAAlgB,MAAAoD,MAAAiQ,EAAAjQ,MAAA,MACAiQ,EAAA+H,SAAA8E,EAAAlgB,MAAAob,OAAA/H,EAAA+H,OAAA,MAEA/H,EAAArT,OACApC,OAAAuf,KAAA9J,EAAArT,OAAAuL,QAAA,SAAA1M,GACAqhB,EAAAlgB,MAAAnB,GAAAwU,EAAArT,MAAAnB,KAGA,OAAAqhB,IAlBA1V,KAAA,SAAA0V,GACA,OAyQA,SAAA7b,EAAAjB,EAAAgY,GACA,OAAAkC,QAAAC,QAAAlZ,GACAmG,KAAA,SAAAnG,GAEA,OADAA,EAAAsH,aAAA,yCACA,IAAA4pB,eAAAC,kBAAAnxB,KAEAmG,KAAAshB,EAAA6D,aACAnlB,KAAA,SAAAirB,GACA,+DAAAA,EAAA,qBAEAjrB,KAAA,SAAAkrB,GACA,wDAAAtyB,EAAA,aAAAgY,EAAA,KACAsa,EAAA,WAEAlrB,KAAA,SAAAqiB,GACA,0CAA2CA,IAxR3C8I,CAAAzV,EACA7M,EAAAjQ,OAAA0oB,EAAA1oB,MAAAiB,GACAgP,EAAA+H,QAAA0Q,EAAA1Q,OAAA/W,MAsFA,SAAAmvB,EAAA7K,EAAAtV,GACA,OAAAigB,EAAA3K,EAAAtV,GACA7I,KAAAshB,EAAA8D,WACAplB,KAAAshB,EAAA5H,MAAA,MACA1Z,KAAA,SAAAslB,GACA,IAAA5C,EAKA,SAAAvE,GACA,IAAAuE,EAAA1tB,SAAAC,cAAA,UAIA,GAHAytB,EAAA9pB,MAAAiQ,EAAAjQ,OAAA0oB,EAAA1oB,MAAAulB,GACAuE,EAAA9R,OAAA/H,EAAA+H,QAAA0Q,EAAA1Q,OAAAuN,GAEAtV,EAAAhJ,QAAA,CACA,IAAAurB,EAAA1I,EAAAyG,WAAA,MACAiC,EAAAC,UAAAxiB,EAAAhJ,QACAurB,EAAAE,SAAA,IAAA5I,EAAA9pB,MAAA8pB,EAAA9R,QAGA,OAAA8R,EAhBA6I,CAAApN,GAEA,OADAuE,EAAAyG,WAAA,MAAAqC,UAAAlG,EAAA,KACA5C,IAkBA,SAAA6G,EAAA1vB,EAAA8B,EAAA/J,GACA,IAAAA,GAAA+J,MAAA9B,GAAA,OAAAiZ,QAAAC,UAEA,OAAAD,QAAAC,QAAAlZ,GACAmG,KAAAyrB,GACAzrB,KAAA,SAAA0V,GACA,OAAAkU,EAAA/vB,EAAA6b,EAAA/Z,KAEAqE,KAAA,SAAA0V,GACA,OAAAkV,EAAA/wB,EAAA6b,KAGA,SAAA+V,EAAA5xB,GACA,OAAAA,aAAAyvB,kBAAAhI,EAAA8D,UAAAvrB,EAAAgpB,aACAhpB,EAAA0vB,WAAA,GAGA,SAAAK,EAAAJ,EAAA9T,EAAA/Z,GACA,IAAAuD,EAAAsqB,EAAAZ,WACA,WAAA1pB,EAAArK,OAAAie,QAAAC,QAAA2C,GAOA,SAAA+T,EAAAvqB,EAAAvD,GACA,IAAAyW,EAAAU,QAAAC,UAUA,OATA7T,EAAA6B,QAAA,SAAA3B,GACAgT,IACApS,KAAA,WACA,OAAAupB,EAAAnqB,EAAAzD,KAEAqE,KAAA,SAAA0pB,GACAA,GAAAD,EAAAt0B,YAAAu0B,OAGAtX,EAhBAuX,CAAAjU,EAAA4L,EAAA0D,QAAA9lB,GAAAvD,GACAqE,KAAA,WACA,OAAA0V,IAGA,SAAAiU,EAAAF,EAAAvqB,EAAAvD,GACA,IAAAyW,EAAAU,QAAAC,UAUA,OATA7T,EAAA6B,QAAA,SAAA3B,GACAgT,IACApS,KAAA,WACA,OAAAupB,EAAAnqB,EAAAzD,KAEAqE,KAAA,SAAA0pB,GACAA,GAAAD,EAAAt0B,YAAAu0B,OAGAtX,GAIA,SAAAwY,EAAApB,EAAA9T,GACA,OAAAA,aAAA0S,QAEAtV,QAAAC,UACA/S,KAQA,YAGA,SAAA6pB,EAAAtxB,GACAsxB,EAAA5B,QAAA1vB,EAAA0vB,QAAA4B,EAAA5B,QAGA,SAAA4B,EAAAtxB,GACA+oB,EAAA0D,QAAA6E,GAAA9oB,QAAA,SAAA9N,GACAsF,EAAAgwB,YACAt1B,EACA42B,EAAA1D,iBAAAlzB,GACA42B,EAAArB,oBAAAv1B,MAPA62B,CAAAD,EAAAtxB,GAJAmzB,CAAAr5B,OAAA2oB,iBAAAwO,GAAA9T,EAAAlgB,SARAwK,KA0BA,WACA,qBAAAe,QAAA,SAAAlC,IAIA,SAAAA,GACA,IAAArJ,EAAAnD,OAAA2oB,iBAAAwO,EAAA3qB,GACA6B,EAAAlL,EAAA2wB,iBAAA,WAEA,QAAAzlB,GAAA,SAAAA,EAAA,OAEA,IAAArB,EAAAiiB,EAAAqD,MACAjP,EAAArW,UAAAqW,EAAArW,UAAA,IAAAA,EACA,IAAA0qB,EAAA/0B,SAAAC,cAAA,SACA80B,EAAA50B,YAGA,SAAAkK,EAAAR,EAAArJ,GACA,IAAAw0B,EAAA,IAAA3qB,EAAA,IAAAR,EACAopB,EAAAzyB,EAAAyyB,QAGA,SAAAzyB,GACA,IAAAkL,EAAAlL,EAAA2wB,iBAAA,WACA,OAAA3wB,EAAAyyB,QAAA,aAAAvnB,EAAA,IALAupB,CAAAz0B,GAQA,SAAAA,GAEA,OAAA8rB,EAAA0D,QAAAxvB,GACA+X,IAGA,SAAAta,GACA,OAAAA,EAAA,KACAuC,EAAA2wB,iBAAAlzB,IACAuC,EAAAgzB,oBAAAv1B,GAAA,oBALA2G,KAAA,MAAwC,IAZxCswB,CAAA10B,GACA,OAAAR,SAAAm1B,eAAAH,EAAA,IAAoE/B,EAAA,KANpEmC,CAAA/qB,EAAAR,EAAArJ,IACAkgB,EAAAvgB,YAAA40B,GAbAM,CAAAxrB,OA3BAmB,KAoEA,WACAwpB,aAAAc,sBAAA5U,EAAA/E,UAAA6Y,EAAA71B,OACA61B,aAAAe,kBAAA7U,EAAAvU,aAAA,QAAAqoB,EAAA71B,SArEAqM,KAwEA,WACA,KAAA0V,aAAA8U,YAAA,OAGA,GAFA9U,EAAAvU,aAAA,wCAEAuU,aAAA+U,gBAAA,OACA,mBAAA1pB,QAAA,SAAA2pB,GACA,IAAA/2B,EAAA+hB,EAAAiV,aAAAD,GACA/2B,GAEA+hB,EAAAlgB,MAAA+yB,YAAAmC,EAAA/2B,OAhFAqM,KAAA,WACA,OAAA0V,IARAA,EAWA,SAAAiW,IAGA,SAAAD,EAAA7B,EAAAtxB,GACA,GAAAsxB,EAAA5B,QAAA1vB,EAAA0vB,QAAA4B,EAAA5B,aACA6B,EAAAD,EAAAtxB,GAEA,SAAAuxB,EAAAD,EAAAtxB,GACA+oB,EAAA0D,QAAA6E,GAAA9oB,QAAA,SAAA9N,GACAsF,EAAAgwB,YACAt1B,EACA42B,EAAA1D,iBAAAlzB,GACA42B,EAAArB,oBAAAv1B,OAXAy4B,EAAAr5B,OAAA2oB,iBAAAwO,GAAA9T,EAAAlgB,OAkBA,SAAAo2B,IAKA,SAAAvB,EAAAxrB,GACA,IAAArJ,EAAAnD,OAAA2oB,iBAAAwO,EAAA3qB,GACA6B,EAAAlL,EAAA2wB,iBAAA,WAEA,GAAAzlB,IAAA,IAAAA,IAAA,cAEA,IAAArB,EAAAiiB,EAAAqD,MACAjP,EAAArW,UAAAqW,EAAArW,UAAA,IAAAA,EACA,IAAA0qB,EAAA/0B,SAAAC,cAAA,SAIA,SAAAm1B,EAAA/qB,EAAAR,EAAArJ,GACA,IAAAw0B,EAAA,IAAA3qB,EAAA,IAAAR,EACAopB,EAAAzyB,EAAAyyB,QAAAgC,EAAAz0B,GAAA00B,EAAA10B,GACA,OAAAR,SAAAm1B,eAAAH,EAAA,IAAoE/B,EAAA,KAEpE,SAAAgC,EAAAz0B,GACA,IAAAkL,EAAAlL,EAAA2wB,iBAAA,WACA,OAAA3wB,EAAAyyB,QAAA,aAAAvnB,EAAA,IAGA,SAAAwpB,EAAA10B,GAEA,OAAA8rB,EAAA0D,QAAAxvB,GACA+X,IAAAse,GACAjyB,KAAA,MAAwC,IAExC,SAAAiyB,EAAA54B,GACA,OAAAA,EAAA,KACAuC,EAAA2wB,iBAAAlzB,IACAuC,EAAAgzB,oBAAAv1B,GAAA,oBAtBA82B,EAAA50B,YAAAi1B,EAAA/qB,EAAAR,EAAArJ,IACAkgB,EAAAvgB,YAAA40B,GAdA,qBAAAhpB,QAAA,SAAAlC,GACAwrB,EAAAxrB,KAyCA,SAAAitB,IACA,GAAAtC,aAAAc,oBAAA5U,EAAA/E,UAAA6Y,EAAA71B,MACA,GAAA61B,aAAAe,iBAAA7U,EAAAvU,aAAA,QAAAqoB,EAAA71B,OAGA,SAAAo4B,IACA,KAAArW,aAAA8U,YAAA,OAGA,GAFA9U,EAAAvU,aAAA,wCAEAuU,aAAA+U,gBAAA,OACA,mBAAA1pB,QAAA,SAAA2pB,GACA,IAAA/2B,EAAA+hB,EAAAiV,aAAAD,GACA,IAAA/2B,EAAA,OAEA+hB,EAAAlgB,MAAA+yB,YAAAmC,EAAA/2B,OAMA,SAAAk3B,EAAAhxB,GACA,OAAAmtB,EAAAC,aACAjnB,KAAA,SAAAioB,GACA,IAAA+D,EAAAh3B,SAAAC,cAAA,SAGA,OAFA4E,EAAA1E,YAAA62B,GACAA,EAAA72B,YAAAH,SAAAm1B,eAAAlC,IACApuB,IAIA,SAAAixB,EAAAjxB,GACA,OAAAsuB,EAAA5B,UAAA1sB,GACAmG,KAAA,WACA,OAAAnG,IApSA9H,EAAAD,QAAAgO,EAhCA,qBCAA,SAAAwB,GAAA,IAAA2qB,EAAAC,EAAAC,EAAwDD,EAAO,QAAI1xB,KAAA2xB,EAAA,mBAAFF,EAAuF,WAAkB,aAA4T,SAAAl5B,EAAAsjB,EAAAtjB,EAAAC,GAAkB,IAAAsD,EAAA,IAAAutB,eAAyBvtB,EAAAkuB,KAAA,MAAAnO,GAAA/f,EAAAguB,aAAA,OAAAhuB,EAAAkvB,OAAA,WAA0DrzB,EAAAmE,EAAAiiB,SAAAxlB,EAAAC,IAAkBsD,EAAAmvB,QAAA,WAAsB3X,QAAA6D,MAAA,4BAAyCrb,EAAAmuB,OAAU,SAAAzxB,EAAAb,GAAc,IAAAkkB,EAAA,IAAAwN,eAAyBxN,EAAAmO,KAAA,OAAAryB,GAAA,GAAoB,IAAIkkB,EAAAoO,OAAS,MAAAtyB,IAAU,YAAAkkB,EAAA0N,QAAA,KAAA1N,EAAA0N,OAAoC,SAAAztB,EAAAnE,GAAc,IAAIA,EAAAiU,cAAA,IAAAgmB,WAAA,UAAyC,MAAAr5B,GAAS,IAAAsjB,EAAArhB,SAAAq3B,YAAA,eAA0ChW,EAAAiW,eAAA,cAAAj6B,OAAA,gCAAAF,EAAAiU,cAAAiQ,IAA0F,IAAAkW,EAAA,iBAAAl6B,sCAAA,iBAAAgI,4BAAA,iBAAAiH,uBAAA,EAAAnP,EAAAo6B,EAAApsB,SAAA,iBAAA9N,iBAAAk6B,EAAA,aAAqO,aAAAC,kBAAAl4B,UAAA,SAAA+hB,EAAAtc,EAAA0yB,GAA0D,IAAAr6B,EAAAm6B,EAAAG,KAAAH,EAAAI,UAAA3rB,EAAAhM,SAAAC,cAAA,KAAuD8E,KAAAsc,EAAApjB,MAAA,WAAA+N,EAAAuS,SAAAxZ,EAAAiH,EAAA4rB,IAAA,4BAAAvW,GAAArV,EAAAuiB,KAAAlN,EAAArV,EAAA6rB,SAAAC,SAAAD,OAAAv2B,EAAA0K,GAAAhO,EAAAgO,EAAAuiB,MAAAxwB,EAAAsjB,EAAAtc,EAAA0yB,GAAAn2B,EAAA0K,IAAAzI,OAAA,YAAAyI,EAAAuiB,KAAAnxB,EAAA26B,gBAAA1W,GAAA5f,WAAA,WAAiNrE,EAAA46B,gBAAAhsB,EAAAuiB,OAA0B,KAAA9sB,WAAA,WAA4BH,EAAA0K,IAAK,KAAK,qBAAAisB,UAAA,SAAAV,EAAAxyB,EAAA0yB,GAAgD,GAAA1yB,KAAAwyB,EAAAt5B,MAAA,4BAAAs5B,EAAAU,UAAAC,iBAAp8C,SAAA/6B,EAAAkkB,GAAgB,gBAAAA,IAAA,CAA+B8W,SAAA,GAAW,iBAAA9W,IAAAvI,QAAAsf,KAAA,sDAAA/W,EAAA,CAA4F8W,SAAA9W,IAAWA,EAAA8W,SAAA,6EAAkE3xB,KAAArJ,EAAAgK,MAAA,IAAA6mB,KAAA,UAAA7wB,GAAA,CAA4DgK,KAAAhK,EAAAgK,OAAYhK,EAAypCkkB,CAAAkW,EAAAE,GAAA1yB,QAAmF,GAAA/G,EAAAu5B,GAAAx5B,EAAAw5B,EAAAxyB,EAAA0yB,OAAsB,CAAK,IAAAr6B,EAAA4C,SAAAC,cAAA,KAAkC7C,EAAAmxB,KAAAgJ,EAAAn6B,EAAAmG,OAAA,SAAA9B,WAAA,WAAiDH,EAAAlE,OAAQ,SAAAD,EAAAkkB,EAAArjB,EAAAsD,GAAmB,IAAAA,KAAAkuB,KAAA,gBAAAluB,EAAAtB,SAAAmU,MAAA7S,EAAAtB,SAAAE,KAAAkB,UAAA,mCAAAjE,EAAA,OAAAY,EAAAZ,EAAAkkB,EAAArjB,GAA8H,IAAA+G,EAAA,6BAAA5H,EAAAgK,KAAAswB,EAAA,eAAAjxB,KAAA+wB,EAAAc,cAAAd,EAAAe,OAAAl7B,EAAA,eAAAoJ,KAAAyxB,UAAAM,WAAoI,IAAAn7B,GAAA2H,GAAA0yB,IAAA,iBAAAvI,WAAA,CAA2C,IAAAljB,EAAA,IAAAkjB,WAAqBljB,EAAAmjB,UAAA,WAAuB,IAAAhyB,EAAA6O,EAAAqR,OAAelgB,EAAAC,EAAAD,IAAAuM,QAAA,eAA6B,yBAAwBpI,IAAAw2B,SAAAvJ,KAAApxB,EAAA26B,SAAA36B,EAAAmE,EAAA,MAAyC0K,EAAAojB,cAAAjyB,OAAoB,CAAK,IAAAq7B,EAAAjB,EAAAG,KAAAH,EAAAI,UAAAh6B,EAAA66B,EAAAT,gBAAA56B,GAAgDmE,IAAAw2B,SAAAn6B,EAAAm6B,SAAAvJ,KAAA5wB,EAAA2D,EAAA,KAAAG,WAAA,WAA4D+2B,EAAAR,gBAAAr6B,IAAqB,QAAS45B,EAAApsB,OAAAhO,EAAAgO,OAAAhO,EAA8CJ,EAAAD,QAAAK,IAA36E85B,EAAAtuB,MAAA7L,EAAAo6B,GAAAD,KAAAl6B,EAAAD,QAAAq6B,oGCAnE,MAAAsB,EAAAh7B,EAAA,GACAmuB,EAAAnuB,EAAA,GACAi7B,EAAAj7B,EAAA,iDAmBe,CACbmR,OAAQ,WACN,IAAIqH,EAAQnS,KAAKmD,OAAOuN,OAAO,GACzBD,EAAQzQ,KAAKmD,OAAOsN,MACpBJ,EAAQrQ,KAAKmD,OAAOkN,MACpBE,EAAWvQ,KAAKmD,OAAOoN,SACvBskB,EAAO70B,KAAKmD,OACdtI,EAAQ,IACRi6B,EAAW,GACX31B,EAAO,GACPlB,EAAS,GACT82B,EAAS,GACTC,SACAC,EAAsB,GACtBC,EAAmB,GACnBC,EAAkB,GAClBC,EAAe,GAfHC,EAgBiDr1B,KAAKmD,OAA9DsO,EAhBQ4jB,EAgBR5jB,QAAS6jB,EAhBDD,EAgBCC,gBAAiBC,EAhBlBF,EAgBkBE,aAAcC,EAhBhCH,EAgBgCG,aAchD,GAbG/jB,GAAW6jB,IACZL,EAAsBK,EAAkB,qBAAuB,GAC/DF,EAAeE,GAAmBjlB,EAAQ,WAAa,GAEvD8kB,GADAD,EAAmBzjB,EAAQ8H,OAAS+b,EAAgB/b,QACd,EAAK,SAAW,OACtD2b,EAAmB92B,KAAKC,IAAI62B,GAC5B/iB,EAAQ,IAGNnS,KAAKsD,QAAUtD,KAAKsD,OAAO,IAAMtD,KAAKsD,OAAO,GAAG,IAAmC,iBAAtBtD,KAAKsD,OAAO,GAAG,KAC9EzI,EAAQmF,KAAKsD,OAAO,GAAG,IAGrBiyB,GAAgBC,EAAc,CAChC,IAAMC,EAjDZ,SAA8B1X,EAAKpe,GAAM,IAC/B0Y,EAAkB0F,EAAlB1F,MAAOkB,EAAWwE,EAAXxE,OACTkc,EAAkB,GACxB,GAA4B,eAAxBpd,EAAMoB,cAAgC,MAAM,IAAI/V,MAAM,uCAW1D,OAVI5H,MAAMoO,QAAQqP,IAChBA,EAAOtR,QAAQ,SAAC2d,GACd,IAAM8P,EAAW/1B,EAAKnB,MAAM,KAAKyU,OAAO,SAAC0iB,EAAKnxB,GAAN,OAAemxB,GAAOA,EAAInxB,IAAS,MAAMohB,GAC3E/e,EAAM,CACVwR,QACAkB,OAAQmc,GAEVD,EAAgB50B,KAAKgG,KAGlB4uB,EAmCqBG,CAAqBnkB,EAAS+jB,GAEtD36B,EAAQ46B,EAAgB,GAAGlc,OAG3B0b,GAFAH,EAAYW,EAAgB,GAAGlc,QAEG,qBAAuB,GACzD6b,EAAeN,GAAazkB,EAAQ,WAAa,GAEjD8kB,GADAD,EAAmBr6B,EAAQi6B,GACW,EAAK,SAAW,OACtDI,EAAmB92B,KAAKC,IAAI62B,GAC5B/iB,EAAQ,GA+CV,GA5CA6iB,EAAen6B,OACuB,IAAzBg6B,EAAA,eAAiE,IAAzBA,EAAA,cAC/CryB,MAAMyf,SAASpnB,MACjBm6B,GAAe,EAAAL,EAAA/2B,cAAa/C,GACzB4W,GAAW6jB,IACZJ,GAAmB,EAAAP,EAAA/2B,cAAas3B,KAIlCL,EAAA,SACF52B,EAAS,gBAAkBwS,EAAQ,mBAAqBokB,EAAA,OAAiB,WAEvEA,EAAA,SACFE,EAAS,gBAAkBtkB,EAAQ,mBAAqBokB,EAAA,OAAiB,WAE3E11B,GAAQ,eAAiBsR,EAAQ,KACjCtR,GAAU,eAAiBsR,EAAQ,2BAA6BwkB,EAAsB,aAAc,EAAAnN,EAAAlpB,YAAW/D,GAAS,6BAA+BsX,EAAQ,KAC3JV,GAAW6jB,IACbn2B,GAAU,eAAiBsR,EAAQ,UAAY0kB,EAAkB,sBAAwBA,EAAkB,aAAc,EAAArN,EAAAlpB,YAAWs2B,GAAoB,UAEtJK,GAAgBC,IACd36B,GAASi6B,GACX31B,GAAU,eAAiBsR,EAAQ,UAAY0kB,EAAkB,sBAAwBA,EAAkB,aAAc,EAAArN,EAAAlpB,YAAWs2B,GAAoB,SACxJ/1B,GAAQ,UAAY21B,EAAY,YAEhC31B,GAAQ,6BAGZA,GAAY,eAAiBsR,EAAQ,gBAAkB2kB,EAAe,KAAOn3B,GAAS,EAAA6pB,EAAAlpB,YAAWo2B,GAAgBD,EAAS,SACtH1kB,IACFlR,GAAU,eAAiBsR,EAAQ,mBAAoB,EAAAqX,EAAAlpB,YAAWyR,GAAS,UAEzEE,IACFpR,GAAU,eAAiBsR,EAAQ,sBAAuB,EAAAqX,EAAAlpB,YAAW2R,GAAY,UAEnFpR,GAAU,SACVA,GAAQ,SAERa,KAAKoV,KAAKyC,UAAY1Y,EAElBa,KAAKmD,OAAOiX,YACdpa,KAAKmD,OAAOiX,aAGVpa,KAAKmD,OAAO2N,OAAS9Q,KAAKmD,OAAO2N,MAAMC,uBAAwB,CACjE,IAAM8kB,MAAsBplB,EAAtB,gBAA2C2kB,EAGjD,GAFAl5B,SAAS6M,cAAc8sB,GAAiBt4B,iBAAiB,QAAS,SAAAC,GAAA,OAAK,EAAA4V,EAAApR,SAAgBxE,EAAEiC,OAAOnC,UAAWE,KAEvGiU,GAAW6jB,EAAiB,CAC9B,IAAMQ,MAA+BrlB,EAA/B,UAA8C0kB,EACpDj5B,SAAS6M,cAAc+sB,GAA0Bv4B,iBAAiB,QAAS,SAAAC,GAAA,OAAK,EAAA4V,EAAApR,SAAgBxE,EAAEiC,OAAOnC,UAAWE,QAI1HwF,OAAQ,WAENhD,KAAK8K,UAEPkE,QAAS,0qBC5HX8Y,EAAAnuB,EAAA,GACAi7B,EAAAj7B,EAAA,uCAEA,IAAIo8B,SACJ,SAASC,EAAmBjgB,EAAiBT,GAC3C,IAAInW,EAAO,GAMP82B,EAAe,GACflgB,EAAgB5S,OAAOqQ,OAASuC,EAAgB5S,OAAOqQ,MAAMxB,aAC/DikB,EAAelgB,EAAgB5S,OAAOqQ,MAAMxB,YAE9C,IAAM7O,OATgB,CACpB+yB,KAAM,EACNxpB,MAAO,EACPypB,QAAQ,GAQLF,GAGAF,IACHA,EAAc5yB,EAAO+yB,MAGvB,IAAIE,SACAC,EAAQ,EACZ,GAAqB,IAAjBlzB,EAAOuJ,MACT0pB,EAAmB9gB,EAAQ7T,MAAM,OAC5B,CACL,IAAM4C,EAAQlB,EAAOuJ,OAASqpB,EAAc,GAAK,EAC3CzxB,EAAMD,EAAQlB,EAAOuJ,MAC3B0pB,EAAmB9gB,EAAQ7T,MAAM4C,EAAOC,GACxC+xB,EAAQj4B,KAAKmO,MAAM+I,EAAQvZ,OAAS,GAAKoH,EAAOuJ,OAGlD,IAAI4pB,EAAevgB,EAAgB5S,OAAOqQ,MAAMuL,QAC/BhJ,EAAgB5S,OAAOqQ,MAAMuL,QAC7BhJ,EAAgBT,QAAQ3T,OAAO,GAE1C40B,EAAgB,GAnC8BC,EAuChDzgB,EAAgB5S,OAAOqQ,MAFzBijB,EArCkDD,EAqClDC,UACAC,EAtCkDF,EAsClDE,SAEF,IAAK,IAAIv7B,KAAOs7B,EACdF,EAAcD,EAAa1yB,QAAQzI,IAAQA,EAzCO,IAAA4d,GAAA,EAAAC,GAAA,EAAAC,OAAAvX,EAAA,IA4CpD,QAAAwX,EAAAC,EAAgBid,EAAhBz7B,OAAAye,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,EAAkC,KAAzBnX,EAAyBsX,EAAAre,MAChCsE,GAAU,8BADsB,IAAAw3B,GAAA,EAAAC,GAAA,EAAAC,OAAAn1B,EAAA,IAEhC,QAAAo1B,EAAAC,EAAiCn1B,EAAIo1B,UAArCr8B,OAAAye,cAAAud,GAAAG,EAAAC,EAAA1d,QAAAC,MAAAqd,GAAA,EAAgD,KAAA7wB,EAAAgxB,EAAAj8B,MAAAihB,EAAAmb,EAAAnxB,EAAA,GAAtC1G,EAAsC0c,EAAA,GAA/Bob,EAA+Bpb,EAAA,GAC1C4a,GAAYQ,aAAuB5W,OACrC4W,EAAcR,EAASQ,IAGzB,IAAIC,GAAqB,EAAArP,EAAAlpB,YAAWs4B,GACjCX,EAAcn3B,GACfD,UAAes3B,EAAUF,EAAcn3B,IAAQ+3B,GAA/C,QAGFh4B,UAAeg4B,EAAf,SAZ8B,MAAAxd,GAAAid,GAAA,EAAAC,EAAAld,EAAA,aAAAgd,GAAAI,EAAAnd,QAAAmd,EAAAnd,SAAA,WAAAgd,EAAA,MAAAC,GAchC13B,GAAU,SA1DwC,MAAAwa,GAAAX,GAAA,EAAAC,EAAAU,EAAA,aAAAZ,GAAAI,EAAAS,QAAAT,EAAAS,SAAA,WAAAZ,EAAA,MAAAC,GA6DpD,GAAIod,EAAQ,EAAE,CACZl3B,qDACA,IAAIi4B,EAAa,EACXC,EAA4B,IAAhBtB,EAAqB,EAAKA,EAAc,EACpDuB,EAAYvB,IAAgBM,EAASA,EAASN,EAAc,EAIlE,IAHI5yB,EAAOgzB,SACTh3B,sCAA2Ck4B,EAA3C,iBAEKD,GAAcf,GACnBl3B,qBACEi4B,IAAerB,EAAc,SAAW,IAD1C,gBAEgBqB,EAFhB,KAE+BA,EAF/B,OAGAA,IAEEj0B,EAAOgzB,SACTh3B,sCAA2Cm4B,EAA3C,iBAEFn4B,GAAQ,aAGV,OAAOA,YA6IM,CAAE2L,OA1HA,WAAW,IAAAgF,EAAA9P,KAClBsV,EAAUtV,KAAKsV,QAAQ3T,OAEvByT,EAAKpV,KAAKoV,KACV3E,EAAQzQ,KAAKmD,OAAOsN,MACpBsF,EAAkB/V,KAEpBb,EAAO,GAGX,GADmC,IAAnBmW,EAAQvZ,QAAsC,IAAtBuZ,EAAQ,GAAGvZ,OACnD,CACE,IAAM6c,EAAM,qBACN8B,EAAY1a,KAAKmD,OAAOiO,aAAawH,IAAQA,EAC/C5Y,KAAKmD,OAAOkO,mBACdrR,KAAKgY,QAAQ0C,OAJjB,CAUAvb,kBAAuBsR,EAAvB,WAGAtR,oBAA2BsR,EAA3B,mBACAtR,GAAY,UACZA,GAAc,OACdA,GA1CJ,SAA8B4W,EAAiBT,GAC7C,IAAInW,EAAO,GACPo4B,GAAe,EACb3Y,EAAc7I,EAAgB5S,OAAOqQ,MACrCgkB,EACH5Y,GAAeA,EAAYG,SACzBzJ,EAAQ,GANyCmiB,GAAA,EAAAC,GAAA,EAAAC,OAAAj2B,EAAA,IAOtD,QAAAk2B,EAAAC,EAAoBL,EAApB78B,OAAAye,cAAAqe,GAAAG,EAAAC,EAAAxe,QAAAC,MAAAme,GAAA,EAAiC,KAAxBK,EAAwBF,EAAA/8B,MAC3Bk9B,GAAiB,EAAAjQ,EAAAlpB,YAAWk5B,GAEhC34B,wBADAo4B,GAAc,GACd,KAA6CQ,EAA7C,SAVoD,MAAApe,GAAA+d,GAAA,EAAAC,EAAAhe,EAAA,aAAA8d,GAAAI,EAAAje,QAAAie,EAAAje,SAAA,WAAA8d,EAAA,MAAAC,GAYtD,OAAOx4B,EA8BS64B,CAAqBjiB,EAAiBT,GACpDnW,GAAc,QACdA,GAAY,WAEZA,GAAY,UACZA,GAAY62B,EAAmBjgB,EAAiBT,GAChDnW,GAAY,WACZA,GAAU,WAGVA,GAAQ,SAGRiW,EAAGrM,cAAH,IAAqB0H,EAArB,cAAwCoH,UAAY1Y,EAEpDiW,EACG6iB,iBADH,IACwBxnB,EADxB,iBAEGxI,QAAQ,SAAC2d,GACRA,EAAKroB,iBAAiB,QAAS,SAACvB,GAC9B,IAAIk8B,EAAYl8B,EAAMyD,OAAOoyB,aAAa,UAAY,MAClD0F,EAAev7B,EAAMyD,OAAOoyB,aAAa,eAqB3CqG,EADgB,QAAdA,EACU,OAEA,MAEdl8B,EAAMyD,OAAO4I,aAAa,QAAS6vB,GAEnC,IAAMC,EAAQroB,EAAKwF,QAAQ3T,OAAOy2B,QAClCtoB,EAAKwF,QAAQ3T,OAAOoB,KA3BN,SAAU1J,EAAGkkB,GACzB,IAAI8a,EAAiC,QAAdH,EAAuB,GAAK,EAEnD,GAA8B,iBAAnB7+B,EAAEk+B,GAA2B,CACtC,IAAIe,EAAQj/B,EAAEk+B,GAAatX,cACvBsY,EAAQhb,EAAEga,GAAatX,cAC3B,OAAIqY,EAAQC,GACF,EAAIF,EAEVC,EAAQC,EACH,EAAGF,EAIL,EAET,OAAQh/B,EAAEk+B,GAAeha,EAAEga,IAAgBc,IAY7CvoB,EAAKwF,QAAQ3T,OAAO62B,QAAQL,GAE5B/iB,EAAGrM,cAAH,IAAqB0H,EAArB,oBAA8CoH,UAC3Cme,EAAmBjgB,EAAiBT,GACvCmjB,QAKN,IAAMA,EAA0B,SAA1BA,IACJrjB,EAAG6iB,iBAAiB,QAAQhwB,QAAQ,SAAAywB,GAClCA,EAAIn7B,iBAAiB,QAAS,SAACvB,GAC7B+5B,EAAc9T,SAASjmB,EAAMyD,OAAOoyB,aAAa,cACjDzc,EAAGrM,cAAH,IAAqB0H,EAArB,oBAA8CoH,UAC3Cme,EAAmBjgB,EAAiBT,GACpCmjB,MACA,MAUT,GANAA,EAAwB1iB,EAAiBX,EAAI3E,GAEzCzQ,KAAKmD,OAAOiX,YACdpa,KAAKmD,OAAOiX,aAGVpa,KAAKmD,OAAO2N,OAAS9Q,KAAKmD,OAAO2N,MAAMC,uBAAwB,CACjE,IAAM4nB,MAAiBloB,EAAjB,iBACNvU,SAAS6M,cAAc4vB,GACpBp7B,iBAAiB,QAAS,SAACC,GAAM,IAAAo7B,EACAp7B,EAAEiC,OAA1BgY,EADwBmhB,EACxBnhB,SAAUna,EADcs7B,EACdt7B,UACD,OAAbma,IACF,EAAArE,EAAApR,SAAgB1E,EAAWE,QAedwF,OAPV,WAEXhD,KAAK8K,UAKwBkE,QAFjB,uGChOD,CACblE,OAAQ,WACN,IAAI3L,EAAO,GACOa,KAAK8S,KAAKC,WAAWmF,QAAU,GAGjD/Y,GAAQ,eAAiBa,KAAKmD,OAAOsN,MAAQ,KAC7CtR,GAAU,wDACVA,GAAY,6CACZA,GAAU,SACVA,GAAQ,SACRa,KAAKoV,KAAKyC,UAAY1Y,GAExB6D,OAAQ,WAENhD,KAAK8K,UAEPkE,QAAS,WACP,GAAIhP,KAAK8S,KAAKC,WAAWmF,QAAS,CAC5BlY,KAAK8S,KAAKC,WAAWmF,QAAQI,UAC/BugB,cAAc74B,KAAK8S,KAAKC,WAAWmF,QAAQI,UAE7CtY,KAAK8S,KAAKC,WAAWmF,QAAQ4gB,OAAS,EACtC,WACS94B,KAAK8S,KAAKC,WAAWmF,QAE9B,MAAO1a,GACLwC,KAAK8S,KAAKC,WAAWmF,aAAUxW,GAGnC1B,KAAKoV,KAAKyC,UAAY,+UC9Bd9X,0JAAZpG,EAAA,IACAo/B,EAAAp/B,EAAA,GACAg7B,EAAAh7B,EAAA,GACAi7B,EAAAj7B,EAAA,2CAEqBynB,2KACV,IACCzf,EAAW3B,KAAKsV,QAAhB3T,OADD0zB,EAQHr1B,KAAKmD,OALPuN,EAHK2kB,EAGL3kB,OACArH,EAJKgsB,EAILhsB,UACA6H,EALKmkB,EAKLnkB,aACAP,EANK0kB,EAML1kB,aACAG,EAPKukB,EAOLvkB,MAEI+jB,EAAO70B,KAAKmD,OATX61B,EAqBHh5B,KAAKmD,OAAOwQ,OArBTslB,EAAAD,EAWLllB,SACEjC,EAZGonB,EAYHpnB,KACAkC,EAbGklB,EAaHllB,eACAC,EAdGilB,EAcHjlB,SAEFJ,EAhBKolB,EAgBLplB,MACAslB,EAjBKF,EAiBLE,mBACArlB,EAlBKmlB,EAkBLnlB,aACAK,EAnBK8kB,EAmBL9kB,MACAE,EApBK4kB,EAoBL5kB,YAEI+kB,EAAgB,GAAhBA,EAA2B,GAA3BA,EAAuC,GAAvCA,EAAiD,IACnDC,EAAiB,EAClBF,IACDE,EAAiB,GAEnB,IAAMC,EAAkBt5B,EAAGzD,OAAO+M,GAE5BwX,EADiB9gB,EAAGzD,OAAO0D,KAAKoV,KAAKrM,cAAc,IAAM/I,KAAKmD,OAAOsN,MAAQ,yBACtD/P,OAAO,OAC9B44B,EAAWD,EAAgB38B,MAAM,SAAS+E,MAAM,GAAI,GAClD03B,EAAeA,EACjBI,EAAYF,EAAgB38B,MAAM,UAAU+E,MAAM,GAAI,GACpD03B,EAAaA,EAAgB,GAC/BK,EAAaD,GAAW53B,EAAO5F,OAAS,GAC1C09B,EAAgBH,EAChBI,EAAW,KAAK9rB,QAAQoG,GAGxB2lB,EAAkB,EACnBvlB,IACDulB,GAAmBL,EAAWllB,IAAgBzS,EAAO5F,OAAO,IAE9D,IAAM69B,EAAWj4B,EAAOF,MAAM,GAAGgT,IAAI,SAACva,EAAGZ,GACrC,IAAMugC,EAAY,CAChB,CACEv5B,GAAKg5B,EAAWG,GAAe,EAC/Bj5B,EAAGg5B,EAAalgC,EAAI8/B,GAEtB,CACE94B,GAAKg5B,EAAWG,GAAe,EAAIA,EACnCj5B,EAAGg5B,EAAalgC,EAAI8/B,IAGf,IAAN9/B,IACsB,aAAnBya,IACFK,EACKqlB,GAAgCE,EAChCF,EACEA,EAAgBv/B,EAAE,GAAMyH,EAAOrI,GAAG,GACzCogC,GAAYx/B,EAAE,GAAKyH,EAAOrI,GAAG,GAAM,KAAKsU,QAAQoG,IAE3B,aAAnBD,IACFK,EACKqlB,GAAgCE,EAChCF,EAAiBH,EAAWp/B,EAAE,GAAMyH,EAAO,GAAG,GACnD+3B,GAAYx/B,EAAE,GAAKyH,EAAO,GAAG,GAAM,KAAKiM,QAAQoG,KAGpD,IAAIxS,EAAQtH,EAAE,GACd,GAAGI,OAAOuf,KAAK3I,GAAcnV,OAC3B,IAAK,IAAIZ,KAAO+V,EACXA,EAAa/V,KAASjB,EAAE,KACzBsH,EAAQrG,GAId,IAAIoe,EAASrf,EAAE,GAKf,YAJsC,IAAzB26B,EAAA,eAAiE,IAAzBA,EAAA,cAC/CryB,MAAMyf,SAAS/nB,EAAE,OACnBqf,GAAS,EAAAob,EAAA/2B,cAAa1D,EAAE,KAErB,CACLC,KAAMD,EAAE,GACRsH,QACAk4B,QAASA,EAAU,IACnBngB,SACAugB,iBACKD,EADL,CAEE,CACEv5B,GAAKg5B,EAAWG,GAAe,EAAIA,EACnCj5B,EAAGg5B,GAAclgC,EAAI,IAEvB,CACEgH,GAAKg5B,EAAWG,GAAe,EAC/Bj5B,EAAGg5B,GAAclgC,EAAI,SAuL/B,GA/KAunB,EACGtgB,KAAK,sBAAuB,kBAC5BA,KAAK,UAFR,QAE0B+4B,EAAWH,EAAcA,GAFnD,KAEmEI,EAAYJ,EAAaA,EAAgB,KACzG54B,KAAK,SAAU,QACfA,KAAK,QAAS,QACdG,OAAO,KACPH,KAAK,YAAa,aAAe44B,EAAc,IAAMA,EAAa,KAClEY,UAAU,WACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,WACLH,KAAK,SAAU,SAACrG,GACb,OAAOA,EAAE4/B,OAAOrlB,IAAI,SAAC/Y,GACnB,MAAO,CAACA,EAAE4E,EAAE5E,EAAE8E,GAAGM,KAAK,OAEvBA,KAAK,OAETpE,MAAM,OAAQ,SAACxC,EAAGZ,GACjB,OAAGqX,EAAazW,EAAEsH,OACTmP,EAAazW,EAAEsH,OAEjBkP,EAAOpX,KAEfiH,KAAK,QAAS,SAACrG,GAAQ,OAAOA,EAAEsH,QAChCjB,KAAK,SAAU,WAEjBqT,IAEDiN,EACGkZ,UAAU,QACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPH,KAAK,KAAM,IACXA,KAAK,KAAM,SAACrG,GACX,OAAOA,EAAE4/B,OAAO,GAAGt5B,EAAI24B,EAAcC,EAAe,IAErD74B,KAAK,KAAM,SAACrG,GAAQ,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAI64B,IAC3C54B,KAAK,KAAM,SAACrG,GACX,OAAOA,EAAE4/B,OAAO,GAAGt5B,EAAI24B,EAAcC,EAAe,IAErD74B,KAAK,QAAS,eAGjBsgB,EACGngB,OAAO,QACPH,KAAK,KAAM,IACXA,KAAK,KAAMq5B,EAASA,EAAS79B,OAAO,GAAG+9B,OAAO,GAAGt5B,EACpC24B,EAAcC,EAAe,GAC1C74B,KAAK,KAAMq5B,EAASA,EAAS79B,OAAO,GAAG+9B,OAAO,GAAGx5B,EAAI64B,GACrD54B,KAAK,KAAMq5B,EAASA,EAAS79B,OAAO,GAAG+9B,OAAO,GAAGt5B,EACpC24B,EAAcC,EAAe,GAC1C74B,KAAK,QAAS,gBAIhBqT,GACDiN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,SACrB6D,KAAK,IAAK,IACVA,KAAK,IAAK,SAACrG,GACV,OAASA,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAaC,EAAiB,IAEzC74B,KAAK,QAAS,SAACrG,GAAQ,MAAO,cAAgBA,EAAEsH,QAChD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEC,OACvBJ,KAAK6F,WAAUu5B,GACf54B,KAAK,SAAU,WAIhBqT,GACFiN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,OACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,GAAMpG,EAAE4/B,OAAO,GAAGx5B,EAAIpG,EAAE4/B,OAAO,GAAGx5B,GAAG,EAC/B,GAAd64B,IAEZ54B,KAAK,IAAK,SAACrG,GACV,OAASA,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAaC,EAAiB,IAEzC74B,KAAK,QAAS,SAACrG,GAAQ,MAAO,cAAgBA,EAAEsH,QAChD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEC,OACvBJ,KAAK6F,WAAUu5B,GACf54B,KAAK,SAAU,WAIjBsR,IAASgC,GACVgN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK+4B,EAAS,EAAIH,GACvB54B,KAAK,IAAK,SAACrG,GACV,OAASA,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAaC,EAAiB,IAEzC74B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEw/B,UACvBn5B,KAAK,SAAU,WAIjBsT,IAAiBhC,GAClBgP,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK+4B,EAAS,EAAIH,GACvB54B,KAAK,IAAK,SAACrG,GACV,OAASA,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAaC,EAAiB,IAEzC74B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEqf,SACvBhZ,KAAK,SAAU,WAIjBsR,GAAQgC,IAETgN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK+4B,EAAS,EAAIH,GACvB54B,KAAK,IAAK,SAACrG,GACV,OAAsB,IAAnBk/B,GACQl/B,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAa,IAEhBj/B,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAaC,EAAiB,KAEzC74B,KAAK,QAAS,SAACrG,GAAQ,MAAO,eAAiBA,EAAEsH,QACjD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEw/B,UACvBn5B,KAAK,SAAU,WAGlBsgB,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK+4B,EAAS,EAAIH,GACvB54B,KAAK,IAAK,SAACrG,GACV,OAAsB,IAAnBk/B,GACQl/B,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,GAEHj/B,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAaC,EAAiB,IAEzC74B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEqf,SACvBhZ,KAAK,SAAU,YAGjB2T,EAAM,KAWE+lB,EAAT,SAAyB//B,GACvBggC,EACGx9B,MAAM,UAAW,IACpBy9B,EACGz9B,MAAM,UAAW,IACpB,IAAM09B,EAAY,SAASl7B,KAAKa,EAAGzD,OAAO0D,MAAMO,KAAK,UAAU,GAC/DsgB,EACGkZ,UADH,IACiBK,GACd19B,MAAM,UAAW,IAEb29B,EAAT,SAAwBngC,GACtBggC,EACGx9B,MAAM,UAAW,GACpBy9B,EACGz9B,MAAM,UAAW,IAxBhBw9B,EAAgBrZ,EAAMkZ,UAAU,WACtCG,EACGI,GAAG,YAAaL,GAChBK,GAAG,WAAYD,GAElB,IAAMF,EAAatZ,EAAMkZ,UAAU,QACnCI,EACGG,GAAG,YAAaL,GAChBK,GAAG,WAAYD,GAqBpB,GAAIvpB,GAASA,EAAMC,uBAAwB,CAC3B8P,EAAMkZ,UAAU,QAExBO,GAAG,QAET,SAA2Bh3B,GAAM,IACvBo2B,EAAoBp2B,EAApBo2B,QAASngB,EAAWjW,EAAXiW,OACb1F,GACF,EAAAT,EAAApR,SAAgBuX,EAAQxZ,EAAG/D,OAClB6V,IACT,EAAAuB,EAAApR,SAAgB03B,EAAS35B,EAAG/D,2CAMlCgE,KAAKgP,UACLhP,KAAK8K,2CAGkB/K,EAAGzD,OAAO0D,KAAKoV,KAAKrM,cAAc,IAAM/I,KAAKmD,OAAOsN,MAAQ,yBACpErD,4BA1UEgU,4UCLTrhB,0JAAZpG,EAAA,IACAo/B,EAAAp/B,EAAA,GACAg7B,EAAAh7B,EAAA,GACAi7B,EAAAj7B,EAAA,2CAEqB2nB,2KACV,IACC3f,EAAW3B,KAAKsV,QAAhB3T,OADD0zB,EAQHr1B,KAAKmD,OALPuN,EAHK2kB,EAGL3kB,OACArH,EAJKgsB,EAILhsB,UACA6H,EALKmkB,EAKLnkB,aACAP,EANK0kB,EAML1kB,aACAG,EAPKukB,EAOLvkB,MAEI+jB,EAAO70B,KAAKmD,OATX61B,EAqBHh5B,KAAKmD,OAAOwQ,OArBTslB,EAAAD,EAWLllB,SACEjC,EAZGonB,EAYHpnB,KACAkC,EAbGklB,EAaHllB,eACAC,EAdGilB,EAcHjlB,SAEFJ,EAhBKolB,EAgBLplB,MACAC,EAjBKmlB,EAiBLnlB,aACAM,EAlBK6kB,EAkBL7kB,SACAD,EAnBK8kB,EAmBL9kB,MACAE,EApBK4kB,EAoBL5kB,YAEI+kB,EAAgB,GAAhBA,EAA2B,GAA3BA,EAAuC,GAAvCA,EAAiD,IACjDE,EAAkBt5B,EAAGzD,OAAO+M,GAE5BwX,EADiB9gB,EAAGzD,OAAO0D,KAAKoV,KAAKrM,cAAc,IAAM/I,KAAKmD,OAAOsN,MAAQ,yBACtD/P,OAAO,OAC9B44B,EAAWD,EAAgB38B,MAAM,SAAS+E,MAAM,GAAI,GAClD03B,EAAeA,EACjBI,EAAYF,EAAgB38B,MAAM,UAAU+E,MAAM,GAAI,GACpD03B,EAAaA,EAAgB,GAC/BK,EAAaD,GAAW53B,EAAO5F,OAAS,GACxCq9B,EAA8B,GAAbI,EACjBe,EAA8B,IAAjBnB,EACfK,EAAgBH,EAChBI,EAAW,KAAK9rB,QAAQoG,GAGxB2lB,EAAkB,EACnBvlB,IACDulB,GAAmBL,EAAWllB,IAAgBzS,EAAO5F,OAAO,IAE9D,IAAM69B,EAAWj4B,EAAOF,MAAM,GAAGgT,IAAI,SAACva,EAAGZ,GACrC,IAAMugC,EAAY,CAChB,CACEv5B,GAAKg5B,EAAWG,GAAe,EAC/Bj5B,EAAGg5B,EAAalgC,EAAI8/B,GAEtB,CACE94B,GAAKg5B,EAAWG,GAAe,EAAIA,EACnCj5B,EAAGg5B,EAAalgC,EAAI8/B,IAGf,IAAN9/B,IACqB,aAAnBya,IACDK,EACKqlB,GAAgCE,EACjCF,EAAgBA,EAAgBv/B,EAAE,GAAGyH,EAAOrI,GAAG,GACnDogC,GAAYx/B,EAAE,GAAGyH,EAAOrI,GAAG,GAAI,KAAKsU,QAAQoG,IAExB,aAAnBD,IACDK,EACKqlB,GAAgCE,EACjCF,EAAgBH,EAAWp/B,EAAE,GAAGyH,EAAO,GAAG,GAC9C+3B,GAAYx/B,EAAE,GAAGyH,EAAO,GAAG,GAAI,KAAKiM,QAAQoG,KAGhD,IAAIxS,EAAQtH,EAAE,GACd,GAAGI,OAAOuf,KAAK3I,GAAcnV,OAC3B,IAAK,IAAIZ,KAAO+V,EACXA,EAAa/V,KAASjB,EAAE,KACzBsH,EAAQrG,GAId,IAAIoe,EAASrf,EAAE,GAKf,YAJsC,IAAzB26B,EAAA,eAAiE,IAAzBA,EAAA,cAC/CryB,MAAMyf,SAAS/nB,EAAE,OACnBqf,GAAS,EAAAob,EAAA/2B,cAAa1D,EAAE,KAErB,CACLC,KAAMD,EAAE,GACRsH,QACAk4B,QAASA,EAAU,IACnBngB,SACAugB,iBACKD,EADL,CAEE,CACEv5B,GAAKg5B,EAAWG,GAAe,EAAIA,EACnCj5B,EAAGg5B,GAAclgC,EAAI,IAEvB,CACEgH,GAAKg5B,EAAWG,GAAe,EAC/Bj5B,EAAGg5B,GAAclgC,EAAI,SAOzBkhC,EAAkBZ,EAASnlB,IAAI,SAACva,EAAGZ,GACrC,MAAO,CACLkI,MAAOtH,EAAEsH,MACTs4B,OAAQ,CACN,CACEx5B,EAAGpG,EAAE4/B,OAAO,GAAGx5B,EACfE,EAAGtG,EAAE4/B,OAAO,GAAGt5B,GAEjB,CACEF,EAAGpG,EAAE4/B,OAAO,GAAGx5B,EACfE,EAAGtG,EAAE4/B,OAAO,GAAGt5B,GAEjB,CACEF,EAAgB,SAAb6T,EACDja,EAAE4/B,OAAO,GAAGx5B,EACZpG,EAAE4/B,OAAO,GAAGx5B,EAAIi6B,EAAYjB,EAAS,EACnCA,EAAS,EAAI,EACbp/B,EAAE4/B,OAAO,GAAGx5B,EAAIi6B,EACpB/5B,EAAgB,SAAb2T,EACDja,EAAE4/B,OAAO,GAAGt5B,EACZtG,EAAE4/B,OAAO,GAAGt5B,EAAK44B,EAAe,KAEpC,CACE94B,EAAgB,UAAb6T,EACDja,EAAE4/B,OAAO,GAAGx5B,EACZpG,EAAE4/B,OAAO,GAAGx5B,EAAIi6B,EAAYjB,EAAS,EACnCA,EAAS,EAAI,EACbp/B,EAAE4/B,OAAO,GAAGx5B,EAAIi6B,EACpB/5B,EAAgB,UAAb2T,EACDja,EAAE4/B,OAAO,GAAGt5B,EACZtG,EAAE4/B,OAAO,GAAGt5B,EAAK44B,EAAe,SAOtCqB,EAAab,EAAS93B,OAAO04B,GAqLnC,GAlLA3Z,EACGtgB,KAAK,sBAAuB,iBAC5BA,KAAK,UAFR,QAE0B+4B,EAAWH,EAAcA,GAFnD,KAEmEI,EAAYJ,EAAaA,EAAgB,KACzG54B,KAAK,SAAU,QACfA,KAAK,QAAS,QACdG,OAAO,KACPH,KAAK,YAAa,aAAe44B,EAAc,IAAMA,EAAa,KAClEY,UAAU,WACVz2B,KAAKm3B,GACLT,QACAt5B,OAAO,WACLH,KAAK,SAAU,SAACrG,GACb,OAAOA,EAAE4/B,OAAOrlB,IAAI,SAAC/Y,GACnB,MAAO,CAACA,EAAE4E,EAAE5E,EAAE8E,GAAGM,KAAK,OAEvBA,KAAK,OAETpE,MAAM,OAAQ,SAACxC,EAAGZ,GACjB,OAAGA,EAAKsgC,EAAS79B,OAAS,EACrB4U,EAAazW,EAAEsH,OACTzB,EAAG26B,IAAI/pB,EAAazW,EAAEsH,QAAQm5B,OAAO,KAEvC56B,EAAG26B,IAAIhqB,EAAOpX,EAAKsgC,EAAS79B,SAAU4+B,OAAO,KAEnDhqB,EAAazW,EAAEsH,OACTmP,EAAazW,EAAEsH,OAEjBkP,EAAOpX,KAEfiH,KAAK,QAAS,SAACrG,GAAQ,OAAOA,EAAEsH,QAChCjB,KAAK,SAAU,WAEjBqT,IAEDiN,EACGkZ,UAAU,QACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPH,KAAK,KAAM,IACXA,KAAK,KAAM,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGt5B,EAAI24B,EAAcC,EAAe,IAEtD74B,KAAK,KAAM,SAACrG,EAAGZ,GACd,OAAS,IAANA,EACMY,EAAE4/B,OAAO,GAAGx5B,EAAI64B,EAElBj/B,EAAE4/B,OAAO,GAAGx5B,EAAI64B,EAAcoB,IAEtCh6B,KAAK,KAAM,SAACrG,GACX,OAAOA,EAAE4/B,OAAO,GAAGt5B,EAAI24B,EAAcC,EAAe,IAErD74B,KAAK,QAAS,eAGjBsgB,EACGngB,OAAO,QACPH,KAAK,KAAM,IACXA,KAAK,KAAMq5B,EAASA,EAAS79B,OAAO,GAAG+9B,OAAO,GAAGt5B,EAAI24B,EACxCC,EAAkBA,EAAe,GAC9C74B,KAAK,KAAMq5B,EAASA,EAAS79B,OAAO,GAAG+9B,OAAO,GAAGx5B,EACpC64B,EAAcoB,GAC3Bh6B,KAAK,KAAMq5B,EAASA,EAAS79B,OAAO,GAAG+9B,OAAO,GAAGt5B,EAAI24B,EACxCC,EAAkBA,EAAe,GAC9C74B,KAAK,QAAS,gBAIhBqT,GACDiN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,SACrB6D,KAAK,IAAK,IACVA,KAAK,IAAK,SAACrG,GACV,OAASA,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAa,EAAKC,EAAe,IAE5C74B,KAAK,QAAS,SAACrG,GAAQ,MAAO,cAAgBA,EAAEsH,QAChD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEC,OACvBJ,KAAK6F,WAAUu5B,GACf54B,KAAK,SAAU,WAIhBqT,GACFiN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,OACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,GAAMpG,EAAE4/B,OAAO,GAAGx5B,EAAIpG,EAAE4/B,OAAO,GAAGx5B,GAAG,EAAK,MAE9DC,KAAK,IAAK,SAACrG,GACV,OAASA,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAa,IAExB54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,cAAgBA,EAAEsH,QAChD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEC,OACvBJ,KAAK6F,WAAUu5B,GACf54B,KAAK,SAAU,WAIjBsR,IAASgC,GACVgN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK+4B,EAAS,EAAIH,GACvB54B,KAAK,IAAK,SAACrG,GACV,OAASA,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAa,IAExB54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEw/B,UACvBn5B,KAAK,SAAU,WAIjBsT,IAAiBhC,GAClBgP,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK+4B,EAAS,EAAIH,GACvB54B,KAAK,IAAK,SAACrG,GACV,OAASA,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAa,IAExB54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEqf,SACvBhZ,KAAK,SAAU,WAIjBsR,GAAQgC,IAETgN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK+4B,EAAS,EAAIH,GACvB54B,KAAK,IAAK,SAACrG,GACV,OAASA,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAa,KAExB54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,eAAiBA,EAAEsH,QACjD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEw/B,UACvBn5B,KAAK,SAAU,WAGlBsgB,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK+4B,EAAS,EAAIH,GACvB54B,KAAK,IAAK,SAACrG,GACV,OAASA,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAAKtG,EAAE4/B,OAAO,GAAGt5B,EAC/C24B,EAAa,IAExB54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEqf,SACvBhZ,KAAK,SAAU,YAGjB2T,EAAM,KAWE+lB,EAAT,SAAyB//B,GACvBggC,EACGx9B,MAAM,UAAW,IACpBy9B,EACGz9B,MAAM,UAAW,IACpB,IAAM09B,EAAY,SAASl7B,KAAKa,EAAGzD,OAAO0D,MAAMO,KAAK,UAAU,GAC/DsgB,EACGkZ,UADH,IACiBK,GACd19B,MAAM,UAAW,IAEb29B,EAAT,SAAwBngC,GACtBggC,EACGx9B,MAAM,UAAW,GACpBy9B,EACGz9B,MAAM,UAAW,IAxBhBw9B,EAAgBrZ,EAAMkZ,UAAU,WACtCG,EACGI,GAAG,YAAaL,GAChBK,GAAG,WAAYD,GAElB,IAAMF,EAAatZ,EAAMkZ,UAAU,QACnCI,EACGG,GAAG,YAAaL,GAChBK,GAAG,WAAYD,GAqBpB,GAAIvpB,GAASA,EAAMC,uBAAwB,CAC3B8P,EAAMkZ,UAAU,QAExBO,GAAG,QAET,SAA2Bh3B,GAAM,IACvBo2B,EAAoBp2B,EAApBo2B,QAASngB,EAAWjW,EAAXiW,OACb1F,GACF,EAAAT,EAAApR,SAAgBuX,EAAQxZ,EAAG/D,OAClB6V,IACT,EAAAuB,EAAApR,SAAgB03B,EAAS35B,EAAG/D,2CAMlCgE,KAAKgP,UACLhP,KAAK8K,2CAGkB/K,EAAGzD,OAAO0D,KAAKoV,KAAKrM,cAAc,IAAM/I,KAAKmD,OAAOsN,MAAQ,yBACpErD,4BAjXEkU,4UCLTvhB,0JAAZpG,EAAA,IACAo/B,EAAAp/B,EAAA,GACAg7B,EAAAh7B,EAAA,GACAi7B,EAAAj7B,EAAA,2CAEqB6nB,2KACV,IACC7f,EAAW3B,KAAKsV,QAAhB3T,OADD0zB,EAQHr1B,KAAKmD,OALPuN,EAHK2kB,EAGL3kB,OACArH,EAJKgsB,EAILhsB,UACA6H,EALKmkB,EAKLnkB,aACAP,EANK0kB,EAML1kB,aACAG,EAPKukB,EAOLvkB,MAEI+jB,EAAO70B,KAAKmD,OATX61B,EAqBHh5B,KAAKmD,OAAOwQ,OArBTslB,EAAAD,EAWLllB,SACEjC,EAZGonB,EAYHpnB,KACAkC,EAbGklB,EAaHllB,eACAC,EAdGilB,EAcHjlB,SAEFJ,EAhBKolB,EAgBLplB,MACAslB,EAjBKF,EAiBLE,mBACArlB,EAlBKmlB,EAkBLnlB,aACAK,EAnBK8kB,EAmBL9kB,MACAE,EApBK4kB,EAoBL5kB,YAEI+kB,EAAgB,GAAhBA,EAA2B,GAA3BA,EAAuC,IAAvCA,EAAkD,GACpDyB,EAAiB,EAClB1B,IACD0B,EAAiB,GAEnB,IAAMvB,EAAkBt5B,EAAGzD,OAAO+M,GAE5BwX,EADiB9gB,EAAGzD,OAAO0D,KAAKoV,KAAKrM,cAAc,IAAM/I,KAAKmD,OAAOsN,MAAQ,yBACtD/P,OAAO,OAC9B44B,EAAWD,EAAgB38B,MAAM,SAAS+E,MAAM,GAAI,GAClD03B,EAAeA,EACjBI,EAAYF,EAAgB38B,MAAM,UAAU+E,MAAM,GAAI,GACpD03B,EAAaA,EAAgB,GAC/B0B,EAAWvB,GAAU33B,EAAO5F,OAAS,GACvC++B,EAAiBvB,EACjBG,EAAW,KAAK9rB,QAAQoG,GAGxB2lB,EAAkB,EACnBvlB,IACDulB,GAAmBJ,EAAYnlB,IAAgBzS,EAAO5F,OAAO,IAE/D,IAAM69B,EAAWj4B,EAAOF,MAAM,GAAGgT,IAAI,SAACva,EAAGZ,GACrC,IAAMugC,EAAY,CAChB,CACEv5B,EAAGu6B,EAAYvhC,EAAIshC,EACnBp6B,GAAK+4B,EAAYuB,GAAgB,GAEnC,CACEx6B,EAAGu6B,EAAYvhC,EAAIshC,EACnBp6B,GAAK+4B,EAAYuB,GAAgB,EAAIA,IAGhC,IAANxhC,IACqB,aAAnBya,IACDK,EACK0mB,GAAkCnB,EACnCmB,EAAiBA,EAAiB5gC,EAAE,GAAGyH,EAAOrI,GAAG,GACrDogC,GAAYx/B,EAAE,GAAGyH,EAAOrI,GAAG,GAAI,KAAKsU,QAAQoG,IAExB,aAAnBD,IACDK,EACK0mB,GAAkCnB,EACnCmB,EAAiBvB,EAAYr/B,EAAE,GAAGyH,EAAO,GAAG,GAChD+3B,GAAYx/B,EAAE,GAAGyH,EAAO,GAAG,GAAI,KAAKiM,QAAQoG,KAGhD,IAAIxS,EAAQtH,EAAE,GACd,GAAGI,OAAOuf,KAAK3I,GAAcnV,OAC3B,IAAK,IAAIZ,KAAO+V,EACXA,EAAa/V,KAASjB,EAAE,KACzBsH,EAAQrG,GAId,IAAIoe,EAASrf,EAAE,GAMf,YALsC,IAAzB26B,EAAA,eACiB,IAAzBA,EAAA,cACCryB,MAAMyf,SAAS/nB,EAAE,OACnBqf,GAAS,EAAAob,EAAA/2B,cAAa1D,EAAE,KAErB,CACLC,KAAMD,EAAE,GACRsH,QACAk4B,QAASA,EAAU,IACnBngB,SACAugB,iBACKD,EADL,CAEE,CACEv5B,EAAGu6B,GAAavhC,EAAI,GACpBkH,GAAK+4B,EAAYuB,GAAgB,EAAIA,GAEvC,CACEx6B,EAAGu6B,GAAavhC,EAAI,GACpBkH,GAAK+4B,EAAYuB,GAAgB,QA2K3C,GApKAja,EACGtgB,KAAK,sBAAuB,iBAC5BA,KAAK,UAFR,QAE0B+4B,EAAWH,EAAcA,GAFnD,KAEmEI,EAAYJ,EAAaA,EAAgB,KACzG54B,KAAK,SAAU,QACfA,KAAK,QAAS,QACdG,OAAO,KACPH,KAAK,YAAa,aAAe44B,EAAc,IAAMA,EAAa,KAClEY,UAAU,WACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,WACLH,KAAK,SAAU,SAACrG,GACb,OAAOA,EAAE4/B,OAAOrlB,IAAI,SAAC/Y,GACnB,MAAO,CAACA,EAAE4E,EAAE5E,EAAE8E,GAAGM,KAAK,OAEvBA,KAAK,OAETpE,MAAM,OAAQ,SAACxC,EAAGZ,GACjB,OAAGqX,EAAazW,EAAEsH,OACTmP,EAAazW,EAAEsH,OAEjBkP,EAAOpX,KAEfiH,KAAK,QAAS,SAACrG,GAAQ,OAAOA,EAAEsH,QAChCjB,KAAK,SAAU,WAEjBqT,IAEDiN,EACGkZ,UAAU,QACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPH,KAAK,KAAM,SAACrG,GACX,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAI64B,EAAeyB,EAAe,IAEtDr6B,KAAK,KAAMg5B,EAAYJ,GACvB54B,KAAK,KAAM,SAACrG,GACX,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAI64B,EAAeyB,EAAe,IAEtDr6B,KAAK,KAAM,SAACrG,GAAQ,OAAOA,EAAE4/B,OAAO,GAAGt5B,EAAI24B,IAC3C54B,KAAK,QAAS,eAGjBsgB,EACGngB,OAAO,QACPH,KAAK,KAAM+4B,EAAWH,EAAeyB,EAAe,GACpDr6B,KAAK,KAAMg5B,EAAYJ,GACvB54B,KAAK,KAAMq5B,EAASA,EAAS79B,OAAO,GAAG+9B,OAAO,GAAGx5B,EACpC64B,EAAeyB,EAAe,GAC3Cr6B,KAAK,KAAMq5B,EAASA,EAAS79B,OAAO,GAAG+9B,OAAO,GAAGt5B,EAAI24B,GACrD54B,KAAK,QAAS,gBAIhBqT,GACDiN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAKu6B,EAAU,EAAK1B,IAExC54B,KAAK,IAAKg5B,EAA6B,GAAhBJ,EAAuBA,GAC9C54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,cAAgBA,EAAEsH,QAChD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEC,OACvBJ,KAAK6F,WAAUi7B,GACft6B,KAAK,SAAU,WAIhBqT,GACFiN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAKu6B,EAAU,EAAK1B,IAExC54B,KAAK,IAAK,SAACrG,GACV,OAAGA,EAAE4/B,OAAO,GAAGt5B,GAAMtG,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EACjDq6B,EAAU,EAAKtB,EAAYJ,EAAgB,GAAKA,EAC1CI,EAAYJ,EAAgB,GAAKA,EAEnCj/B,EAAE4/B,OAAO,GAAGt5B,GAAMtG,EAAE4/B,OAAO,GAAGt5B,EAAItG,EAAE4/B,OAAO,GAAGt5B,GAAG,EAC7Cq6B,EAAU,EAAK1B,IAE3B54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,cAAgBA,EAAEsH,QAChD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEC,OACvBJ,KAAK6F,WAAUi7B,GACft6B,KAAK,SAAU,WAIjBsR,IAASgC,GACVgN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAKu6B,EAAU,EAAK1B,IAExC54B,KAAK,IAAKg5B,EAAU,EAAIJ,EAAa,IACrC54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEw/B,UACvBn5B,KAAK,SAAU,WAIjBsT,IAAiBhC,GAClBgP,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAKu6B,EAAU,EAAK1B,IAExC54B,KAAK,IAAKg5B,EAAU,EAAIJ,EAAa,IACrC54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEqf,SACvBhZ,KAAK,SAAU,WAIjBsR,GAAQgC,IAETgN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAKu6B,EAAU,EAAK1B,IAExC54B,KAAK,IAAKg5B,EAAU,EAAIJ,EAAa,IACrC54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,eAAiBA,EAAEsH,QACjD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEw/B,UACvBn5B,KAAK,SAAU,WAGlBsgB,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAKu6B,EAAU,EAAK1B,IAExC54B,KAAK,IAAKg5B,EAAU,EAAGJ,EAAa,GACpC54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEqf,SACvBhZ,KAAK,SAAU,YAGjB2T,EAAM,KAWE+lB,EAAT,SAAyB//B,GACvBggC,EACGx9B,MAAM,UAAW,IACpBy9B,EACGz9B,MAAM,UAAW,IACpB,IAAM09B,EAAY,SAASl7B,KAAKa,EAAGzD,OAAO0D,MAAMO,KAAK,UAAU,GAC/DsgB,EACGkZ,UADH,IACiBK,GACd19B,MAAM,UAAW,IAEb29B,EAAT,SAAwBngC,GACtBggC,EACGx9B,MAAM,UAAW,GACpBy9B,EACGz9B,MAAM,UAAW,IAxBhBw9B,EAAgBrZ,EAAMkZ,UAAU,WACtCG,EACGI,GAAG,YAAaL,GAChBK,GAAG,WAAYD,GAElB,IAAMF,EAAatZ,EAAMkZ,UAAU,QACnCI,EACGG,GAAG,YAAaL,GAChBK,GAAG,WAAYD,GAqBpB,GAAIvpB,GAASA,EAAMC,uBAAwB,CAC3B8P,EAAMkZ,UAAU,QAExBO,GAAG,QAET,SAA2Bh3B,GAAM,IACvBo2B,EAAoBp2B,EAApBo2B,QAASngB,EAAWjW,EAAXiW,OACb1F,GACF,EAAAT,EAAApR,SAAgBuX,EAAQxZ,EAAG/D,OAClB6V,IACT,EAAAuB,EAAApR,SAAgB03B,EAAS35B,EAAG/D,2CAMlCgE,KAAKgP,UACLhP,KAAK8K,2CAGkB/K,EAAGzD,OAAO0D,KAAKoV,KAAKrM,cAAc,IAAM/I,KAAKmD,OAAOsN,MAAQ,yBACpErD,4BA9TEoU,4UCLTzhB,0JAAZpG,EAAA,IACAo/B,EAAAp/B,EAAA,GACAg7B,EAAAh7B,EAAA,GACAi7B,EAAAj7B,EAAA,2CAEqB+nB,2KACV,IACC/f,EAAW3B,KAAKsV,QAAhB3T,OADD0zB,EAQHr1B,KAAKmD,OALPuN,EAHK2kB,EAGL3kB,OACArH,EAJKgsB,EAILhsB,UACA6H,EALKmkB,EAKLnkB,aACAP,EANK0kB,EAML1kB,aACAG,EAPKukB,EAOLvkB,MAEI+jB,EAAO70B,KAAKmD,OATX61B,EAqBHh5B,KAAKmD,OAAOwQ,OArBTslB,EAAAD,EAWLllB,SACEjC,EAZGonB,EAYHpnB,KACAkC,EAbGklB,EAaHllB,eACAC,EAdGilB,EAcHjlB,SAEFJ,EAhBKolB,EAgBLplB,MACAC,EAjBKmlB,EAiBLnlB,aACAM,EAlBK6kB,EAkBL7kB,SACAD,EAnBK8kB,EAmBL9kB,MACAE,EApBK4kB,EAoBL5kB,YAEI+kB,EAAgB,GAAhBA,EAA2B,GAA3BA,EAAuC,IAAvCA,EAAkD,GAClDE,EAAkBt5B,EAAGzD,OAAO+M,GAE5BwX,EADiB9gB,EAAGzD,OAAO0D,KAAKoV,KAAKrM,cAAc,IAAM/I,KAAKmD,OAAOsN,MAAQ,yBACtD/P,OAAO,OAC9B44B,EAAWD,EAAgB38B,MAAM,SAAS+E,MAAM,GAAI,GAClD03B,EAAeA,EACjBI,EAAYF,EAAgB38B,MAAM,UAAU+E,MAAM,GAAI,GACpD03B,EAAaA,EAAgB,GAC/B0B,EAAWvB,GAAU33B,EAAO5F,OAAS,GACrC6+B,EAA6B,GAAZC,EACjBN,EAAaK,EAAe,IAC9BE,EAAiBvB,EACjBG,EAAW,KAAK9rB,QAAQoG,GAGxB2lB,EAAkB,EACnBvlB,IACDulB,GAAmBJ,EAAYnlB,IAAgBzS,EAAO5F,OAAO,IAE/D,IAAM69B,EAAWj4B,EAAOF,MAAM,GAAGgT,IAAI,SAACva,EAAGZ,GACrC,IAAMugC,EAAY,CAChB,CACEv5B,EAAGu6B,EAAYvhC,EAAIshC,EACnBp6B,GAAK+4B,EAAYuB,GAAgB,GAEnC,CACEx6B,EAAGu6B,EAAYvhC,EAAIshC,EACnBp6B,GAAK+4B,EAAYuB,GAAgB,EAAIA,IAGhC,IAANxhC,IACqB,aAAnBya,IACDK,EACK0mB,GAAkCnB,EACnCmB,EAAiBA,EAAiB5gC,EAAE,GAAGyH,EAAOrI,GAAG,GACrDogC,GAAYx/B,EAAE,GAAGyH,EAAOrI,GAAG,GAAI,KAAKsU,QAAQoG,IAExB,aAAnBD,IACDK,EACK0mB,GAAkCnB,EACnCmB,EAAiBvB,EAAYr/B,EAAE,GAAGyH,EAAO,GAAG,GAChD+3B,GAAYx/B,EAAE,GAAGyH,EAAO,GAAG,GAAI,KAAKiM,QAAQoG,KAGhD,IAAIxS,EAAQtH,EAAE,GACd,GAAGI,OAAOuf,KAAK3I,GAAcnV,OAC3B,IAAK,IAAIZ,KAAO+V,EACXA,EAAa/V,KAASjB,EAAE,KACzBsH,EAAQrG,GAId,IAAIoe,EAASrf,EAAE,GAKf,YAJsC,IAAzB26B,EAAA,eAAiE,IAAzBA,EAAA,cAC/CryB,MAAMyf,SAAS/nB,EAAE,OACnBqf,GAAS,EAAAob,EAAA/2B,cAAa1D,EAAE,KAErB,CACLC,KAAMD,EAAE,GACRsH,QACAk4B,QAASA,EAAU,IACnBngB,SACAugB,iBACKD,EADL,CAEE,CACEv5B,EAAGu6B,GAAavhC,EAAI,GACpBkH,GAAK+4B,EAAYuB,GAAgB,EAAIA,GAEvC,CACEx6B,EAAGu6B,GAAavhC,EAAI,GACpBkH,GAAK+4B,EAAYuB,GAAgB,QAOrCN,EAAkBZ,EAASnlB,IAAI,SAACva,EAAGZ,GACrC,MAAO,CACLkI,MAAOtH,EAAEsH,MACTs4B,OAAQ,CACN,CACEx5B,EAAGpG,EAAE4/B,OAAO,GAAGx5B,EACfE,EAAGtG,EAAE4/B,OAAO,GAAGt5B,GAEjB,CACEF,EAAGpG,EAAE4/B,OAAO,GAAGx5B,EACfE,EAAGtG,EAAE4/B,OAAO,GAAGt5B,GAEjB,CACEF,EAAgB,QAAb6T,EACDja,EAAE4/B,OAAO,GAAGx5B,EACZpG,EAAE4/B,OAAO,GAAGx5B,EAAIi6B,EAClB/5B,EAAgB,QAAb2T,EACDja,EAAE4/B,OAAO,GAAGt5B,EACZtG,EAAE4/B,OAAO,GAAGt5B,EAAIo6B,EAAiBrB,EAAU,EACzCA,EAAU,EAAI,EACdr/B,EAAE4/B,OAAO,GAAGt5B,EAAIo6B,GAEtB,CACEt6B,EAAgB,WAAb6T,EACDja,EAAE4/B,OAAO,GAAGx5B,EACZpG,EAAE4/B,OAAO,GAAGx5B,EAAIi6B,EAClB/5B,EAAgB,WAAb2T,EACDja,EAAE4/B,OAAO,GAAGt5B,EACZtG,EAAE4/B,OAAO,GAAGt5B,EAAIo6B,EAAiBrB,EAAU,EACzCA,EAAU,EAAI,EACdr/B,EAAE4/B,OAAO,GAAGt5B,EAAIo6B,OAOxBH,EAAab,EAAS93B,OAAO04B,GAgLnC,GA7KA3Z,EACGtgB,KAAK,sBAAuB,iBAC5BA,KAAK,UAFR,QAE0B+4B,EAAWH,EAAcA,GAFnD,KAEmEI,EAAYJ,EAAaA,EAAgB,KACzG54B,KAAK,SAAU,QACfA,KAAK,QAAS,QACdG,OAAO,KACPH,KAAK,YAAa,aAAe44B,EAAc,IAAMA,EAAa,KAClEY,UAAU,WACVz2B,KAAKm3B,GACLT,QACAt5B,OAAO,WACLH,KAAK,SAAU,SAACrG,GACb,OAAOA,EAAE4/B,OAAOrlB,IAAI,SAAC/Y,GACnB,MAAO,CAACA,EAAE4E,EAAE5E,EAAE8E,GAAGM,KAAK,OAEvBA,KAAK,OAETpE,MAAM,OAAQ,SAACxC,EAAGZ,GACjB,OAAGA,EAAKsgC,EAAS79B,OAAS,EACrB4U,EAAazW,EAAEsH,OACTzB,EAAG26B,IAAI/pB,EAAazW,EAAEsH,QAAQm5B,OAAO,KAEvC56B,EAAG26B,IAAIhqB,EAAOpX,EAAKsgC,EAAS79B,SAAU4+B,OAAO,KAEnDhqB,EAAazW,EAAEsH,OACTmP,EAAazW,EAAEsH,OAEjBkP,EAAOpX,KAEfiH,KAAK,QAAS,SAACrG,GAAQ,OAAOA,EAAEsH,QAChCjB,KAAK,SAAU,WAEjBqT,IAEDiN,EACGkZ,UAAU,QACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPH,KAAK,KAAM,SAACrG,GACX,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAI64B,EAAgC,GAAjByB,IAEvCr6B,KAAK,KAAMg5B,EAAYJ,GACvB54B,KAAK,KAAM,SAACrG,GACX,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAI64B,EAAgC,GAAjByB,IAEvCr6B,KAAK,KAAM,SAACrG,GAAQ,OAAOA,EAAE4/B,OAAO,GAAGt5B,EAAI24B,IAC3C54B,KAAK,QAAS,eAGjBsgB,EACGngB,OAAO,QACPH,KAAK,KAAM+4B,EAAWH,EAAeyB,EAAe,GACpDr6B,KAAK,KAAMg5B,EAAYJ,GACvB54B,KAAK,KAAMq5B,EAASA,EAAS79B,OAAO,GAAG+9B,OAAO,GAAGx5B,EACpC64B,EAAeyB,EAAe,GAC3Cr6B,KAAK,KAAMq5B,EAASA,EAAS79B,OAAO,GAAG+9B,OAAO,GAAGt5B,EAAI24B,GACrD54B,KAAK,QAAS,gBAIhBqT,GACDiN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAI64B,EAA2B,IAAZ0B,IAEvCt6B,KAAK,IAAKg5B,EAA6B,GAAhBJ,EAAuBA,GAC9C54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,cAAgBA,EAAEsH,QAChD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEC,OACvBJ,KAAK6F,WAAUi7B,GACft6B,KAAK,SAAU,WAIhBqT,GACFiN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAI64B,EAA2B,IAAZ0B,IAEvCt6B,KAAK,IAAK,SAACrG,GACV,OAAGA,EAAE4/B,OAAO,GAAGt5B,EAAKq6B,EAAU,EAC9BtB,EAAYJ,EAAgB,GACnBI,EAAYJ,EAAgB,GAAKA,EAEvCj/B,EAAE4/B,OAAO,GAAGt5B,EAAKq6B,EAAU,EAAK3gC,EAAE4/B,OAAO,GAAGt5B,EACtCtG,EAAE4/B,OAAO,GAAGt5B,EAAI,GAAK24B,EAEvBj/B,EAAE4/B,OAAO,GAAGt5B,EAAKq6B,EAAU,EAAK,GAAK1B,IAE7C54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,cAAgBA,EAAEsH,QAChD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEC,OACvBJ,KAAK6F,WAAUi7B,GACft6B,KAAK,SAAU,WAIjBsR,IAASgC,GACVgN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAKu6B,EAAU,IAAO1B,IAE1C54B,KAAK,IAAKg5B,EAAU,EAAIJ,EAAa,IACrC54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEw/B,UACvBn5B,KAAK,SAAU,WAIjBsT,IAAiBhC,GAClBgP,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAKu6B,EAAU,IAAO1B,IAE1C54B,KAAK,IAAKg5B,EAAU,EAAIJ,EAAa,IACrC54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEqf,SACvBhZ,KAAK,SAAU,WAIjBsR,GAAQgC,IAETgN,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAKu6B,EAAU,IAAO1B,IAE1C54B,KAAK,IAAKg5B,EAAU,EAAIJ,EAAa,IACrC54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,eAAiBA,EAAEsH,QACjD3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEw/B,UACvBn5B,KAAK,SAAU,WAGlBsgB,EACGkZ,UAAU,cACVz2B,KAAKs2B,GACLI,QACAt5B,OAAO,QACPhE,MAAM,cAAe,UACrB6D,KAAK,IAAK,SAACrG,GACV,OAAOA,EAAE4/B,OAAO,GAAGx5B,EAAKu6B,EAAU,IAAO1B,IAE1C54B,KAAK,IAAKg5B,EAAU,EAAGJ,EAAa,GACpC54B,KAAK,QAAS,SAACrG,GAAQ,MAAO,aAAeA,EAAEsH,QAC/C3B,KAAK,SAAC3F,GAAQ,OAAOA,EAAEqf,SACvBhZ,KAAK,SAAU,YAIjB2T,EAAM,KAWE+lB,EAAT,SAAyB//B,GACvBggC,EACGx9B,MAAM,UAAW,IACpBy9B,EACGz9B,MAAM,UAAW,IACpB,IAAM09B,EAAY,SAASl7B,KAAKa,EAAGzD,OAAO0D,MAAMO,KAAK,UAAU,GAC/DsgB,EACGkZ,UADH,IACiBK,GACd19B,MAAM,UAAW,IAEb29B,EAAT,SAAwBngC,GACtBggC,EACGx9B,MAAM,UAAW,GACpBy9B,EACGz9B,MAAM,UAAW,IAxBhBw9B,EAAgBrZ,EAAMkZ,UAAU,WACtCG,EACGI,GAAG,YAAaL,GAChBK,GAAG,WAAYD,GAElB,IAAMF,EAAatZ,EAAMkZ,UAAU,QACnCI,EACGG,GAAG,YAAaL,GAChBK,GAAG,WAAYD,GAqBpB,GAAIvpB,GAASA,EAAMC,uBAAwB,CAC3B8P,EAAMkZ,UAAU,QAExBO,GAAG,QAET,SAA2Bh3B,GAAM,IACvBo2B,EAAoBp2B,EAApBo2B,QAASngB,EAAWjW,EAAXiW,OACb1F,GACF,EAAAT,EAAApR,SAAgBuX,EAAQxZ,EAAG/D,OAClB6V,IACT,EAAAuB,EAAApR,SAAgB03B,EAAS35B,EAAG/D,2CAMlCgE,KAAKgP,UACLhP,KAAK8K,2CAGkB/K,EAAGzD,OAAO0D,KAAKoV,KAAKrM,cAAc,IAAM/I,KAAKmD,OAAOsN,MAAQ,yBACpErD,4BA5WEsU,8UCJrB/nB,EAAA,KACA2H,EAAA3H,EAAA,GACAg7B,EAAAh7B,EAAA,OACAA,EAAA,2DAEqBioB,2KACV,IAAA9R,EAAA9P,KAAAq1B,EASHr1B,KAAKmD,OAPPkG,EAFKgsB,EAELhsB,UACA0xB,EAHK1F,EAGL0F,cACA1qB,EAJKglB,EAILhlB,MACAC,EALK+kB,EAKL/kB,UACAC,EANK8kB,EAML9kB,SACA9S,EAPK43B,EAOL53B,QACAqT,EARKukB,EAQLvkB,MAIIiO,EAAU,GAChBA,EAAQ,GAAK,IACb,EAAAzd,EAAA1F,MAAKoE,KAAKsV,QAAQnT,aAAa,GAAI,SAAClI,EAAGX,GACrC,IAAIuI,SACAvI,EAAI,IACNuI,EAAO,IAAIye,KAAKrmB,IAElB8kB,EAAQ,GAAGzlB,GAAKuI,IAElBkd,EAAQ,GAAG,GAAK,KAEhB,EAAAzd,EAAA1F,MAAKoE,KAAKsD,OAAO,GAAI,SAACrJ,EAAGX,GACnBA,EAAI,GACNylB,EAAQle,KAAKiP,EAAKwF,QAAQnT,aAAa7I,MAI3C,IAAM0hC,EAAcD,GAAiBA,EAAcE,UAAYF,EAAcE,SAAS1hB,QACjF,EAGC2hB,GAFcH,GAAiBA,EAAcI,SAAWJ,EAAcI,QAAQ5hB,QAC/E,GACsByhB,EACrBI,EAAmC,IAAfJ,EAAmB,KAAM,EAAArG,EAAA/2B,cAAaQ,KAAKmnB,MAAO2V,EAAQF,EAAc,MAC9FK,EAAa,4BACbC,EAAY,cAEZF,EAAoB,IACtBC,EAAa,0BACbC,EAAY,aAGd,IAAMC,EAAkBjrB,GAAaD,EAAd,mCAA0DA,EAA1D,SAA0E,GAC3FmrB,EAAoBjrB,wCAAiDA,EAAjD,SAAoE,GACxFH,EAAmBlU,SAAS6M,cAAcM,GAChD+G,EAAiByH,UAAjB,+IAIU0jB,EAJV,iBAKUC,EALV,gDAMyCH,EANzC,iBAMoEC,EANpE,YAMyFF,EANzF,mDAOoCC,EAPpC,OAOoD,EAAA1G,EAAA/2B,cAAas9B,GAPjE,sKAcA,IAAMO,EAAYrrB,EAAiBrH,cAAc,aACnCiH,UAAGsU,SAAS,CACxBlC,OAAQqZ,EACRtpB,MAAO,CACLkD,QArDW,CAAC,YAuDdhF,QACAuB,OAAQ,CACNC,MAAM,GAERvO,KAAM,CACJhD,EAAG,IACHye,UACA1b,KAAM,cACNsP,UAAW,CACTC,WAAW,EACXL,SAAS,EACT7I,UAAU,IAGd0I,MAAO,CACL1X,EAAG,EACH2X,MAAO,CACLC,OAAQ,CACN5X,EAAG,EACH6X,SAAS,IAGbjW,OAAQ,CACN5B,EAAG,EACH6X,SAAS,IAGb7H,KAAM,CACJlK,EAAG,CACDqR,MAAM,GAERvR,EAAG,CACDuR,MAAM,IAGVwB,KAAM,CACJ/S,EAAG,CACDuR,MAAM,GAERrR,EAAG,CACDqR,MAAM,IAGVlV,QAAS,CACPM,KAAM,EACNgR,MAAO,EACPlR,IAAK,EACLmR,QAAS,GAEXzQ,YAGF,GAAIqT,GAASA,EAAMC,uBAAwB,CACzC,IAAM2qB,EAAex/B,SAAS6M,cAAc,kBAAkBzL,UAC9DpB,SAAS6M,cAAc,8BACpBxL,iBAAiB,QAAS,SAAAC,GAAA,OAAK,EAAA4V,EAAApR,SAAgB05B,EAAcl+B,uCAKlEwC,KAAKgP,UACLhP,KAAK8K,2CAGG,IACAzB,EAAcrJ,KAAKmD,OAAnBkG,UACiBnN,SAAS6M,cAAcM,GACRN,cAAc,aACvCqE,4BAvIEwU,6uBCNT7hB,0JAAZpG,EAAA,QACAA,EAAA,SACAA,EAAA,mLAEqBkoB,2KACV,IA6BClQ,EACAgqB,EACAp4B,EA/BD8xB,EAKHr1B,KAAKmD,OAHPuN,EAFK2kB,EAEL3kB,OACArH,EAHKgsB,EAGLhsB,UAHKuyB,EAAAvG,EAILzgB,QAAWD,EAJNinB,EAIMjnB,WAAYknB,EAJlBD,EAIkBC,cAJlBlsB,EASH3P,KAAKsV,QAFP3T,EAPKgO,EAOLhO,OACAyB,EARKuM,EAQLvM,KAEI+1B,EACC,GADDA,EAEG,GAFHA,EAGI,GAHJA,EAIE,GAIF2C,EAAmB/7B,EAAGzD,OAAO+M,GAC7B0yB,EAAiB9Z,SAAS6Z,EAAiBp/B,MAAM,SAAU,KAH/C,IAIZs/B,EAAkB/Z,SAAS6Z,EAAiBp/B,MAAM,UAAW,KAHhD,IAIbu/B,EAAiBj8B,KAAKoV,KAAKrM,cAAc,aACzCuwB,EAAWyC,EAAiB5C,EAAeA,EAC3CI,EAAYyC,EAAkB7C,EAAaA,EAE3C+C,EAAS,IAAIC,IACbC,EAAS,IAAID,IAgCbE,GA7BE1qB,EAAa5R,EAAG47B,WAAW,SAC3BA,EAAa57B,EAAG47B,WAAW,SAC3Bp4B,EAAM,GACZ5B,EAAOsG,QAAQ,SAAClC,GACd,GAAkB,YAAd3C,EAAKC,MACP,GAA6B,iBAAlB0C,EAAQ,GAAG,GAAiB,CACrC,IAAMc,EAAM,CACVvG,EAAGyF,EAAQ,GAAG,GACdvF,EAAGuF,EAAQ,GAAG,GACdlL,MAAOkL,EAAQ,GAAG,IAEpBxC,EAAI1C,KAAKgG,QAEN,CACL,IAAMy1B,EAAYhc,KAAKic,MAAMx2B,EAAQ,IAErC,IAAKvD,MAAM85B,GAAY,CACrB,IAAMz1B,EAAM,CACVvG,EAAGqR,EAAW,IAAI2O,KAAKva,EAAQ,KAC/BvF,EAAGm7B,EAAW,IAAIrb,KAAKva,EAAQ,KAC/BlL,MAAOkL,EAAQ,IAEjBxC,EAAI1C,KAAKgG,OAIRtD,GAKT84B,EAAcp0B,QAAQ,SAAC2d,GACrBsW,EAAOtzB,IAAIgd,EAAKtlB,GAChB87B,EAAOxzB,IAAIgd,EAAKplB,KAGlB,IAAMg8B,EAAWH,EAAc,GAAGxhC,MAC5B4hC,EAAWJ,EACdppB,OAAO,SAAClO,EAAKoO,GAAN,OAAgBA,EAAKtY,MAAQkK,EAAMoO,EAAKtY,MAAQkK,GAAMy3B,GAC1DE,EAAWL,EACdppB,OAAO,SAACrO,EAAKuO,GAAN,OAAgBA,EAAKtY,MAAQ+J,EAAMuO,EAAKtY,MAAQ+J,GAAM43B,GAE1DG,EAAW,WACf,IACMC,EAAYlsB,EAAO,GACrBgqB,EAAM36B,EAAG26B,IAFQ,WAMrB,OAHI36B,EAAGoS,MAAMyqB,KACXlC,EAAM36B,EAAG26B,IAAIkC,IAERlC,GAGHmC,EAAgB98B,EAAG+8B,cACtBC,OAAO,CAAC,EAAGh9B,EAAG6E,IAAIy3B,EAAe,SAAAniC,GAAA,OAAKA,EAAEW,UACxCyZ,MAAM,CAAC,EAAG,IAUP0oB,EAAe,SAACniC,GACpB,IAAMoiC,EAAQJ,EAAchiC,GACtB6/B,EAAMiC,IACNO,EAXiB,SAAC/qB,GAAgC,IAAzBgrB,EAAyBz9B,UAAA3D,OAAA,QAAA2F,IAAAhC,UAAA,GAAAA,UAAA,GAApB,CAAC,IAAK,IAAK,KACzCtC,EAAU+U,EAAM,GAEtB,MAAO,CAAC/T,KAAK2oB,OAAQ,EAAI3pB,GAAW+/B,EAAG,GAAO//B,EAAU+U,EAAM,GAAM,IAClE/T,KAAK2oB,OAAQ,EAAI3pB,GAAW+/B,EAAG,GAAO//B,EAAU+U,EAAM,GAAM,IAC5D/T,KAAK2oB,OAAQ,EAAI3pB,GAAW+/B,EAAG,GAAO//B,EAAU+U,EAAM,GAAM,KAM3CirB,CAAiB,CAAC1C,EAAIhgC,EAAGggC,EAAIz5B,EAAGy5B,EAAInd,EAAG0f,IAE1D,MADM9qB,OAAe+qB,EAAW,GAA1B,KAAiCA,EAAW,GAA5C,KAAmDA,EAAW,GAA9D,KAIF3T,EAAMxpB,EAAGzD,OAAO2/B,GACnBv7B,OAAO,OACPH,KAAK,sBAAuB,kBAC5BA,KAAK,UAHI,OAGcw7B,EAHd,IAGgCC,GACzCz7B,KAAK,SAAU,QACfA,KAAK,QAAS,QACdG,OAAO,KACPH,KACC,YARQ,aASK44B,EATL,IASoBA,EATpB,KAYZ,GAAIxkB,EAAY,CAES5U,EAAGzD,OAAO+M,GAC9B3I,OAAO,SACPH,KAAK,OAAQ,SACbA,KAAK,QAAS,uBAaC,IAAI88B,UAAU,uBAAwB,CACtD3zB,UAAU,EACV3E,IAAK03B,EACL73B,IAAK83B,EACL7hC,MAAO,CAAC4hC,EAAUC,GAClBruB,SAAU,SAAA/K,GAAA,OAhBe,SAACA,GAC1B,IAAM+I,EAAQkd,EAAIwQ,UAAU,QADOuD,EAAArG,EAEhB3zB,EAFgB,GAE5ByB,EAF4Bu4B,EAAA,GAEvB14B,EAFuB04B,EAAA,GAInCjxB,EAAMzQ,KAAK,SAAC1B,EAAGZ,EAAGmS,GAChB1L,EAAGzD,OAAOmP,EAAMnS,IACboD,MAAM,aAAc,kBAAQxC,EAAEW,MAAQ+J,GAAO1K,EAAEW,MAAQkK,EAAO,SAAW,cAU5Dw4B,CAAmBj6B,MArBvC,IAuBMk6B,EAAoBn0B,EAAU9C,UAAV,IAA0B8C,EAAU9C,UAAUX,QAAQ,MAAO,KAASyD,EAC1Fo0B,eACFD,EADE,kCAEFA,EAFE,iCAGFA,EAHE,2CAIkBb,IAJlB,yBAMFa,EANE,0DAOcb,IAPd,iDASFa,EATE,iDAUcb,IAVd,uBAeAjgC,EAAQR,SAASC,cAAc,SACrCO,EAAMmb,UAAY4lB,EAGlB,IAAMC,EAAYxhC,SAAS6M,cAAc,UACzC20B,EAAUv3B,WAAWO,aAAahK,EAAOghC,GAG3C,IAGMC,EAAoB,SAACnT,EAAMoT,GAAP,OAAqBx/B,KAAK2oB,MAAM6W,EAAYpT,GAAQ,GACxEqT,EAAQ99B,EAAG+9B,YACdxpB,MAAM,CAAC,EAAGglB,IACVyD,OAFW,GAAAj7B,OAAAoE,EAEAg2B,KACXv/B,QAAQ,KAEX4sB,EAAI7oB,OAAO,KACRhE,MAAM,YAAa,IACnB6D,KAAK,YAFR,gBAEqCg5B,EAFrC,KAGGx/B,KAAKgG,EAAGg+B,WAAWF,GAAOG,SAAS,IACnCjE,UAAU,QACVx5B,KAAK,KAAM,OACXsC,OAAO,SAAC3I,EAAGZ,GAAJ,OAAUA,EAAIqkC,EAfL,EAemCzB,EAAO1wB,QAC1D9O,MAAM,UAAW,QAEpB,IAAMuhC,EAAQl+B,EAAG+9B,YACdxpB,MAAM,CAACilB,EAAW,IAClBwD,OAAO,GAAAj7B,OAAAoE,EAAIk2B,IAAQr5B,QACnBpG,QAAQ,KAEX4sB,EAAI7oB,OAAO,KACRhE,MAAM,YAAa,IACnB3C,KAAKgG,EAAGm+B,SAASD,GAAOD,SAAS,IACjCjE,UAAU,QACVl3B,OAAO,SAAC3I,EAAGZ,GAAJ,OAAUA,EAAIqkC,EA1BL,GA0BmCvB,EAAO5wB,QAC1D9O,MAAM,UAAW,QAEpB,IAAMyhC,EAAep+B,EAAGzD,OAAO+M,GAC5B3I,OAAO,OACPH,KAAK,QAAS,wBACd7D,MAAM,UAAW,GACjBA,MAAM,mBAAoB,SAC1BA,MAAM,SALY,aAKWigC,IAAW3Q,YACxCtvB,MAAM,YAAa,QACnBA,MAAM,UAAW,WACjBA,MAAM,aAAc,+BACpBA,MAAM,UAAW,QACjBA,MAAM,WAAY,SAuDrB6sB,EAAIwQ,YACDz2B,KAAK+4B,EAAe,SAAAniC,GAAA,OAAQA,EAAEoG,EAAV,IAAepG,EAAEsG,IACrCw5B,QACAt5B,OAAO,QACPH,KAAK,IAAK,SAAArG,GAAA,OAAK2jC,EAAM3jC,EAAEoG,KACvBC,KAAK,IAAK,SAAArG,GAAA,OAAK+jC,EAAM/jC,EAAEsG,KACvBD,KAAK,QAASs9B,EAAMO,aACpB79B,KAAK,SAAU09B,EAAMG,aACrB1hC,MAAM,OAAQ,SAAAxC,GAAA,OAAK8iC,EAAa9iC,EAAEW,SAClC6B,MAAM,SAAU,WAChB49B,GAAG,YA/DkB,WACtBv6B,EAAGzD,OAAOyD,EAAG/D,MAAMyD,QAChB4+B,QACA3hC,MAAM,aAAc,4BACpBA,MAAM,UAHT,aAGiCigC,KAC9BjgC,MAAM,YAAa,wBAEtByhC,EACGzhC,MAAM,UAAW,GACjBA,MAAM,UAAW,WAuDnB49B,GAAG,YApDkB,SAACpgC,GACvB,IAAIokC,6GAG+BpkC,EAAEW,MAHjC,yBAKCghC,IACHyC,4FAGUpkC,EAAEoG,EAHZ,8GAOUpG,EAAEsG,EAPZ,iCASE89B,EATF,cAYFH,EACGh/B,KADH,4DAGQm/B,EAHR,kCAMG5hC,MAAM,OAAWqD,EAAG/D,MAAMuiC,QAAU,GANvC,MAOG7hC,MAAM,MAAUqD,EAAG/D,MAAMwiC,QAAU,GAPtC,QAkCClE,GAAG,aAxBmB,WACvBv6B,EAAGzD,OAAOyD,EAAG/D,MAAMyD,QAChB/C,MAAM,UAAW,QACjBA,MAAM,YAAa,QAEtByhC,EACGzhC,MAAM,UAAW,GACjBA,MAAM,UAAW,UAkBnB49B,GAAG,QAfc,SAAApgC,GAAA,OAAK,EAAAkZ,EAAApR,SAAgB9H,EAAEW,0CAkB3CmF,KAAKgP,UACLhP,KAAK8K,2CAGkB9K,KAAKoV,KAAKrM,cAAc,aAChCqE,4BAvREyU,i5BCJT9hB,0JAAZpG,EAAA,QACAA,EAAA,KACAg7B,EAAAh7B,EAAA,OACAA,EAAA,2DAEqBmoB,2KACV,IACCngB,EAAW3B,KAAKsV,QAAhB3T,OADD0zB,EAYHr1B,KAAKmD,OATPuN,EAHK2kB,EAGL3kB,OACArH,EAJKgsB,EAILhsB,UACAyH,EALKukB,EAKLvkB,MACAT,EANKglB,EAMLhlB,MANKouB,EAAApJ,EAOL7gB,WACEC,EARGgqB,EAQHhqB,IARGiqB,EAAAD,EASH/pB,QAAW7C,EATR6sB,EASQ7sB,KAAMrG,EATdkzB,EASclzB,KAAM2G,EATpBusB,EASoBvsB,MACvBwC,EAVG8pB,EAUH9pB,WAGEkgB,EAAO70B,KAAKmD,OACZw7B,EAAsB5+B,EAAGzD,OAAO+M,GAChC4yB,EAAiBl8B,EAAGzD,OACxB0D,KAAKoV,KAAKrM,cAAV,IAA4B/I,KAAKmD,OAAOsN,MAAxC,yBAEI3Q,EAAQ/B,OAAO4gC,EAAoBjiC,MAAM,SAAS+E,MAAM,GAAI,IAC5DqW,EAAS/Z,OAAO4gC,EAAoBjiC,MAAM,UAAU+E,MAAM,GAAI,IAChEm9B,EAAgB,EAChBvuB,IAAOuuB,GAAiB,IACxBjqB,IAAYiqB,GAAiB,IACjC,IAAM/d,EAAQob,EACXv7B,OAAO,OACPH,KAAK,QAAST,GACdS,KAAK,SAAUuX,EAAS8mB,GAErBC,EAAal9B,EAAOF,MAAM,GAAGgT,IAAI,SAAAW,GAAA,OAAMA,EAAG,KAC5C0pB,EAAS/+B,EAAGgF,IAAI85B,GACdE,EAASh/B,EAAG6E,IAAIi6B,GACnBC,IAAWC,IAAQD,EAAS,GAC/B,IAAME,EAAaj/B,EAAGk/B,IAAIvuB,EAAO,IAAIwuB,SAAS,GAC9CF,EAAWnlC,EAAI,IACf,IAAMslC,EAAYzuB,EAAO,GACnB0uB,EAAOr/B,EACV+8B,cACAC,OAAO,MAAYr7B,IAAXo9B,EAAuB,EAAIA,OAAmBp9B,IAAXq9B,EAAuB,EAAIA,IACtEzqB,MAAM,CAAC0qB,EAAYG,IAEtBp/B,EAAGs/B,KAAH,6DAC+D5qB,EAD/D,SAEEvN,KAAK,SAAA5D,GACL,IAAMg8B,EAAOv/B,EACVu/B,OACAC,YAAY,CAAC,EAAG,IAChBC,gBAAgB,CAAC,CAAC,EAAG,GAAI,CAAC1/B,EAAOgY,EAAS,MAC1CwiB,GAAG,OA4MN,WACEzZ,EACGkZ,UADH,IACiB0F,GACdl/B,KAAK,YAAaR,EAAG/D,MAAM0jC,aA7M5BC,SACJ,OAAQlrB,GACN,IAAK,QACHkrB,EAAa5/B,EAAG6/B,cAAcC,QAAQ,CAAC//B,EAAOgY,EAAS,IAAKxU,GAC5D,MACF,IAAK,KACHq8B,EAAa5/B,EACV+/B,eACAC,MAAMjgC,GACN+/B,QAAQ,CAAC//B,EAAOgY,EAAS,IAAKxU,GACjC,MAEF,QACEq8B,EAAa5/B,EACV6/B,cACAG,MAAMjgC,GACN+/B,QAAQ,CAAC//B,EAAOgY,EAAS,IAAKxU,GAIrC,IAAM08B,EAAOjgC,EAAGkgC,UAAUN,WAAWA,GAE/BO,EAAS58B,EAAK68B,SAAS1rB,IAAI,SAAAW,GAC/B,IAAMgrB,EAASz+B,EAAOkB,OAAO,SAAA3I,GAAA,OAAKA,EAAE,KAAOkb,EAAGirB,WAAWlmC,OACzD,OAAIimC,EAAO,GACTvrB,EAAA,GACKO,EADL,CAEEirB,gBAAiBjrB,EAAGirB,WAApB,CAAgC9mB,OAAQ6mB,EAAO,GAAG,OAEtDvrB,EAAA,GACKO,EADL,CAEEirB,gBAAiBjrB,EAAGirB,WAApB,CAAgC9mB,OAAQ,QAI5C,GAAI5E,EAAY,CAcdsnB,EACGv/B,MAAM,UAAW,QACjBA,MAAM,iBAAkB,UACxBA,MAAM,kBAAmB,UAELu/B,EACpBv7B,OAAO,OACPhE,MAAM,QAAS,OACfA,MAAM,SAAU,QACJgE,OAAO,SAASH,KAAK,KAAM,eAExB,IAAI88B,UAAU,eAAgB,CAC9Ch6B,KAAM,SACN4F,UAAU,EACVlE,IAAK,EACLH,IAAKm6B,EACL1wB,SAAU,SAAA/K,GAAA,OA7Be,SAAAA,GACzB,IAAM8R,EAAKyL,EAAMkZ,UAAN,IAAoB0F,GADEnC,EAAArG,EAEd3zB,EAFc,GAE1ByB,EAF0Bu4B,EAAA,GAErB14B,EAFqB04B,EAAA,GAIjCloB,EAAGxZ,KAAK,SAAC1B,EAAGZ,EAAGmS,GACb1L,EAAGzD,OAAOmP,EAAMnS,IAAIoD,MAAM,aAAc,kBACtCxC,EAAEmmC,WAAW9mB,OAAS3U,GAAO1K,EAAEmmC,WAAW9mB,OAASxU,EAC/C,SACA,cAqBUw4B,CAAmBj6B,MALvC,IAQMk6B,EAAoBn0B,EAAU9C,UAAV,IAA0B8C,EAAU9C,UAAUX,QAAQ,MAAO,KAASyD,EAC1Fo0B,eACJD,EADI,kCAEJA,EAFI,iCAGJA,EAHI,2CAIgB9sB,EAAO,GAJvB,yBAMJ8sB,EANI,0DAOY9sB,EAAO,GAPnB,iDASJ8sB,EATI,iDAUY9sB,EAAO,GAVnB,uBAeAhU,EAAQR,SAASC,cAAc,SACrCO,EAAMmb,UAAY4lB,EAGlB,IAAMC,EAAYxhC,SAAS6M,cAAc,UACzC20B,EAAUv3B,WAAWO,aAAahK,EAAOghC,GAG3C,IAAM+B,EAAsB,UAARhrB,EAAkB,UAAY,QAElDoM,EACGkZ,UAAU,QACVz2B,KAAK48B,GACLlG,QACAt5B,OAAO,QACPH,KAAK,IAAKy/B,GACVz/B,KAAK,QAASk/B,GACdl/B,KACC,KACA,SAAArG,GAAA,SACKA,EAAEmmC,WAAWlmC,KACbqE,MAAM,KACNsC,KAAK,KACLtC,MAAM,KACNsC,KAAK,MAEXpE,MAAM,OAAQ,SAAAxC,GAAA,OAAKklC,EAAKllC,EAAEmmC,WAAW9mB,UACrChZ,KAAK,SAAU,WACf+5B,GAAG,YAsBN,SAAyBpgC,GACvB2mB,EACGvkB,OADH,IAEQpC,EAAEmmC,WAAWlmC,KACdqE,MAAM,KACNsC,KAAK,KACLtC,MAAM,KACNsC,KAAK,KAETpE,MAAM,OAAQ,SAAAxC,GAAA,OAAKklC,EAAK,IAAML,KAC9BriC,MAAM,eAAgB,IAAM8O,GAE/B/N,EAAQf,MAAM,UAAW,GAAGA,MAAM,UAAW,WAjC5C49B,GAAG,YAoCN,SAAyBpgC,GACvB,IAAIqf,EAASrf,EAAEmmC,WAAW9mB,YAES,IAAzBsb,EAAA,eACmB,IAAzBA,EAAA,cACDryB,MAAMyf,SAAS/nB,EAAEmmC,WAAW9mB,WAE7BA,GAAS,EAAAob,EAAA/2B,cAAa1D,EAAEmmC,WAAW9mB,SAErC9b,EACG0B,KADH,2FAKwBjF,EAAEmmC,WAAWlmC,KALrC,yGAQ0Bof,EAR1B,0DAaG7c,MAAM,OAAWqD,EAAG/D,MAAMuiC,QAAU,GAbvC,MAcG7hC,MAAM,MAAUqD,EAAG/D,MAAMwiC,QAAU,GAdtC,QA5CClE,GAAG,WA4DN,SAAwBpgC,GACtB2mB,EACGvkB,OADH,IAEQpC,EAAEmmC,WAAWlmC,KACdqE,MAAM,KACNsC,KAAK,KACLtC,MAAM,KACNsC,KAAK,KAETpE,MAAM,OAAQ,SAAAxC,GAAA,OAAKklC,EAAKllC,EAAEmmC,WAAW9mB,UACrC7c,MAAM,eAAgB8O,GAEzB/N,EAAQf,MAAM,UAAW,GAAGA,MAAM,UAAW,UArE3CmV,GACFgP,EACGkZ,UADH,IACiB0F,GACd/iC,MAAM,SAAUyV,GAChBzV,MAAM,eAAgB8O,GAI3B,IAAM/N,EAAUsC,EACbzD,OAAO,aACPoE,OAAO,OACPhE,MAAM,UAAW,GACjB6D,KAAK,QAAS,wBACd7D,MAAM,UAAW,QACjBA,MAAM,WAAY,SA2DrB,GAAIoU,GAASA,EAAMC,uBAAwB,CAC3B8P,EAAMkZ,UAAN,IAAoB0F,GAE5BnF,GAAG,QAET,SAA2Bh3B,GAAM,IAEfiW,EACZjW,EADF+8B,WAAc9mB,QAEhB,EAAAnG,EAAApR,SAAgBuX,EAAQxZ,EAAG/D,SAQ/B6kB,EAAM9mB,KAAKulC,GACXze,EAAM9mB,KAAKulC,GAAMhF,GAAG,iBAAkB,yCAIxCt6B,KAAKgP,UACLhP,KAAK8K,2CAGkB/K,EAAGzD,OACxB0D,KAAKoV,KAAKrM,cAAV,IAA4B/I,KAAKmD,OAAOsN,MAAxC,yBAEarD,4BA7QE0U,2FCyBN,WAGP,IAAAhc,EAAApG,UAAA3D,OAAA,QAAA2F,IAAAhC,UAAA,GAAAA,UAAA,GAAJ,GAFFqG,EAEMD,EAFNC,QACAzC,EACMwC,EADNxC,KAEMg9B,EAAWpkC,SAASC,cAAc,MACxCmkC,EAAS33B,UAAY,8BAEjBrO,OAAOuf,KAAKvW,GAAMvH,OACpBzB,OAAOuf,KAAKvW,GAAM2E,QAAQ,SAAC2d,GACzB,IAAM2a,EAAKrkC,SAASC,cAAc,MAClCokC,EAAGjjC,UAAYsoB,EAAKhgB,QAAQ,KAAM,KAClC26B,EAAGhjC,iBAAiB,QAAS,SAAAC,GAAA,OAAKgjC,EAAsBhjC,KAExD,IAAMijC,EAAKvkC,SAASC,cAAc,MAClCskC,EAAGnjC,UAAYgG,EAAKsiB,GACpB6a,EAAGljC,iBAAiB,QAAS,SAAAC,GAAA,OAAKgjC,EAAsBhjC,KAExD8iC,EAAS5/B,OAAO6/B,GAChBD,EAAS5/B,OAAO+/B,KAGlBH,EAAShjC,UAAY,kCAGvByI,EAAQrF,OAAO4/B,IAtDjB,MAAA1L,EAAAj7B,EAAA,uCAEA,SAAS+mC,EAAuB36B,GAA0C,IAAjCQ,EAAiC7G,UAAA3D,OAAA,QAAA2F,IAAAhC,UAAA,GAAAA,UAAA,GAArB,SAAUslB,EAAWtlB,UAAA3D,OAAA,QAAA2F,IAAAhC,UAAA,GAAAA,UAAA,GAAN,IAClE/B,WAAW,WACToI,EAAQ4C,UAAUyE,OAAO7G,IACxBye,GAGL,SAASwb,EAAsBxkC,GAAO,IAC5ByD,EAAiCzD,EAAjCyD,OAAkBgY,EAAezb,EAAzByD,OAAUgY,SAEtB5c,SACa,OAAb4c,IACF5c,EAAQ4E,EAAOnC,UACVmC,EAAOkJ,UAAU2D,SAAS,YAC7B7M,EAAOkJ,UAAUC,IAAI,UACrB83B,EAAuBjhC,KAGV,OAAbgY,IACF5c,EAAQ4E,EAAOkH,YAAYrJ,UACtBmC,EAAOkH,YAAYgC,UAAU2D,SAAS,YACzC7M,EAAOkH,YAAYgC,UAAUC,IAAI,UACjC83B,EAAuBjhC,EAAOkH,gBAIlC,EAAAyM,EAAApR,SAAgBnH,mFC3BlB,QAAAlB,EAAA,SACAA,EAAA,SACAA,EAAA,kEAEe,CACbgnC,wBACAC,iBACAC,4GCPc,CACdnwB,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,qGCfY,CACdA,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,qGCrBY,CACdA,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA","file":"keen-dataviz.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"d3\"), require(\"c3\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"d3\", \"c3\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"d3\"), require(\"c3\")) : factory(root[\"d3\"], root[\"c3\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__10__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 20);\n","export function each(o, cb, s) {\n var n;\n if (!o) {\n return 0;\n }\n s = !s ? o : s;\n if (o instanceof Array) {\n // Indexed arrays, needed for Safari\n for (n = 0; n < o.length; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n // Hashtables\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false){\n return 0;\n }\n }\n }\n }\n return 1;\n}\n","function stickTooltip(event, tooltip) {\n tooltip.style.opacity = 0;\n tooltip.style.top = `${event.pageY}px`;\n tooltip.style.left = `${event.pageX + 10}px`;\n}\n\nexport default function copyToClipboard(value, event) {\n const placeholder = document.createElement('input');\n placeholder.value = value;\n document.body.appendChild(placeholder);\n placeholder.select();\n document.execCommand('copy');\n document.body.removeChild(placeholder);\n\n if (event) {\n const notification = document.createElement('div');\n notification.style.padding = '5px 10px';\n notification.style.backgroundColor = '#ffffff';\n notification.style.fontSize = '12px';\n notification.style.position = 'absolute';\n notification.style.top = `${event.pageY}px`;\n notification.style.left = `${event.pageX + 10}px`;\n notification.style.zIndex = '999';\n notification.style.opacity = 1;\n notification.style.transition = 'opacity 1s ease';\n notification.innerText = 'copied!';\n\n document.body.appendChild(notification);\n document.addEventListener('mousemove', e => stickTooltip(e, notification));\n\n setTimeout(() => {\n notification.style.opacity = 1;\n document.body.removeChild(notification);\n }, 1000);\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","export function prettyNumber(input) {\n // If it has 3 or fewer sig figs already, just return the number.\n var input = Number(input),\n sciNo = input.toPrecision(3),\n prefix = '',\n suffixes = ['', 'k', 'M', 'B', 'T'];\n\n if (Number(sciNo) == input && String(input).length <= 4) {\n return String(input);\n }\n\n if (Math.abs(input) >= 1000000000000000) {\n return sciNo;\n }\n\n if (input >= 1 || input <= -1) {\n if (input < 0){\n //Pull off the negative side and stash that.\n input = -input;\n prefix = '-';\n }\n return prefix + recurse(input, 0);\n }\n else {\n return input.toPrecision(3);\n }\n\n function recurse(input, iteration) {\n var input = String(input);\n var split = input.split('.');\n // If there's a dot\n if (split.length > 1) {\n // Keep the left hand side only\n input = split[0];\n var rhs = split[1];\n // If the left-hand side is too short, pad until it has 3 digits\n if (input.length == 2 && rhs.length > 0) {\n // Pad with right-hand side if possible\n if (rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n else if (input.length == 1 && rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n // Pad with right-hand side if possible\n if (rhs.length > 1) {\n input += rhs.charAt(1);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n }\n var numNumerals = input.length;\n // if it has a period, then numNumerals is 1 smaller than the string length:\n if (input.split('.').length > 1) {\n numNumerals--;\n }\n if (numNumerals <= 3) {\n return String(input) + suffixes[iteration];\n }\n else {\n return recurse(Number(input) / 1000, iteration + 1);\n }\n }\n}\n","const matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nexport function escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n for (var prop in arguments[i]){\n target[prop] = arguments[i][prop];\n }\n }\n return target;\n}\n","import * as d3 from 'd3';\n\nexport function textWrap(text, width) {\n text.each(function () {\n let text = d3.select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.1, // ems\n x = text.attr(\"x\"),\n y = text.attr(\"y\"),\n dy = 0, //parseFloat(text.attr(\"dy\")),\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\");\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n .text(word);\n }\n }\n });\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import createNullList from '../utils/create-null-list';\nimport { each } from '../../utils/each';\n\nexport function appendColumn(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n self.matrix[0].push(label);\n each(self.matrix, function(row, i) {\n let cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].push(cell);\n }\n });\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat(createNullList(self.matrix.length - 1 - input.length));\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String(self.matrix.length));\n }\n });\n }\n\n self.matrix[0].push(label);\n each(input, function(value, i){\n self.matrix[i+1][self.matrix[0].length-1] = value;\n });\n\n }\n\n return self;\n}\n\nexport function appendRow(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n const newRow = [];\n\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i){\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.push(newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length));\n }\n });\n }\n\n self.matrix.push(newRow.concat(input));\n }\n\n return self;\n}\n","export default function (len) {\n const list = [];\n for (let i = 0; i < len; i++) {\n list.push(null);\n }\n return list;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","export function testObject(input) {\n if (input !== null && typeof input.getTime === 'function' && !isNaN(input.getTime())) {\n return true;\n }\n return false;\n}\n\nexport function testString(input) {\n const ISO_8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n return ISO_8601.test(input);\n}\n\nexport default function (input) {\n if (typeof input === 'object') {\n return testObject(input);\n } else if (typeof input === 'string') {\n return testString(input);\n }\n return false;\n}\n","// Modifiers\nimport * as append from './modifiers/append';\nimport * as del from './modifiers/delete';\nimport * as filter from './modifiers/filter';\nimport * as insert from './modifiers/insert';\nimport * as select from './modifiers/select';\nimport * as sort from './modifiers/sort';\nimport * as update from './modifiers/update';\n\n// Utils\nimport analyses from './utils/analyses';\nimport { extend } from '../utils/extend';\nimport parsers from './utils/parsers';\n\nexport const Dataset = function (config = {}) {\n if (this instanceof Dataset === false) {\n return new Dataset(config);\n }\n\n this.matrix = [\n ['Index']\n ];\n this.meta = {\n type: undefined\n };\n this.config = config;\n}\n\nDataset.prototype.data = function (arr) {\n if (!arguments.length) return this.matrix;\n this.matrix = (arr instanceof Array ? arr : null);\n return this;\n};\n\nDataset.prototype.set = function (coords, value) {\n if (arguments.length < 2 || coords.length < 2) {\n throw Error('Incorrect arguments provided for #set method');\n }\n\n var colIndex = 'number' === typeof coords[0] ? coords[0] : this.matrix[0].indexOf(coords[0]),\n rowIndex = 'number' === typeof coords[1] ? coords[1] : select.selectColumn.call(this, 0).indexOf(coords[1]);\n\n var colResult = select.selectColumn.call(this, coords[0]),\n rowResult = select.selectRow.call(this, coords[1]);\n\n // Column doesn't exist, create and reset colIndex\n if (colResult.length < 1) {\n append.appendColumn.call(this, String(coords[0]));\n colIndex = this.matrix[0].length - 1;\n }\n\n // Row doesn't exist, create and reset rowIndex\n if (rowResult.length < 1) {\n append.appendRow.call(this, String(coords[1]));\n rowIndex = this.matrix.length - 1;\n }\n\n // Set provided value\n this.matrix[ rowIndex ][ colIndex ] = value;\n return this;\n};\n\nDataset.prototype.type = function(str){\n if (!arguments.length) return this.meta['type'];\n this.meta['type'] = (str ? String(str) : undefined);\n return this;\n};\n\nextend(Dataset.prototype, append);\nextend(Dataset.prototype, del);\nextend(Dataset.prototype, filter);\nextend(Dataset.prototype, insert);\nextend(Dataset.prototype, select);\nextend(Dataset.prototype, sort);\nextend(Dataset.prototype, update);\nextend(Dataset.prototype, analyses);\nDataset.parser = parsers(Dataset);\n\nexport default Dataset;\n","import { each } from '../../utils/each';\nimport { extend } from '../../utils/extend';\n\nfunction average(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0,\n avg = null;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum / set.length;\n}\n\nfunction maximum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.max.apply(Math, nums);\n}\n\nfunction minimum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.min.apply(Math, nums);\n}\n\nfunction sum(arr, start, end){\n // Copy set with given range\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum;\n}\n\nconst getColumnAverage = function (arr) {\n return average(arr, 1);\n};\nconst getRowAverage = getColumnAverage;\n\nconst getColumnSum = function (arr) {\n return sum(arr, 1);\n};\nconst getRowSum = getColumnSum;\n\nconst getColumnMaximum = function (arr) {\n return maximum(arr, 1);\n};\nconst getRowMaximum = getColumnMaximum;\n\nconst getColumnMinimum = function (arr) {\n return minimum(arr, 1);\n};\nconst getRowMinimum = getColumnMinimum;\n\nconst getColumnLabel = function (arr) {\n return arr[0];\n};\nconst getRowIndex = getColumnLabel;\n\nexport default {\n average,\n maximum,\n minimum,\n sum,\n getColumnAverage,\n getRowAverage,\n getColumnSum,\n getRowSum,\n getColumnMaximum,\n getRowMaximum,\n getColumnMinimum,\n getRowMinimum,\n getColumnLabel,\n getRowIndex,\n};\n","/**\n * Strip html tags from string\n *\n * @param {string} string The string to strip\n * @return {string}\n * @public\n */\n\nexport function stripHtmlTags(inputString) {\n if (typeof inputString !== 'string') {\n return inputString;\n }\n return inputString.replace(/(<([^>]+)>)/ig, '');\n}\n","import { each } from './each';\n\nexport function extendDeep(target) {\n for (var i = 1; i < arguments.length; i++) {\n each(arguments[i], function(prop, key){\n if (( typeof target[key] !== 'undefined' && typeof prop !== 'undefined' ) &&\n ( typeof target[key] === 'object' && typeof prop === 'object' ) &&\n ( target[key] !== null && prop !== null )) {\n extendDeep(target[key], prop);\n }\n else {\n target[key] = prop;\n }\n });\n }\n return target;\n}\n","import downloadResults from './download-results';\n\nexport default function renderDownloadButton({\n element,\n label = 'Download',\n type = 'json',\n data,\n} = {}) {\n const btnClass = 'keen-dataviz-button';\n const isBtnRendered = [...element.parentNode.children]\n .find(child => child.className === btnClass);\n if (isBtnRendered) return;\n\n const button = document.createElement('button');\n button.innerText = label;\n button.className = btnClass;\n button.addEventListener('click', event => downloadResults({ event, type, data}));\n element.parentNode.insertBefore(button, element.nextSibling);\n};","import domtoimage from 'dom-to-image';\nimport { saveAs } from 'file-saver';\n\nexport default function exportImage(obj) {\n const { node, quality, bgcolor } = obj;\n if (quality) {\n if (quality < 0 || quality > 1) throw Error('Please provide image quality between 0 and 1');\n domtoimage.toBlob(node, { quality, bgcolor })\n .then((blob) => {\n saveAs(blob, 'chart.jpeg');\n });\n }\n\n if (!quality) {\n domtoimage.toBlob(node)\n .then((blob) => {\n saveAs(blob, 'chart.png');\n });\n }\n}\n","function generateCsvContent(data) {\n let csvContent = '';\n\n data.forEach((row, i) => {\n row.forEach((cell, j) => {\n csvContent += String(cell).replace(/,/g, '');\n if (row.length > j + 1) {\n csvContent += ',';\n }\n });\n if (data.length > i + 1) {\n csvContent += '\\n';\n }\n });\n return `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n}\n\nexport default function exportData(obj) {\n const { type, data } = obj;\n const supportedFormats = ['json', 'csv'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = supportedFormats[0];\n let content = '';\n\n if (format === 'json') {\n content = `data:text/json;charset=utf-8, ${encodeURIComponent(JSON.stringify(data))}`;\n }\n\n if (format === 'csv') {\n content = generateCsvContent(data);\n fileFormat = format;\n }\n\n const htmlElement = document.createElement('a');\n htmlElement.setAttribute('href', content);\n htmlElement.setAttribute('download', `${fileName}.${fileFormat}`);\n document.body.appendChild(htmlElement);\n htmlElement.click();\n document.body.removeChild(htmlElement);\n}\n","/*!\n *\n * Rangeable\n * Copyright (c) 2018 Karl Saunders (mobius1(at)gmx(dot)com)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.1.6\n *\n */\n(function(i,j){\"object\"==typeof exports?module.exports=j(\"Rangeable\"):\"function\"==typeof define&&define.amd?define([],j):i.Rangeable=j(\"Rangeable\")})(\"undefined\"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&\"function\"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=[\"ruler\"],\"string\"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:\"single\",tooltips:\"always\",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:\"rangeable-input\",container:\"rangeable-container\",vertical:\"rangeable-vertical\",progress:\"rangeable-progress\",handle:\"rangeable-handle\",track:\"rangeable-track\",multiple:\"rangeable-multiple\",disabled:\"rangeable-disabled\",tooltips:\"rangeable-tooltips\",tooltip:\"rangeable-tooltip\",visible:\"rangeable-tooltips--visible\"}},t),this.mouseAxis={x:\"clientX\",y:\"clientY\"},this.trackSize={x:\"width\",y:\"height\"},this.trackPos={x:\"left\",y:\"top\"},this.lastPos=0,this.double=\"double\"===this.config.type||Array.isArray(this.config.value),this.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version=\"0.1.6\",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?\"y\":\"x\",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i(\"div\",u.container),w=i(\"div\",u.track),x=i(\"div\",u.progress),y=i(\"div\",u.handle),z=i(\"div\",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i(\"div\",u.handle),i(\"div\",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i(\"div\",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+\"px\"),t.tooltips&&(v.classList.add(u.tooltips),\"string\"==typeof t.tooltips&&\"always\"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i(\"div\",\"rangeable-buffers\");this.input.values.forEach(function(C,D){var E=i(\"div\",\"rangeable-buffer\");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i(\"div\",\"rangeable-buffer\"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return\"mousedown\"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add(\"dragging\"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add(\"active\"),this.setValueFromPosition(s),this.touch?(document.addEventListener(\"touchmove\",this.events.move,!1),document.addEventListener(\"touchend\",this.events.stop,!1),document.addEventListener(\"touchcancel\",this.events.stop,!1)):(document.addEventListener(\"mousemove\",this.events.move,!1),document.addEventListener(\"mouseup\",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove(\"dragging\"),this.onEnd(),this.activeHandle.classList.remove(\"active\"),this.activeHandle=!1,this.touch?(document.removeEventListener(\"touchmove\",this.events.move),document.removeEventListener(\"touchend\",this.events.stop),document.removeEventListener(\"touchcancel\",this.events.stop)):(document.removeEventListener(\"mousemove\",this.events.move),document.removeEventListener(\"mouseup\",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event(\"change\")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case\"ArrowRight\":case\"ArrowUp\":t.stepUp(v);break;case\"ArrowLeft\":case\"ArrowDown\":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle(\"combined-tooltip\",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+\" - \"+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event(\"input\")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?\"bottom\":\"left\"]=s+\"px\",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+\"px\"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest(\".\"+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute(\"tabindex\")}):this.nodes.handle.removeAttribute(\"tabindex\"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},\"start move stop update reset native keydown\".split(\" \").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener(\"scroll\",this.events.scroll,!1),window.addEventListener(\"resize\",this.events.resize,!1),document.addEventListener(\"keydown\",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.input.addEventListener(\"input\",this.events.native,!1),this.input.form&&this.input.form.addEventListener(\"reset\",this.events.reset,!1)},r.unbind=function(){document.removeEventListener(\"scroll\",this.events.scroll),window.removeEventListener(\"resize\",this.events.resize),document.removeEventListener(\"keydown\",this.events.keydown),this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.input.removeEventListener(\"input\",this.events.native),this.input.form&&this.input.form.removeEventListener(\"reset\",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q});","import { Dataviz, Dataset } from './index';\n\nconst env = typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {};\n\nexport const extendKeenGlobalObject = function(env) {\n env.KeenDataviz = Dataviz;\n env.KeenDataset = Dataset;\n\n // just for backward compatibility\n env.Keen = env.Keen || {};\n env.Keen.Dataset = Dataset;\n env.Keen.Dataviz = Dataviz;\n};\n\nif (typeof KEEN_GLOBAL_OBJECT !== 'undefined'\n && KEEN_GLOBAL_OBJECT) {\n extendKeenGlobalObject(env);\n}\n\nexport let keenGlobals = undefined;\nif (typeof webpackKeenGlobals !== 'undefined') {\n keenGlobals = webpackKeenGlobals;\n}\n\nexport { Dataviz, Dataset } from './index';\nexport default Dataviz;\n","/* eslint-env browser */\nimport * as d3 from 'd3';\nimport c3 from 'c3';\n\nimport pkg from '../package.json';\nimport data from './data';\nimport { Dataset } from './dataset';\n\n// Utils\nimport { each } from './utils/each';\nimport isDateString from './utils/assert-date-string';\nimport { stripHtmlTags } from './utils/strip-html-tags';\nimport { escapeHtml } from './utils/escape-html';\nimport libraries from './libraries';\nimport { extendDeep } from './utils/extend-deep';\nimport exportImage from './utils/export-svg';\nimport exportData from './utils/export-data';\nimport renderDownloadButton from './utils/render-download-btn';\nimport renderExecutionMetadata from './utils/render-execution-metadata';\nimport copyToClipboard from './utils/copy-to-clipboard';\n\nimport palettes from './palettes/index';\n\n// Constructor\nexport const Dataviz = function (options = {}) {\n if (this instanceof Dataviz === false) {\n return new Dataviz(options);\n }\n\n this.c3 = c3; // expose for use outside\n this.d3 = d3;\n\n const datavizInstance = this;\n const defaultOptions = {\n showDeprecationWarnings: true,\n showLoadingSpinner: false,\n\n container: undefined, // querySelector of container, for example '#someDiv'\n containerElement: undefined, // HTML parent element for the chart\n\n // width: undefined, *deprecated* - use CSS\n // height: undefined, *deprecated* - use CSS\n\n title: undefined,\n showTitle: true,\n\n subtitle: undefined,\n\n notes: undefined,\n theme: 'keen-dataviz',\n\n colors: [\n '#00bbde', '#fe6672', '#eeb058', '#8a8ad6', '#ff855c', '#00cfbb',\n '#5a9eed', '#73d483', '#c879bb', '#0099b6', '#d74d58', '#cb9141',\n '#6b6bb6', '#d86945', '#00aa99', '#4281c9', '#57b566', '#ac5c9e',\n '#27cceb', '#ff818b', '#f6bf71', '#9b9be1', '#ff9b79', '#26dfcd',\n '#73aff4', '#87e096', '#d88bcb',\n ],\n\n colorMapping: {},\n ui: {\n executionMetadata: true,\n },\n utils: {\n clickToCopyToClipboard: true,\n },\n\n indexBy: 'timeframe.start',\n labels: [],\n labelMapping: {},\n labelMappingRegExp: undefined,\n errorMapping: {},\n showErrorMessages: true,\n library: 'default',\n sortGroups: undefined,\n sortIntervals: undefined,\n\n results: undefined, // raw data\n\n // C3 chartOptions\n type: undefined,\n stacked: false,\n dateFormat: undefined,\n legend: {\n show: true,\n position: 'right',\n alignment: 'top',\n label: {\n textMaxLength: 12\n },\n pagination: {\n offset: 0, // start from\n limit: 5 // items per page\n },\n tooltip: {\n show: true,\n pointer: true\n },\n sort: undefined\n },\n\n axis: {},\n color: {},\n size: {\n // control it with CSS of .c3-chart\n },\n padding: {\n top: 15\n },\n point: {\n focus: {\n expand: {\n enabled: false\n }\n },\n r: 2,\n show: true,\n sensitivity: 300\n },\n tooltip: {\n horizontal: true,\n format: {\n // https://c3js.org/samples/tooltip_format.html\n }\n },\n transition: {\n // duration: 0\n },\n data: {\n order: null,\n selection: {\n enabled: true,\n draggable: true,\n multiple: true\n },\n onselected: (d, element) => {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n },\n },\n grid: {\n y: {\n show: true\n }\n },\n partialIntervalIndicator: {\n show: undefined,\n className: 'partial-interval-indicator'\n },\n timezone: 'UTC',\n table: {\n schema: 'static',\n },\n renderOnVisible: false,\n funnel: {\n lines: true,\n resultValues: true,\n percents: {\n show: false,\n countingMethod: 'absolute',\n decimals: 0\n },\n marginBetweenElements: false,\n hover: true,\n effect3d: 'both-sides',\n minimalSize: false,\n },\n react: false,\n range: false,\n sparkline: false,\n choropleth: {\n map: 'world',\n borders: {\n show: true,\n size: 0.5,\n color: '#000'\n },\n showSlider: false\n },\n heatmap: {},\n };\n\n this.config = { ...extendDeep(defaultOptions, options) };\n\n if (options.palette) {\n if (!palettes[options.palette]){\n console.log('Colors pallete not found', options.palette);\n }\n this.config.colors = palettes[options.palette].colors;\n }\n\n if (this.config.type) {\n // backward compatibility with v2016... areachart -> area\n this.config.type = convertChartTypes(this.config.type);\n }\n\n // overwriting options for range chart\n if(this.config.type && this.config.type.includes('-range')) {\n this.config.range = true;\n this.config.type = this.config.type.replace('-range', '');\n this.config.legend.show = false;\n this.config.stacking = 'normal';\n this.config.labels = ['Max', 'Min'];\n this.config.colors = [\n this.config.colors[0],\n this.config.colors[0],\n ];\n }\n\n // overwriting stacked when stacking added\n if (this.config.stacking) {\n this.config.stacked = true;\n }\n\n // overwriting options for sparkline chart\n if (this.config.sparkline) {\n this.config.legend.show = false;\n this.config.axis = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n this.config.grid = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n }\n\n // get DOM node by query\n if (this.config.container) {\n this.el(this.config.container);\n }\n\n if (options.legend !== undefined && !options.legend) {\n this.config.legend = {\n ...options,\n show: false\n };\n }\n\n if (options.color && options.color.pattern) {\n // to match c3 options\n this.config.colors = options.color.pattern;\n }\n\n if (this.config.legend\n && this.config.legend.tooltip\n && this.config.legend.tooltip.show === false\n && this.config.tooltip.show === undefined) {\n this.config.tooltip = { show: false };\n }\n\n this.dataset = new Dataset(this.config);\n this.view = {\n _prepared: false,\n _rendered: false,\n _artifacts: { /* state bin */ }\n };\n\n Dataviz.visuals.push(this);\n\n if (this.config.showLoadingSpinner) {\n this.prepare();\n }\n\n if (!!this.config.results) {\n this.render(this.config.results);\n }\n this.config.firstVisibilityState = document.visibilityState;\n\n if (!this.config.utils.clickToCopyToClipboard) {\n this.config.data.onselected = () => {};\n }\n\n if (options.data && options.data.onselected) {\n this.config.data.onselected = (d, element) => {\n const callback = options.data.onselected.bind(null, d, element);\n callback();\n\n if (this.config.utils.clickToCopyToClipboard) {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n }\n };\n }\n\n};\n\n\nDataviz.libraries = { default: {} };\nif (typeof window !== 'undefined') {\n Dataviz.libraries.default = libraries(Dataviz);\n}\nDataviz.visuals = [];\n\nDataviz.register = function (name, actions) {\n Dataviz.libraries[name] = Dataviz.libraries[name] || {};\n each(actions, function(method, key){\n Dataviz.libraries[name][key] = method;\n });\n};\n\nDataviz.find = function(target){\n if (!arguments.length) return Dataviz.visuals;\n const el = target.nodeName ? target : document.querySelector(target);\n let match = null;\n each(Dataviz.visuals, function(visual){\n if (el == visual.config.container){\n match = visual;\n return false;\n }\n });\n return match;\n};\n\n\n // Prototype\n // ------------\n\nDataviz.prototype.attributes = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n const view = this.config;\n each(obj, function(prop, key){\n // Handle deprecated property names\n if (key === 'chartType') {\n key = 'type';\n }\n view[key] = prop;\n });\n return this;\n};\n\nDataviz.prototype.call = function(fn){\n fn.call(this);\n return this;\n};\n\nDataviz.prototype.chartOptions = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n this.config = extendDeep(this.config, obj);\n return this;\n};\n\nDataviz.prototype.colors = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.colors;\n this.config.colors = (arr instanceof Array ? arr : []);\n return this;\n};\n\nDataviz.prototype.colorMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })');\n }\n const datavizInstance = this;\n if (!arguments.length) return this.config.colorMapping;\n if (obj === null) {\n this.config.colorMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n datavizInstance.config.colorMapping[key] = (value ? value : null);\n });\n }\n return this;\n};\n\nDataviz.prototype.data = data;\n\nDataviz.prototype.dateFormat = function(val){\n if (this.config.showDeprecationWarnings) {\n console.log('.dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.dateFormat;\n if (typeof val === 'string' || typeof val === 'function') {\n this.config.dateFormat = val;\n }\n else {\n this.config.dateFormat = undefined;\n }\n return this;\n};\n\nDataviz.prototype.destroy = function(){\n const library = this.library();\n const type = this.config.type;\n const element = this.el();\n\n // Call destroy method if present\n if (Dataviz.libraries[library]\n && Dataviz.libraries[library][type]){\n Dataviz.libraries[library][type].destroy.call(this);\n }\n\n // Clear rendered artifacts, state bin\n if (element) {\n element.innerHTML = '';\n }\n this.view._prepared = false;\n this.view._rendered = false;\n this.view._artifacts = {};\n return this;\n};\n\nDataviz.prototype.el = function(target){\n const datavizInstance = this;\n if (!arguments.length) return this.config.containerElement;\n domReady(function(){\n if (target && target !== null) {\n if (target.nodeName) {\n datavizInstance.config.containerElement = target;\n }\n else if (document.querySelector) {\n datavizInstance.config.containerElement = document.querySelector(target);\n }\n }\n else {\n datavizInstance.config.containerElement = undefined;\n }\n });\n return this;\n};\n\nDataviz.prototype.height = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.height() is deprecated - use CSS classes');\n }\n return this;\n};\n\n// IMPORTANT: Must be run before data parsing\nDataviz.prototype.indexBy = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.indexBy;\n this.config.indexBy = (str ? String(str) : 'timeframe.start');\n return this;\n};\n\nDataviz.prototype.labels = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })');\n }\n\n if (!arguments.length) return this.config.labels;\n this.config.labels = (arr instanceof Array ? arr : []);\n\n setLabels(this);\n\n return this;\n};\n\nfunction setLabels(datavizInstance){\n // Write labels\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.updateColumn(0, function(value, index){\n if (datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n else {\n datavizInstance.dataset.updateRow(0, function(value, index){\n if (index > 0 && datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.labelMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.labelMapping;\n if (obj === null) {\n this.config.labelMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n this.config.labelMapping[key] = (value ? value : null);\n }.bind(this));\n }\n\n mapLabels(this);\n\n return this;\n};\n\nfunction mapLabelsExec({ datavizInstance, value }){\n if (datavizInstance.config.labelMappingRegExp){\n let valueAfterMatching = value;\n datavizInstance.config.labelMappingRegExp.forEach(regExpAndLabel => {\n if (regExpAndLabel.length > 1) {\n let regExpObj = regExpAndLabel[0];\n if (regExpObj.test(value)){\n valueAfterMatching = regExpAndLabel[1];\n }\n }\n });\n return stripHtmlTags(valueAfterMatching);\n }\n if (datavizInstance.config.labelMapping[value]) {\n return stripHtmlTags(String(datavizInstance.config.labelMapping[value]));\n }\n return stripHtmlTags(value);\n}\n\nfunction mapLabels(datavizInstance){\n // Write labels\n if (!datavizInstance.config.labelMappingDimension) {\n // if not defined use deprecated auto-detecting\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.config.labelMappingDimension = 'row';\n } else {\n datavizInstance.config.labelMappingDimension = 'column';\n }\n }\n\n if (datavizInstance.config.labelMappingDimension === 'row'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateColumn(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n\n if (datavizInstance.config.labelMappingDimension === 'column'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateRow(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.library = function(str){\n if (!arguments.length) return this.config['library'];\n this.config['library'] = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.message = function(){\n if (this.view._rendered) {\n this.destroy();\n }\n if (this.el()) {\n this.el().innerHTML = '';\n const message = Dataviz.libraries.default.message;\n if (message.render) {\n message.render.apply(this, arguments);\n }\n }\n return this;\n};\n\nDataviz.prototype.notes = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.notes;\n this.config.notes = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.prepare = function(){\n const datavizInstance = this;\n\n if (!this.el()) {\n throw `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n return;\n }\n\n domReady(function(){\n if (datavizInstance.view._rendered) {\n datavizInstance.destroy();\n }\n if (datavizInstance.el()) {\n datavizInstance.el().innerHTML = '';\n const loader = Dataviz.libraries.default.spinner;\n if (loader.render) {\n loader.render.call(datavizInstance);\n }\n datavizInstance.view._prepared = true;\n }\n });\n\n return this;\n};\n\nDataviz.prototype.render = function(results = undefined){\n const datavizInstance = this;\n\n if (!!results) {\n const firstResult = results[0] || results;\n if (\n firstResult.query\n && firstResult.query.interval\n && firstResult.query.timeframe\n && typeof firstResult.query.timeframe === 'string'\n && firstResult.query.timeframe.includes('this_')\n && this.config.partialIntervalIndicator\n && this.config.partialIntervalIndicator.show === undefined\n )\n {\n this.config.partialIntervalIndicator.show = true;\n }\n\n if (Array.isArray(results)) {\n const timeframes = results.map(resultItem => resultItem.query.timeframe);\n timeframes.forEach(resultTimeframe => {\n let foundDifferent = timeframes.find(timeframeItem =>\n JSON.stringify(timeframeItem) !== JSON.stringify(resultTimeframe)\n );\n if (foundDifferent){\n const msg = 'Timeframes of the queries should be the same';\n console.error(msg);\n throw msg;\n }\n });\n // first result is important to prepare X on the chart\n return datavizInstance\n .data(results[0])\n .call(() => {\n const input = results[0];\n this.dataset.deleteColumn(1);\n for (let result of results) {\n let label = `${input.query.event_collection} ${input.query.analysis_type}`;\n let ds2 = Dataset.parser('interval')(result);\n datavizInstance.dataset.appendColumn(label, ds2.selectColumn(1).slice(1));\n }\n })\n .render();\n }\n\n return datavizInstance.data(results).render();\n }\n if (\n (!!this.config.labelMapping && Object.keys(this.config.labelMapping).length > 0)\n ||\n (!!this.config.labelMappingRegExp && this.config.labelMappingRegExp.length > 0)\n ){\n mapLabels(datavizInstance);\n }\n if (!!this.config.labels && Object.keys(this.config.labels).length > 0){\n setLabels(datavizInstance);\n }\n if (!!this.config.sortGroups) {\n sortGroups(datavizInstance);\n }\n if (!!this.config.sortIntervals) {\n sortIntervals(datavizInstance);\n }\n\n const loader = Dataviz.libraries.default.spinner;\n const library = this.config.library;\n const type = this.config.type;\n const containerElement = this.el();\n\n if (!containerElement || containerElement === undefined) {\n const msg = `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n console.error(msg);\n throw msg;\n return;\n }\n\n let returnValue = datavizInstance;\n\n if (datavizInstance.config.renderAsPromise) {\n returnValue = new Promise((resolve, reject) => {\n const customCallback = this.config.onrendered;\n datavizInstance.config.onrendered = () => {\n if (customCallback) {\n customCallback();\n }\n resolve(datavizInstance);\n }\n });\n }\n\n domReady(function(){\n const shouldRenderExecutionMetadata = datavizInstance.execution_metadata\n && datavizInstance.config.ui\n && datavizInstance.config.ui.executionMetadata;\n const shouldRenderDownloadBtn = datavizInstance.config.ui\n && datavizInstance.config.ui.buttons\n && datavizInstance.config.ui.buttons.download\n && datavizInstance.config.ui.buttons.download.type;\n if (datavizInstance.view._prepared && loader.destroy) {\n loader.destroy.apply(datavizInstance, arguments);\n }\n containerElement.innerHTML = '';\n\n if (Dataviz.libraries[library] === 'undefined'){\n // Error: Unregistered library\n const msg = `Incorrect library`;\n datavizInstance.message(msg);\n throw msg;\n return;\n }\n else {\n if (typeof Dataviz.libraries[library][type] === 'undefined') {\n const msg = `Incorrect chart type`;\n const mappedMsg = this.config.errorMapping[msg] || msg;\n datavizInstance.message(mappedMsg);\n throw msg;\n return;\n }\n else {\n buildDomWrapper(containerElement,\n datavizInstance.config\n );\n if (shouldRenderDownloadBtn) {\n renderDownloadButton({\n element: containerElement,\n data: datavizInstance.dataset.matrix,\n type: datavizInstance.config.ui.buttons.download.type,\n label: datavizInstance.config.ui.buttons.download.label,\n })\n }\n if (shouldRenderExecutionMetadata) {\n renderExecutionMetadata({\n element: containerElement,\n data: datavizInstance.execution_metadata,\n })\n }\n const { renderOnVisible } = datavizInstance.config;\n if(renderOnVisible){\n if(typeof IntersectionObserver !== 'undefined'){\n const chartVisibleCallback = (events, observer) => {\n events.forEach(el => {\n if(el.isIntersecting){\n if(!datavizInstance.view._rendered){\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n })\n }\n const observer = new IntersectionObserver(chartVisibleCallback);\n observer.observe(containerElement);\n return;\n }\n }\n if(datavizInstance.config.firstVisibilityState === 'hidden'){\n if(typeof document !== 'undefined') {\n let hidden, visibilityChange;\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n const handleVisibilityChange = () => {\n if(!document[hidden] && datavizInstance.view._artifacts.c3) {\n datavizInstance.view._artifacts.c3.load(datavizInstance.dataset.matrix);\n }\n }\n if(typeof document.addEventListener !== \"undefined\" ||\n hidden !== undefined){\n document.addEventListener(visibilityChange, handleVisibilityChange, {\n once: true\n });\n }\n }\n }\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n });\n\n return returnValue;\n};\n\nDataviz.prototype.sortGroups = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortGroups;\n this.config.sortGroups = (str ? String(str) : null);\n\n sortGroups(this, str);\n\n return this;\n};\n\nfunction sortGroups(datavizInstance){\n // Sort groups\n if (datavizInstance.config.sortGroups && datavizInstance.data().length > 1) {\n if (isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.sortColumns(datavizInstance.config.sortGroups, datavizInstance.dataset.getColumnSum);\n }\n else {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortGroups, datavizInstance.dataset.getRowSum);\n }\n }\n}\n\nDataviz.prototype.sortIntervals = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortIntervals;\n this.config.sortIntervals = (str ? String(str) : null);\n\n sortIntervals(this);\n\n return this;\n};\n\nfunction sortIntervals(datavizInstance){\n if (datavizInstance.config.sortIntervals) {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortIntervals);\n }\n}\n\nDataviz.prototype.stacked = function(bool){\n if (this.config.showDeprecationWarnings) {\n console.log('.stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.stacked;\n this.config.stacked = bool ? true : false;\n return this;\n};\n\nDataviz.prototype.theme = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.theme;\n this.config.theme = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.title = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.title;\n this.config.title = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.type = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.type;\n this.config.type = (str ? convertChartTypes(str) : null);\n return this;\n};\n\nDataviz.prototype.update = function(){\n const library = this.config.library;\n const type = this.config.type;\n const element = this.el();\n if (library && type && element && Dataviz.libraries[library][type].update) {\n Dataviz.libraries[library][type].update.apply(this, arguments);\n }\n return this;\n};\n\nDataviz.prototype.width = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.width() is deprecated - use CSS classes');\n }\n return this;\n};\n\nDataviz.prototype.exportImage = function({ quality = 0, bgcolor = '#fff' } = {}) {\n exportImage({\n node: this.config.containerElement,\n quality,\n bgcolor,\n });\n};\n\nDataviz.prototype.exportData = function(type='json') {\n exportData({\n data: this.dataset.matrix,\n type,\n });\n};\n\n// Deprecations\nDataviz.prototype.chartType = Dataviz.prototype.type;\nDataviz.prototype.error = Dataviz.prototype.message;\nDataviz.prototype.parseRawData = Dataviz.prototype.data;\nDataviz.prototype.parseRequest = function(){\n // this.emit('error', 'This method is no longer supported. Use .data() instead: https://github.com/keen/keen-dataviz.js#data');\n return this;\n};\nDataviz.prototype.initialize = function(){\n // this.emit('error', 'This method is no longer supported, and can be omitted as it has no impact');\n return this;\n};\n\nDataviz.version = pkg.version;\n\n// Private\n\nfunction buildDomWrapper(el, options) {\n let html = '';\n let chart100percentWide = '';\n let rangeChart = '';\n if (options.legend.position === 'top' || options.legend.position === 'bottom') {\n chart100percentWide = 'c3-chart-100-percent';\n }\n if (options.range) {\n rangeChart = 'keen-dataviz-range';\n }\n let container = `
`;\n const verticalAlignment = ['top', 'middle', 'bottom'];\n const horizontalAlignment = ['left', 'center', 'right'];\n let align = 'horizontal';\n let legendItemsAlign = 'center';\n if (horizontalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n if (options.legend.position === 'left' || options.legend.position === 'right') {\n align = 'vertical';\n if (verticalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n }\n if (options.legend && options.legend.show) {\n if (options.legend.position === 'top' || options.legend.position === 'left') {\n container = `
${container}`;\n } else {\n container = `${container}
`;\n }\n }\n if(!options.react){\n html += `
`;\n }\n if (options.title && options.showTitle) {\n html += `
${options.title}
`;\n }\n if (options.subtitle) {\n html += `
${options.subtitle}
`;\n }\n html += `
${container}
`;\n if (options.notes) {\n html += `
${options.notes}
`;\n }\n if(!options.react){\n html += '
';\n }\n\n el.innerHTML = html;\n}\n\nfunction convertChartTypes(str) {\n const map = {\n areachart: 'area',\n barchart: 'horizontal-bar',\n columnchart: 'bar',\n linechart: 'line',\n piechart: 'pie',\n };\n return map[str] || str;\n}\n\nfunction testDom(fn) {\n if (/in/.test(document.readyState)) {\n setTimeout(() => {\n testDom(fn);\n }, 9);\n } else {\n fn();\n }\n}\n\nfunction domReady(fn) {\n if (typeof document !== 'undefined' || typeof window === 'undefined') {\n fn();\n return;\n }\n // Firefox 3.5 shim\n if (document.readyState == null && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', function DOMContentLoaded() {\n document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);\n document.readyState = 'complete';\n }, false);\n document.readyState = 'loading';\n }\n testDom(fn);\n}\n\nexport { Dataset } from './dataset';\n\nexport default Dataviz;\n","import { each } from '../../utils/each';\n\nexport function deleteColumn(q) {\n const self = this;\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n each(self.matrix, function(row, i){\n self.matrix[i].splice(index, 1);\n });\n }\n return self;\n}\n\nexport function deleteRow(q) {\n var index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n this.matrix.splice(index, 1);\n }\n return this;\n}\n","import { each } from '../../utils/each';\n\nexport function filterColumns(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i) {\n clone.push([]);\n });\n\n each(self.matrix[0], function(col, i){\n var selectedColumn = self.selectColumn(i);\n if (i == 0 || fn.call(self, selectedColumn, i)) {\n each(selectedColumn, function(cell, ri){\n clone[ri].push(cell);\n });\n }\n });\n\n self.data(clone);\n return self;\n}\n\nexport function filterRows(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i){\n if (i == 0 || fn.call(self, row, i)) {\n clone.push(row);\n }\n });\n\n self.data(clone);\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function insertColumn(index, str, input) {\n const self = this;\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n\n self.matrix[0].splice(index, 0, label);\n each(self.matrix, function(row, i) {\n var cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].splice(index, 0, cell);\n }\n });\n\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat( createNullList(self.matrix.length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n self.matrix[0].splice(index, 0, label);\n each(input, function(value, i){\n self.matrix[i+1].splice(index, 0, value);\n });\n\n }\n return self;\n}\n\nexport function insertRow(index, str, input) {\n const self = this;\n const newRow = [];\n const label = (str !== undefined) ? str : null;\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i) {\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.splice(index, 0, newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n self.matrix.splice(index, 0, newRow.concat(input) );\n }\n\n return self;\n}\n","import { each } from '../../utils/each';\n\nexport function selectColumn(q) {\n const result = [];\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1 && typeof this.matrix[0][index] !== 'undefined') {\n each(this.matrix, function(row, i) {\n result.push(row[index]);\n });\n }\n return result;\n}\n\nexport function selectRow(q) {\n let result = [];\n const index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1 && typeof this.matrix[index] !== 'undefined') {\n result = this.matrix[index];\n }\n return result;\n}\n","import { each } from '../../utils/each';\nimport analysesUtilMethods from '../utils/analyses';\n\nexport function sortColumns(str, comp) {\n var self = this,\n head = this.matrix[0].slice(1), // minus index\n cols = [],\n clone = [],\n fn = comp || analysesUtilMethods.getColumnLabel;\n\n // Isolate each column (except the index)\n each(head, function(cell, i) {\n cols.push(self.selectColumn(i+1).slice(0));\n });\n cols.sort(function(a,b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n each(cols, function(col, i) {\n self\n .deleteColumn(i+1)\n .insertColumn(i+1, col[0], col.slice(1));\n });\n return self;\n}\n\nexport function sortRows(str, comp) {\n var self = this,\n head = this.matrix.slice(0,1),\n body = this.matrix.slice(1),\n fn = comp || analysesUtilMethods.getRowIndex;\n body.sort(function(a, b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n self.data(head.concat(body));\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function updateColumn(q, input) {\n var self = this,\n index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data(), function(row, i){\n var cell;\n if (i > 0) {\n cell = input.call(self, row[index], i, row);\n if (typeof cell !== 'undefined') {\n self.matrix[i][index] = cell;\n }\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.data().length - 1) {\n input = input.concat( createNullList(self.data().length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[i+1][index] = value;\n });\n\n }\n\n }\n return self;\n}\n\nexport function updateRow(q, input){\n var self = this,\n index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data()[index], function(value, i){\n var col = self.selectColumn(i),\n cell = input.call(self, value, i, col);\n if (typeof cell !== 'undefined') {\n self.matrix[index][i] = cell;\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[index][i+1] = value;\n });\n }\n\n }\n return self;\n}\n","let Dataset; /* injected */\n\nimport { each } from '../../utils/each';\nimport { flatten } from '../utils/flatten';\nimport { valueAtDeepKey } from '../utils/object';\n\nexport default function initialize(lib){\n Dataset = lib;\n return function(name){\n var options = Array.prototype.slice.call(arguments, 1);\n\n if (!parsers[name]) {\n throw 'Requested parser does not exist';\n }\n else {\n return parsers[name].apply(this, options);\n }\n };\n}\n\nfunction parseMetric(){\n return function(res){\n return new Dataset()\n .set(['Value', 'Result'], res.result)\n .type('metric');\n }\n}\n\n//var myParser = Dataset.parser('interval', 'timeframe.end');\nfunction parseInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n dataset.set(['Result', index], record.value);\n });\n return dataset;\n }\n}\n\nfunction parseGroupedMetric(){\n return function(res){\n var dataset = new Dataset()\n .type('grouped-metric');\n each(res.result, function(record, i){\n var label;\n each(record, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set(['Result', String(record[label])], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('grouped-interval', 'timeframe.end');\nfunction parseGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('grouped-interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n if (record.value.length) {\n each(record.value, function(group, j){\n var label;\n each(group, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set([ String(group[label]), index ], group.result);\n });\n }\n else {\n dataset.appendRow(index);\n }\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-metric', ['first', 'second']);\nfunction parseDoubleGroupedMetric(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-metric');\n each(res.result, function(record, i){\n var rowLabel = record[options[0][0]] + ' ' + record[options[0][1]];\n dataset.set([ 'Result', rowLabel ], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-interval', ['first', 'second'], 'timeframe.end');\nfunction parseDoubleGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-interval');\n each(res.result, function(record, i){\n var index = options[1] && options[1] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n each(record['value'], function(value, j){\n var label = value[options[0][0]] + ' ' + value[options[0][1]];\n dataset.set([ label, index ], value.result);\n });\n });\n return dataset;\n }\n}\n\nfunction parseFunnel(){\n return function(res){\n var result, steps, dataset;\n if (typeof res.steps !== 'undefined'\n && typeof res.result !== 'undefined'\n && res.result instanceof Array) {\n // Ad-hoc funnel response\n result = res.result;\n steps = res.steps;\n }\n else if (typeof res.result.steps !== 'undefined'\n && typeof res.result.result !== 'undefined'\n && res.result.result instanceof Array) {\n // Saved funnel response\n result = res.result.result;\n steps = res.result.steps;\n }\n dataset = new Dataset().type('funnel');\n dataset.appendColumn('Step Value');\n each(result, function(value, i){\n if (typeof steps !== 'undefined' && steps[i]) {\n dataset.appendRow(String(steps[i].event_collection), [value]);\n }\n });\n return dataset;\n }\n}\n\nfunction parseList(){\n return function(res){\n var dataset = new Dataset()\n .type('list');\n each(res.result, function(value, i){\n dataset.set( [ 'Result', String(i+1) ], value );\n });\n return dataset;\n }\n}\n\nfunction parseExtraction(){\n let config = this.config;\n return function(res){\n const datasetExtraction = new Dataset()\n .type('extraction');\n\n // get keys of the Object, static schema\n let names = Object.keys(flatten(res.result[0]));\n\n const tableConfig = config && config.table;\n if (tableConfig && tableConfig.schema === 'dynamic') {\n const results = res.result;\n const keys = {};\n results.forEach(resultItem => {\n const resultKeys = Object.keys(flatten(resultItem));\n if (resultKeys && resultKeys.length) {\n resultKeys.forEach(keyName => {\n if (!keys[keyName]) {\n keys[keyName] = true;\n }\n });\n }\n });\n names = Object.keys(keys);\n }\n \n let nameI = 0;\n names.forEach(value => {\n datasetExtraction.set([ value, '0' ], value);\n nameI++;\n });\n \n if (Dataset) {\n if (config\n && config.table\n && config.table.columns) {\n names = config.table.columns;\n }\n }\n\n for (let i=0; i 1) {\n parser = 'double-grouped-metric';\n parserArgs.push(query.group_by);\n }\n else {\n parser = 'grouped-metric';\n }\n }\n else if (query.interval && !query.group_by) {\n parser = 'interval';\n parserArgs.push(indexBy);\n }\n else if (query.group_by && query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-interval';\n parserArgs.push(query.group_by);\n parserArgs.push(indexBy);\n }\n else {\n parser = 'grouped-interval';\n parserArgs.push(indexBy);\n }\n }\n }\n\n if (!parser) {\n\n // Metric\n // -------------------------------\n if (typeof response.result === 'number'){\n parser = 'metric';\n }\n\n // Everything else\n // -------------------------------\n if (response.result instanceof Array && response.result.length > 0){\n\n // Interval w/ single value\n // -------------------------------\n if (response.result[0].timeframe && (typeof response.result[0].value == 'number' || response.result[0].value == null)) {\n parser = 'interval';\n parserArgs.push(indexBy)\n }\n\n // Static GroupBy\n // -------------------------------\n if (typeof response.result[0].result == 'number'){\n parser = 'grouped-metric';\n }\n\n // x, y, value for heatmap\n if (this.config.type === 'heatmap' && Object.keys(response.result[0] === 3 && typeof response.result[0].result === 'number')) {\n parser = 'heatmap-axis';\n }\n\n // Grouped Interval\n // -------------------------------\n if (response.result[0].value instanceof Array){\n parser = 'grouped-interval';\n parserArgs.push(indexBy)\n }\n\n // Funnel\n // -------------------------------\n if (typeof response.result[0] === 'number'\n && typeof response.steps !== 'undefined'){\n parser = 'funnel';\n // Move steps into query object\n query.steps = response.steps;\n }\n\n // Select Unique\n // -------------------------------\n if ((typeof response.result[0] === 'string' || typeof response.result[0] == 'number') && typeof response.steps === 'undefined'){\n parser = 'list';\n }\n\n // Extraction\n // -------------------------------\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n // Set title from saved query body, or create a default title\n if (this.config.title === undefined) {\n if (meta.display_name) {\n title = meta.display_name;\n }\n else {\n title = getDefaultTitle(query);\n }\n this.config.title = title;\n }\n\n // Set type from saved query body, or use a default type\n if (!this.config.type) {\n if (meta.visualization && meta.visualization.chart_type) {\n type = meta.visualization.chart_type;\n }\n else {\n type = getDefaultType(parser);\n }\n this.config.type = type;\n }\n\n // Define the appropriate parser\n selectedParser = Dataset.parser.apply(this, [parser].concat(parserArgs));\n\n // Parse the response with augmented query body\n dataset = selectedParser(extend(response, { 'query': query }));\n\n // Set true dates for 'interval' data\n if (parser.indexOf('interval') > -1) {\n dataset.updateColumn(0, function(value, i){\n return new Date(value);\n });\n }\n\n dataset.updateRow(0, function(value, i){\n return stripHtmlTags(value);\n });\n\n this.dataset = dataset;\n\n if (response.execution_metadata) {\n this.execution_metadata = response.execution_metadata;\n }\n\n return this;\n}\n\nfunction getDefaultTitle(query) {\n var analysis = query.analysis_type ? query.analysis_type.replace('_', ' ') : '',\n title;\n\n title = analysis.replace( /\\b./g, function(a){\n return a.toUpperCase();\n });\n\n if (query.event_collection) {\n title += ' - ' + query.event_collection;\n }\n return title;\n}\n\nfunction getDefaultType(parser) {\n let type;\n switch (parser) {\n case 'metric':\n type = 'metric';\n break;\n case 'interval':\n type = 'area';\n break;\n case 'grouped-metric':\n case 'double-grouped-metric':\n type = 'bar';\n break;\n case 'grouped-interval':\n case 'double-grouped-interval':\n type = 'line';\n break;\n case 'funnel':\n type = 'horizontal-bar';\n break;\n case 'list':\n case 'extraction':\n default:\n type = 'table';\n }\n return type;\n}\n","import c3 from 'c3';\n\nimport { each } from '../utils/each';\nimport { extend } from '../utils/extend';\nimport { extendDeep } from '../utils/extend-deep';\nimport isDateString from '../utils/assert-date-string';\nimport c3DefaultDateFormat from './c3/extensions/default-date-format';\nimport c3PaginatingLegend from './c3/extensions/paginating-legend';\nimport c3TooltipContents from './c3/extensions/tooltip-contents';\n\nimport calculateRange from '../dataset/utils/calculate-range';\nimport { calculateSumForPercents, calculatePercents } from '../dataset/utils/calculate-percents';\n\nimport message from './default/message';\nimport metric from './default/metric';\nimport table from './default/table';\nimport spinner from './default/spinner';\nimport Funnel from './default/funnel';\nimport Funnel3d from './default/funnel-3d';\nimport HorizontalFunnel from './default/horizontal-funnel';\nimport HorizontalFunnel3d from './default/horizontal-funnel-3d';\nimport MetricCombo from './default/metric-combo';\nimport Heatmap from './default/heatmap';\nimport Choropleth from './default/choropleth';\n\nexport default function(lib) {\n let timer;\n bindResizeListener(function(){\n if (timer) {\n clearTimeout(timer);\n }\n const delay = (lib.visuals.length > 12) ? 1000 : 250;\n timer = setTimeout(function(){\n each(lib.visuals, function(chart){\n const c3Chart = chart.view._artifacts.c3;\n if (c3Chart) {\n const parentWidth = c3Chart.element.parentNode.parentNode.offsetWidth;\n let width = parentWidth;\n if (chart.config.legend && chart.config.legend.show && (chart.config.legend.position === 'left' || chart.config.legend.position === 'right')) {\n const nextSiblingWidth = c3Chart.element.nextSibling ? c3Chart.element.nextSibling.offsetWidth : 0;\n const prevSiblingWidth = c3Chart.element.previousSibling ? c3Chart.element.previousSibling.offsetWidth : 0;\n width = parentWidth - prevSiblingWidth - nextSiblingWidth;\n }\n\n c3Chart.resize({\n width,\n });\n\n }\n });\n }, delay);\n });\n\n return defineC3();\n};\n\nfunction defineC3(){\n const types = {\n message,\n metric,\n table,\n spinner,\n 'funnel': new Funnel,\n 'funnel-3d': new Funnel3d,\n 'horizontal-funnel': new HorizontalFunnel,\n 'horizontal-funnel-3d': new HorizontalFunnel3d,\n 'metric-combo': new MetricCombo,\n 'heatmap': new Heatmap,\n 'choropleth': new Choropleth\n };\n\n const c3Types = [\n // Standard types\n 'area',\n 'area-spline',\n 'area-step',\n 'bar',\n 'donut',\n 'gauge',\n 'line',\n 'pie',\n 'step',\n 'spline',\n\n // Horizontal variant types\n 'horizontal-area',\n 'horizontal-area-spline',\n 'horizontal-area-step',\n 'horizontal-bar',\n 'horizontal-line',\n 'horizontal-step',\n 'horizontal-spline',\n ];\n\n const getPaddings = (element, paddingName) => {\n return parseInt(window.getComputedStyle(element)[`padding${paddingName}`].replace('px', ''));\n }\n\n function getDefaultOptions(){\n const ENFORCED_OPTIONS = {\n bindto: this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'),\n color: {\n pattern: this.config.colors\n },\n data: {\n colors: { ...this.config.colorMapping },\n columns: [],\n type: this.config.type.replace('horizontal-', '')\n },\n };\n\n const renderingElement = this.el();\n\n let height = renderingElement.offsetHeight;\n\n height -= (getPaddings(renderingElement, 'Top') + getPaddings(renderingElement, 'Bottom'));\n\n if (this.config.showTitle) {\n const titleElement = this.el().querySelector('.keen-dataviz-title');\n if (titleElement) {\n height -= titleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.subtitle) {\n const subtitleElement = this.el().querySelector('.keen-dataviz-subtitle');\n if (subtitleElement) {\n height -= subtitleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.notes) {\n const notesElement = this.el().querySelector('.keen-dataviz-notes');\n if (notesElement) {\n height -= notesElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n let width = this.el().querySelector('.c3-chart').offsetWidth\n - (getPaddings(renderingElement, 'Left') + getPaddings(renderingElement, 'Right'));\n if (width < 0) {\n width = 0;\n }\n\n const DEFAULT_OPTIONS = {\n size: {\n width,\n height:\n height > 0 ?\n height\n : undefined,\n }\n };\n\n const extendedConfig = extendDeep({}, DEFAULT_OPTIONS, this.config, ENFORCED_OPTIONS);\n\n return extendedConfig;\n }\n\n each(c3Types, function(type, index) {\n types[type] = {\n render: function(){\n const options = getDefaultOptions.call(this);\n\n // 100% for charts\n const sumArray = calculateSumForPercents(this.dataset.matrix);\n let oldMatrix = [];\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' || type === 'area-step' || type === 'area-spline')) {\n oldMatrix = this.dataset.matrix;\n this.dataset.matrix = [this.dataset.matrix[0], ...calculatePercents(this.dataset.matrix, sumArray)];\n if(!options.sparkline){\n options.axis = {\n y: {\n padding: {\n top: 0,\n },\n tick: {\n format: d => `${d}%`,\n },\n },\n };\n }\n }\n\n // range charts\n if (options.range) {\n this.dataset.matrix = [this.dataset.matrix[0], ...calculateRange(this.dataset.matrix)];\n }\n\n if (!!this.config.clearOnRender && options.data.columns.length && this.dataset && this.dataset.meta) {\n const datasetMeta = this.dataset.meta || {};\n const { type = '' } = datasetMeta;\n let spliceFrom = 0;\n const intervalTypes = ['interval'];\n if (intervalTypes.includes(type)) {\n spliceFrom = 1;\n }\n options.data.columns.splice(spliceFrom);\n }\n\n if (this.data()[0].length === 1 || this.data().length === 1) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n let removeLegend = false;\n\n if (type === 'gauge') {\n // Accommodate a neat bug:\n options.legend.show = false;\n options.data.columns = [[\n this.config.title || this.data()[1][0],\n this.data()[1][1]\n ]];\n removeLegend = true;\n }\n else if (type === 'pie' || type === 'donut') {\n options.data.columns = this.data().slice(1);\n }\n else {\n\n // Apply formatting for horizontal variant types\n if (type.indexOf('horizontal-') > -1) {\n options.axis.rotated = type.indexOf('horizontal-') > -1;\n }\n\n if (isDateString(this.data()[1][0])) {\n // TIMESERIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'timeseries';\n options.axis.x.tick = options.axis.x.tick || {\n format: this.config.dateFormat || c3DefaultDateFormat(this.data()[1][0], this.data()[2] ? this.data()[2][0] : this.data()[1][0]),\n culling: { max: 5 }\n };\n\n options.data.columns[0] = [];\n each(this.dataset.selectColumn(0), function(cell, i){\n if (i > 0) {\n cell = new Date(cell);\n }\n options.data.columns[0][i] = cell;\n });\n options.data.columns[0][0] = 'x';\n options.data.x = 'x';\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n else {\n // CATEGORIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'category';\n options.axis.x.categories = this.dataset.selectColumn(0).slice(1);\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n\n if (this.data()[0].length === 2) {\n options.legend.show = false;\n removeLegend = true;\n }\n\n each(this.data()[0], function(cell, i){\n if (i > 0) {\n options.data.columns.push(this.dataset.selectColumn(i));\n }\n }.bind(this));\n }\n\n if (removeLegend){\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n legendElement.remove();\n options.size.width = this.el().querySelector('.c3-chart').offsetWidth;\n }\n options.legend.show = false;\n }\n\n const chartTypesWithPartialIntervalIndicator = ['area', 'area-spline', 'area-step', 'line', 'spline', 'step'];\n\n if (options.partialIntervalIndicator\n && options.partialIntervalIndicator.show\n && chartTypesWithPartialIntervalIndicator.indexOf(options.type) > -1\n ) {\n const results = options.data.columns && options.data.columns[0];\n if (results && results.length > 1) {\n const partialResultsRegion = {\n axis: 'x',\n start: new Date(results[results.length - 2]),\n class: options.partialIntervalIndicator.className\n };\n options.regions = [...(options.regions || []), partialResultsRegion];\n }\n }\n \n if (\n !(options.tooltip && options.tooltip.show === false)\n &&\n (options.legend.show === true ||\n (options.legend\n && options.legend.tooltip\n && options.legend.tooltip.show)\n )) {\n \n // Apply custom tooltip\n options.tooltip = {\n contents: c3TooltipContents,\n format: {\n title: this.config.tooltip.format.title,\n value: (value, ratio, id, index) => {\n let valueFormatted = c3CustomTooltipFiltering.call(this, value, ratio, id, index);\n if (this.config.tooltip && this.config.tooltip.format && this.config.tooltip.format.value)\n {\n valueFormatted = this.config.tooltip.format.value.call(this, valueFormatted, ratio, id, index);\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = parseFloat(((valueFormatted / 100) * sumArray[index]).toFixed(2));\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = ((valueFormatted / 100) * sumArray[index]).toFixed(2);\n return parseFloat(valueFormatted);\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n }\n };\n }\n\n if (options.legend.show === true) {\n const c3options = { ...options };\n // Apply custom color handling\n c3options.data.color = c3CustomDataMapping.bind(this);\n\n c3options.legend.hide = true; // hide default c3 legend\n\n // Render artifacts\n this.view._artifacts['c3'] = c3.generate(c3options);\n\n c3PaginatingLegend.call(this, {...options, onLegendRendered: () => {\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n if (\n options.legend.position === 'top' ||\n options.legend.position === 'bottom'\n ) {\n c3options.size.height -= legendElement.offsetHeight;\n this.view._artifacts['c3'].resize({ height: c3options.size.height });\n } else {\n if (c3options.size.width === 0) {\n c3options.size.width = this.el().offsetWidth\n - getPaddings(this.el(), 'Left')\n - getPaddings(this.el(), 'Right');\n }\n c3options.size.width -= legendElement.offsetWidth;\n this.view._artifacts['c3'].resize({ width: c3options.size.width });\n }\n }\n },\n onPaginated: () => {\n this.view._artifacts['c3'].flush();\n }\n });\n }\n else {\n this.view._artifacts['c3'] = c3.generate(options);\n }\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts['c3']) {\n this.view._artifacts['c3'].destroy();\n this.view._artifacts['c3'] = null;\n }\n }\n };\n });\n\n return types;\n}\n\nfunction c3CustomDataMapping(color, d) {\n const type = this.config.type;\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if ((d.id && scope.indexOf(d.id) > -1)\n || (d && !d.id && scope.indexOf(d) > -1)) {\n return color;\n }\n else {\n if (type === 'donut' || type === 'pie') {\n return 'rgba(0,0,0,.1)';\n }\n else {\n return 'rgba(0,0,0,.07)';\n }\n }\n }\n else {\n return color;\n }\n}\n\nfunction c3CustomTooltipFiltering(value, ratio, id, index) {\n const type = this.config.type;\n\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if (scope.indexOf(id) > -1) {\n return value;\n }\n }\n else {\n return value;\n }\n}\n\nfunction bindResizeListener(fn){\n if (typeof window === 'undefined') return;\n window.onresize = window.resize = function(){};\n if (window.addEventListener) {\n window.addEventListener('resize', fn, true);\n }\n else if (window.attachEvent) {\n window.attachEvent('onresize', fn);\n }\n}\n","export default function (startDate, endDate) {\n const timeDiff = Math.abs(new Date(startDate).getTime() - new Date(endDate).getTime());\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'June',\n 'July',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n // Yearly (31536000000) + Monthly\n if (timeDiff >= 2419200000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getFullYear();\n };\n }\n // Daily\n else if (timeDiff >= 86400000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getDate();\n };\n }\n // Hourly\n else if (timeDiff >= 3600000) {\n return '%I:%M %p';\n }\n // Minutely\n else {\n return '%I:%M:%S %p';\n }\n}\n","import * as d3 from 'd3';\n\nimport isDateString from '../../../utils/assert-date-string';\n\nexport default function (options) {\n const cols = options.data.columns;\n const datavizInstance = this;\n const chart = this.view._artifacts.c3;\n let columns = [];\n const domNode = this.el().querySelector('.' + datavizInstance.config.theme + '-rendering');\n const legendConfig = datavizInstance.config.legend;\n\n const pagination = this.view._artifacts.pagination = {\n ...{\n hidden: [],\n labels: [],\n offset: 0,\n limit: Math.round((domNode.offsetHeight - 78) / 20),\n total: 0\n },\n ...legendConfig.pagination\n };\n\n if (options.legend.sort) {\n columns = options.legend.sort(cols);\n\n // update column order in the data, so tooltip will be the same order\n const columnsSorted = [];\n const dataColumnsSorted = [];\n if (cols[0][0] === 'x') {\n dataColumnsSorted.push(cols[0]);\n }\n columns.forEach(column => {\n let columnData = options.data.columns.find(item => item[0] === column);\n dataColumnsSorted.push(columnData);\n });\n options.data.columns = dataColumnsSorted;\n } else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i][0] !== 'x' && !isDateString(cols[i][1])) {\n columns.push(cols[i][0]);\n }\n }\n }\n\n const legendElement = this.el().querySelector('.keen-c3-legend');\n\n let align = 'vertical';\n if (legendConfig.position === 'top' || legendConfig.position === 'bottom') {\n align = 'horizontal';\n }\n\n const paginateHorizontalLeftElement = document.createElement('div');\n paginateHorizontalLeftElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-left');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalLeftElement);\n }\n\n const legendItemsElement = document.createElement('div');\n legendItemsElement.setAttribute('class', `keen-c3-legend-items keen-c3-legend-${align}-items`);\n legendElement.append(legendItemsElement);\n\n const paginateVerticalElement = document.createElement('div');\n paginateVerticalElement.setAttribute('class', 'keen-c3-legend-pagination keen-c3-legend-pagination-icons');\n if (align === 'vertical') {\n legendElement.append(paginateVerticalElement);\n }\n\n const paginateHorizontalRightElement = document.createElement('div');\n paginateHorizontalRightElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalRightElement);\n }\n\n paginateData();\n\n function paginateData(){\n pagination.labels = columns.slice(pagination.offset, pagination.offset + pagination.limit);\n pagination.total = columns.length;\n renderLegendComponent.call(datavizInstance, pagination.labels);\n if (pagination.total > pagination.limit) {\n renderPaginationComponent.call(datavizInstance);\n }\n if (options.onPaginated){\n options.onPaginated();\n }\n }\n\n function renderLegendComponent(){\n legendItemsElement.innerHTML = '';\n\n pagination.labels.forEach(label => {\n const labelShortened = legendConfig.label.textMaxLength ? label.slice(0, legendConfig.label.textMaxLength - 1) : label;\n const legendItem = document.createElement(\"div\");\n legendItem.innerHTML = `${labelShortened}`;\n legendItem.chartPartId = label;\n legendItem.setAttribute('class', 'legend-item');\n legendItemsElement.append(legendItem);\n\n const legendItemColorSample = document.createElement(\"span\");\n legendItemColorSample.setAttribute('class', 'legend-item-color-sample');\n legendItemColorSample.style.backgroundColor = chart.color(legendItem.chartPartId);\n legendItem.prepend(legendItemColorSample);\n\n const tooltipElement = document.createElement(\"div\");\n legendItem.addEventListener('mouseover', (event) => {\n chart.focus(legendItem.chartPartId);\n if (legendConfig.tooltip.show && legendItem.chartPartId.length > legendConfig.label.textMaxLength) {\n tooltipElement.setAttribute('class', `keen-c3-legend-label-overlay keen-c3-legend-position-${legendConfig.position}`);\n tooltipElement.innerHTML =\n `${\n options.legend.tooltip.pointer ? `
` : ``\n }${legendItem.chartPartId}`;\n legendItem.append(tooltipElement);\n }\n });\n legendItem.addEventListener('mouseout', (event) => {\n chart.revert();\n tooltipElement.remove();\n });\n legendItem.addEventListener('click', (event) => {\n let opacity = 1;\n const isHidden = pagination.hidden.indexOf(legendItem.chartPartId);\n if (isHidden < 0) {\n pagination.hidden.push(legendItem.chartPartId);\n opacity = .35;\n }\n else {\n pagination.hidden.splice(isHidden, 1);\n opacity = 1;\n }\n legendItem.style.opacity = opacity;\n chart.toggle(legendItem.chartPartId);\n });\n });\n\n if (options.onLegendRendered){\n options.onLegendRendered();\n options.onLegendRendered = null;\n }\n\n }\n\n function renderPaginationComponent(){\n paginateVerticalElement.innerHTML = '';\n paginateHorizontalLeftElement.innerHTML = '';\n paginateHorizontalRightElement.innerHTML = '';\n\n const arrowUp = document.createElement('i');\n const arrowDown = document.createElement('i');\n\n const paginate = (direction) => {\n if (direction === 'forward') {\n const diff = pagination.offset + pagination.limit;\n if (diff < pagination.total) {\n pagination.offset = diff;\n return;\n }\n pagination.offset = 0;\n return;\n }\n\n const diff = pagination.offset - pagination.limit;\n if (diff >= 0) {\n pagination.offset = diff;\n return;\n }\n\n pagination.offset = Math.floor(pagination.total/pagination.limit) * pagination.limit;\n };\n\n arrowDown.addEventListener('click', () => {\n paginate('forward');\n paginateData();\n clearSelectedText();\n });\n\n arrowUp.addEventListener('click', () => {\n paginate('backward');\n paginateData();\n clearSelectedText();\n });\n\n if (legendConfig.position === 'left' || legendConfig.position === 'right') {\n arrowUp.setAttribute('class', 'up');\n arrowDown.setAttribute('class', 'down');\n paginateVerticalElement.append(arrowDown);\n paginateVerticalElement.append(arrowUp);\n } else {\n // bottom top\n arrowUp.setAttribute('class', 'left');\n arrowDown.setAttribute('class', 'right');\n paginateHorizontalLeftElement.append(arrowUp);\n paginateHorizontalRightElement.append(arrowDown);\n }\n\n }\n\n function clearSelectedText() {\n let selection;\n if (document.selection && document.selection.empty) {\n selection = document.selection;\n selection.empty();\n }\n else if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n }\n }\n}\n","import { escapeHtml } from '../../../utils/escape-html';\n\nexport default function (d, defaultTitleFormat, defaultValueFormat, color) {\n let text;\n let title;\n // Set config options or defaults\n const nameFormat = this.config.tooltip_format_name || function (name) { return name; };\n const titleFormat = this.config.tooltip_format_title || defaultTitleFormat;\n const valueFormat = this.config.tooltip_format_value || defaultValueFormat;\n\n // Reverse list to match legend\n for (let i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n if (!text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n let name = nameFormat(d[i].name);\n let value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n let bgcolor = this.levelColor ? this.levelColor(d[i].value) : color(d[i].id);\n if (value && !isNaN(value)) {\n text += \"\";\n if (name.indexOf('__tooltip_ignore_name_field__') === -1) {\n text += \"\";\n }\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + escapeHtml(title) + \"
\" + escapeHtml(name) + \"\" + escapeHtml(value) + \"
\";\n}\n","export default function calculateRange(matrix) {\n const newValues = matrix.slice(1).map(d => d.map((e, i) => {\n if (typeof e === 'number') {\n if (i === 1) {\n return e - d[i + 1];\n }\n }\n return e;\n }));\n return newValues;\n}","export function calculateSumForPercents(matrix) {\n const sumArray = [];\n matrix.slice(1).forEach((d, i) => {\n d.forEach((e) => {\n if (typeof e === 'number') {\n if (!sumArray[i]) {\n sumArray[i] = e;\n return sumArray[i];\n }\n sumArray[i] += e;\n }\n return sumArray[i];\n });\n });\n return sumArray;\n}\n\nexport function calculatePercents(matrix, sumArray) {\n const newValues = matrix.slice(1).map((d, i) => d.map((e) => {\n if (typeof e === 'number') {\n return (e / sumArray[i]) * 100;\n }\n return e;\n }));\n return newValues;\n}\n","import { escapeHtml } from '../../utils/escape-html';\nimport renderDownloadButton from '../../utils/render-download-btn';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default {\n render: function(text){\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n const msg = document.createElement('span');\n\n const titleContainer = document.createElement('div');\n const subtitleContainer = document.createElement('div');\n const notesContainer = document.createElement('div');\n\n outer.className = this.config.theme + ' keen-dataviz-box';\n inner.className = this.config.theme + '-message';\n\n // Create title and notes for message\n titleContainer.className = this.config.theme + '-title';\n titleContainer.innerHTML = escapeHtml(this.config.title || '');\n subtitleContainer.className = this.config.theme + '-subtitle';\n subtitleContainer.innerHTML = escapeHtml(this.config.subtitle || '');\n notesContainer.className = this.config.theme + '-notes';\n notesContainer.innerHTML = escapeHtml(this.config.notes || '');\n\n msg.innerHTML = escapeHtml(text) || '';\n inner.appendChild(msg);\n\n if (this.config.title && this.config.showTitle) {\n outer.appendChild(titleContainer);\n }\n\n if (this.config.subtitle) {\n outer.appendChild(subtitleContainer);\n }\n\n outer.appendChild(inner);\n\n if (this.config.notes) {\n outer.appendChild(notesContainer);\n }\n\n if (this.config.ui\n && this.config.ui.buttons\n && this.config.ui.buttons.download\n && this.config.ui.buttons.download.type) {\n renderDownloadButton({\n element: this.el(),\n data: escapeHtml(text) || '',\n type: this.config.ui.buttons.download.type,\n label: this.config.ui.buttons.download.label,\n })\n }\n\n if (this.config.utils\n && this.config.utils.clickToCopyToClipboard) {\n titleContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n notesContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n msg.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n\n this.el().innerHTML = '';\n this.el().appendChild(outer);\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import exportImage from './export-svg';\nimport exportData from './export-data';\n\nexport default function downloadResults(obj) {\n const { event, type, data } = obj;\n event.preventDefault();\n const supportedFormats = ['json', 'csv', 'jpg', 'jpeg', 'png'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = '';\n let content = '';\n\n if (format === 'png') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n });\n return;\n }\n\n if (format === 'jpg' || format === 'jpeg') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n quality: 1,\n bgcolor: '#fff',\n });\n return;\n }\n\n if (format === 'json') {\n exportData({ type: format, data });\n }\n\n if (format === 'csv') {\n exportData({ type: format, data });\n }\n}\n","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { prettyNumber } from '../../utils/pretty-number';\nimport { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nfunction formatExtractionData(res, prop) {\n const { query, result } = res;\n const formattedResult = [];\n if (query.analysis_type !== 'extraction') throw new Error('Analysis type is not an extraction!');\n if (Array.isArray(result)) {\n result.forEach((item) => {\n const itemProp = prop.split('.').reduce((acc, val) => (acc && acc[val]) || null, item);\n const obj = {\n query,\n result: itemProp,\n };\n formattedResult.push(obj);\n });\n }\n return formattedResult;\n}\n\nexport default {\n render: function(){\n let color = this.config.colors[0];\n const theme = this.config.theme;\n const title = this.config.title;\n const subtitle = this.config.subtitle;\n const opts = this.config;\n let value = '-';\n let prevValue= '';\n let html = '';\n let prefix = '';\n let suffix = '';\n let formattedNum;\n let flexDifferenceStyle = '';\n let resultDifference = '';\n let differenceStyle = '';\n let smallerValue = '';\n const { results, previousResults, isExtraction, comparedProp } = this.config;\n if(results && previousResults){\n flexDifferenceStyle = previousResults ? ' metric-comparison' : '';\n smallerValue = previousResults && title ? '-smaller' : '';\n resultDifference = results.result - previousResults.result;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n if (this.data() && this.data()[1] && this.data()[1][1] && typeof this.data()[1][1] === 'number') {\n value = this.data()[1][1];\n }\n\n if (isExtraction && comparedProp) {\n const formattedResult = formatExtractionData(results, comparedProp);\n \n value = formattedResult[0].result;\n prevValue = formattedResult[1].result;\n\n flexDifferenceStyle = prevValue ? ' metric-comparison' : '';\n smallerValue = prevValue && title ? '-smaller' : '';\n resultDifference = value - prevValue;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n formattedNum = value;\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(value)) ) {\n formattedNum = prettyNumber(value);\n if(results && previousResults){\n resultDifference = prettyNumber(resultDifference);\n }\n }\n\n if (opts['prefix']) {\n prefix = '' + opts['prefix'] + '';\n }\n if (opts['suffix']) {\n suffix = '' + opts['suffix'] + '';\n }\n html += '
';\n html += '
';\n if (results && previousResults) {\n html += '
' + escapeHtml(resultDifference) + '
';\n }\n if (isExtraction && comparedProp) {\n if (value && prevValue) {\n html += '
' + escapeHtml(resultDifference) + '
';\n html += '' + prevValue + '';\n } else {\n html += '

No data to display

';\n }\n }\n html += '
' + prefix + escapeHtml(formattedNum) + suffix + '
';\n if (title) {\n html += '
' + escapeHtml(title) + '
';\n }\n if (subtitle) {\n html += '
' + escapeHtml(subtitle) + '
';\n }\n html += '
';\n html += '
';\n\n this.el().innerHTML = html;\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const resultClassName = `.${theme}-metric-value${smallerValue}`;\n document.querySelector(resultClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n\n if (results && previousResults) {\n const previousResultsClassName = `.${theme}-metric${differenceStyle}`;\n document.querySelector(previousResultsClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n }\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nlet currentPage;\nfunction _generateTableRows(datavizInstance, dataset) {\n let html = '';\n const defaultConfig = {\n page: 1,\n limit: 0,\n arrows: true\n };\n let customConfig = {};\n if (datavizInstance.config.table && datavizInstance.config.table.pagination) {\n customConfig = datavizInstance.config.table.pagination;\n }\n const config = {\n ...defaultConfig,\n ...customConfig\n };\n\n if (!currentPage){\n currentPage = config.page;\n }\n\n let datasetPaginated;\n let pages = 0;\n if (config.limit === 0) {\n datasetPaginated = dataset.slice(1); // remove header\n } else {\n const start = config.limit * (currentPage - 1) + 1;\n const end = start + config.limit;\n datasetPaginated = dataset.slice(start, end);\n pages = Math.ceil((dataset.length - 1) / config.limit);\n }\n\n let columnsArray = datavizInstance.config.table.columns ?\n datavizInstance.config.table.columns :\n datavizInstance.dataset.matrix[0];\n\n const colNamesToMap = {};\n const {\n mapValues,\n mapDates,\n } = datavizInstance.config.table;\n for (let key in mapValues){\n colNamesToMap[columnsArray.indexOf(key)] = key;\n }\n\n for (let row of datasetPaginated) {\n html += '';\n for (let [index, rowColValue] of row.entries()) {\n if (mapDates && rowColValue instanceof Date) {\n rowColValue = mapDates(rowColValue);\n }\n\n let rowColValueEscaped = escapeHtml(rowColValue);\n if(colNamesToMap[index]){\n html += `${mapValues[colNamesToMap[index]](rowColValueEscaped)}`;\n continue;\n }\n html += `${rowColValueEscaped}`\n }\n html += '';\n }\n\n if (pages > 1){\n html += ``;\n let pageNumber = 1;\n const prevPage = (currentPage === 1) ? 1 : (currentPage - 1);\n const nextPage = (currentPage === pages) ? pages : (currentPage + 1);\n if (config.arrows){\n html += `«`;\n }\n while (pageNumber <= pages){\n html += `${pageNumber}`;\n pageNumber++;\n }\n if (config.arrows){\n html += `»`;\n }\n html += '';\n }\n\n return html;\n}\n\nfunction _generateTableHeader(datavizInstance, dataset) {\n let html = '';\n let fieldNumber = -1;\n const tableConfig = datavizInstance.config.table;\n const columnNames =\n (tableConfig && tableConfig.columns)\n || dataset[0];\n for (let colName of columnNames) {\n let colNameEscaped = escapeHtml(colName);\n fieldNumber +=1;\n html += `${colNameEscaped}`;\n }\n return html;\n}\n\n\n const render = function() {\n const dataset = this.dataset.matrix;\n\n const el = this.el();\n const theme = this.config.theme;\n const datavizInstance = this;\n\n let html = '';\n\n const isEmpty = dataset.length === 1 && dataset[0].length === 0;\n if (isEmpty) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n // Open wrapper\n html += `
`;\n\n // Static, scrollable table\n html += ``;\n html += '';\n html += '';\n html += _generateTableHeader(datavizInstance, dataset);\n html += '';\n html += '';\n // Table data\n html += '';\n html += _generateTableRows(datavizInstance, dataset);\n html += '';\n html += '
';\n/* */\n // Close wrapper\n html += '
';\n\n // Inject HTML string\n el.querySelector(`.${theme}-rendering`).innerHTML = html;\n\n el\n .querySelectorAll(`.${theme}-rendering th`)\n .forEach((item) => {\n item.addEventListener('click', (event) => {\n let sortOrder = event.target.getAttribute('order') || 'asc';\n let fieldNumber = event.target.getAttribute('fieldNumber');\n let checker = function (a, b) {\n let sortOrderNumber = (sortOrder === 'asc') ? 1 : -1;\n\n if (typeof a[fieldNumber] === 'string') {\n let nameA = a[fieldNumber].toUpperCase(); // ignore upper and lowercase\n let nameB = b[fieldNumber].toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1 * sortOrderNumber;\n }\n if (nameA > nameB) {\n return 1* sortOrderNumber;\n }\n\n // names must be equal\n return 0;\n }\n return (a[fieldNumber] - b[fieldNumber]) * sortOrderNumber;\n };\n\n if (sortOrder === 'asc') {\n sortOrder = 'desc';\n } else {\n sortOrder = 'asc'\n }\n event.target.setAttribute('order', sortOrder);\n\n const first = this.dataset.matrix.shift();\n this.dataset.matrix.sort(checker);\n this.dataset.matrix.unshift(first);\n\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n });\n });\n\n\n const attachBtnEventListeners = () => {\n el.querySelectorAll('.btn').forEach(btn => {\n btn.addEventListener('click', (event) => {\n currentPage = parseInt(event.target.getAttribute('data-page'));\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n }, true);\n });\n };\n\n attachBtnEventListeners(datavizInstance, el, theme);\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const tableClass = `.${theme}-table-dataset`;\n document.querySelector(tableClass)\n .addEventListener('click', (e) => {\n const { nodeName, innerText } = e.target;\n if (nodeName === 'TD') {\n copyToClipboard(innerText, e);\n }\n });\n }\n };\n\n\n\nconst update = function(){\n // no special update handling\n this.render();\n };\n\nconst destroy= function(){};\n\nexport default { render, update, destroy };\n","export default {\n render: function(){\n let html = '';\n const artifacts = this.view._artifacts.spinner = {};\n\n // Build DOM element\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n this.el().innerHTML = html;\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts.spinner) {\n if (this.view._artifacts.spinner.interval) {\n clearInterval(this.view._artifacts.spinner.interval);\n }\n this.view._artifacts.spinner.radius = 0;\n try {\n delete this.view._artifacts.spinner;\n }\n catch (e) {\n this.view._artifacts.spinner = undefined;\n }\n }\n this.el().innerHTML = '';\n }\n};\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 30, left: 200 };\n let yMarginElement = 0;\n if(marginBetweenSteps){\n yMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if (countingMethod === \"relative\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth =\n (prevElemWidth * d[1]) / matrix[i][1]);\n percent = ((d[1] / matrix[i][1]) * 100).toFixed(decimals);\n }\n if (countingMethod === \"absolute\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth = (svgWidth * d[1]) / matrix[1][1]);\n percent = ((d[1] / matrix[1][1]) * 100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n \n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('x2', (d) => { return d.points[1].x + margin.left; })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('x2', polygons[polygons.length-1].points[2].x + margin.left)\n .attr('y2', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2)\n + (margin.left * 0.9);\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 16\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 12\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top;\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement - 5;\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 60, left: 200 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n const yMarginElement = elemHeight * 0.3;\n const shadowCut = (yMarginElement * 2.5);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = prevElemWidth * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = svgWidth * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[3].x,\n y: d.points[3].y\n },\n {\n x: d.points[2].x,\n y: d.points[2].y\n },\n {\n x: effect3d === 'left'\n ? d.points[2].x\n : d.points[2].x - shadowCut < svgWidth/2\n ? svgWidth/2 + 5\n : d.points[2].x - shadowCut,\n y: effect3d === 'left'\n ? d.points[2].y\n : d.points[2].y + (yMarginElement/1.5)\n },\n {\n x: effect3d === 'right'\n ? d.points[3].x\n : d.points[3].x + shadowCut > svgWidth/2\n ? svgWidth/2 - 5\n : d.points[3].x + shadowCut,\n y: effect3d === 'right'\n ? d.points[3].y\n : d.points[3].y + (yMarginElement/1.5)\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('x2', (d, i) => {\n if(i === 0){\n return d.points[1].x + margin.left;\n }\n return d.points[1].x + margin.left - shadowCut;\n })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('x2', polygons[polygons.length-1].points[2].x\n + margin.left - shadowCut )\n .attr('y2', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5 + (yMarginElement/4)\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2) + 130;\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 18\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 3\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n let xMarginElement = 0;\n if(marginBetweenSteps){\n xMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined'\n || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left - (xMarginElement/2))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/2))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight + (margin.bottom * 0.5) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', (d) => {\n if(d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) > svgHeight + margin.bottom - 40 + margin.top){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n return d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n const xMarginElement = elemWidth * 0.3;\n const shadowCut = (xMarginElement/1.5);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[0].x,\n y: d.points[0].y\n },\n {\n x: d.points[1].x,\n y: d.points[1].y\n },\n {\n x: effect3d === 'top'\n ? d.points[1].x\n : d.points[1].x - shadowCut,\n y: effect3d === 'top'\n ? d.points[1].y\n : d.points[1].y - xMarginElement < svgHeight/2\n ? svgHeight/2 + 5\n : d.points[1].y - xMarginElement\n },\n {\n x: effect3d === 'bottom'\n ? d.points[0].x\n : d.points[0].x - shadowCut,\n y: effect3d === 'bottom'\n ? d.points[0].y\n : d.points[0].y + xMarginElement > svgHeight/2\n ? svgHeight/2 - 5\n : d.points[0].y + xMarginElement\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left + (xMarginElement/4))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/4))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', svgHeight + (margin.bottom * 0.4) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', (d) => {\n if(d.points[2].y + (elemWidth/4) >\n svgHeight + margin.bottom - 40){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n if(d.points[2].y + (elemWidth/4) < d.points[1].y){\n return d.points[1].y + 20 + margin.top;\n }\n return d.points[2].y + (elemWidth/4) + 10 + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","/* eslint-env browser */\nimport c3 from 'c3';\nimport { each } from '../../utils/each';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class MetricCombo {\n render() {\n const {\n container,\n metricResults,\n title,\n showTitle,\n subtitle,\n tooltip,\n utils,\n } = this.config;\n\n const colors = ['#c3c4cc'];\n const columns = [];\n columns[0] = [];\n each(this.dataset.selectColumn(0), (c, i) => {\n let cell;\n if (i > 0) {\n cell = new Date(c);\n }\n columns[0][i] = cell;\n });\n columns[0][0] = 'x';\n\n each(this.data()[0], (c, i) => {\n if (i > 0) {\n columns.push(this.dataset.selectColumn(i));\n }\n });\n\n const prevResult = (metricResults && metricResults.previous && metricResults.previous.result)\n || 0;\n const currResult = (metricResults && metricResults.current && metricResults.current.result)\n || 0;\n const count = currResult - prevResult;\n const percentDifference = prevResult === 0 ? '-' : prettyNumber(Math.round((count / prevResult) * 100));\n let labelClass = 'keen-dataviz-metric-green';\n let iconClass = 'arrow-green';\n\n if (percentDifference < 0) {\n labelClass = 'keen-dataviz-metric-red';\n iconClass = 'arrow-red';\n }\n\n const containerTitle = (showTitle && title) ? `
${title}
` : '';\n const containerSubtitle = subtitle ? `
${subtitle}
` : '';\n const containerElement = document.querySelector(container);\n containerElement.innerHTML = `\n
\n
\n
\n ${containerTitle}\n ${containerSubtitle}\n
${percentDifference} %
\n
${prettyNumber(count)}
\n
\n
\n
\n
\n
\n
`;\n const chartRoot = containerElement.querySelector('.c3-chart');\n const chart = c3.generate({\n bindto: chartRoot,\n color: {\n pattern: colors,\n },\n title,\n legend: {\n show: false,\n },\n data: {\n x: 'x',\n columns,\n type: 'area-spline',\n selection: {\n draggable: false,\n enabled: true,\n multiple: true,\n },\n },\n point: {\n r: 0,\n focus: {\n expand: {\n r: 5,\n enabled: true,\n },\n },\n select: {\n r: 5,\n enabled: true,\n },\n },\n axis: {\n y: {\n show: false,\n },\n x: {\n show: false,\n },\n },\n grid: {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n },\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: -4,\n },\n tooltip,\n });\n\n if (utils && utils.clickToCopyToClipboard) {\n const currentCount = document.querySelector('.current-count').innerText;\n document.querySelector('.keen-dataviz-metric-combo')\n .addEventListener('click', e => copyToClipboard(currentCount, e));\n }\n }\n\n update() {\n this.destroy();\n this.render();\n }\n\n destroy() {\n const { container } = this.config;\n const containerElement = document.querySelector(container);\n const chartContainer = containerElement.querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport Rangeable from 'rangeable';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Heatmap {\n render() {\n const {\n colors,\n container,\n heatmap: { showSlider, simpleTooltip },\n } = this.config;\n const {\n matrix,\n meta,\n } = this.dataset;\n const margin = {\n top: 10,\n right: 10,\n bottom: 50,\n left: 50,\n };\n const baseWidth = 600;\n const baseHeight = 600;\n const heatmapContainer = d3.select(container);\n const containerWidth = parseInt(heatmapContainer.style('width'), 10) || baseWidth;\n const containerHeight = parseInt(heatmapContainer.style('height'), 10) || baseHeight;\n const chartContainer = this.el().querySelector('.c3-chart');\n const svgWidth = containerWidth - margin.right - margin.left;\n const svgHeight = containerHeight - margin.top - margin.bottom;\n\n const xLabel = new Set();\n const yLabel = new Set();\n\n const formatData = () => {\n const dateFormat = d3.timeFormat('%B %d');\n const timeFormat = d3.timeFormat('%H:%M');\n const arr = [];\n matrix.forEach((element) => {\n if (meta.type === 'heatmap') {\n if (typeof element[0][2] === 'number') {\n const obj = {\n x: element[0][0],\n y: element[0][1],\n value: element[0][2],\n };\n arr.push(obj);\n }\n } else {\n const timestamp = Date.parse(element[0]);\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(timestamp)) {\n const obj = {\n x: dateFormat(new Date(element[0])),\n y: timeFormat(new Date(element[0])),\n value: element[1],\n };\n arr.push(obj);\n }\n }\n });\n return arr;\n };\n\n const formattedData = formatData();\n\n formattedData.forEach((item) => {\n xLabel.add(item.x);\n yLabel.add(item.y);\n });\n\n const refValue = formattedData[0].value;\n const minRange = formattedData\n .reduce((min, curr) => (curr.value < min ? curr.value : min), refValue);\n const maxRange = formattedData\n .reduce((max, curr) => (curr.value > max ? curr.value : max), refValue);\n\n const getColor = () => {\n const defaultColor = '#00BBDE';\n const baseColor = colors[0];\n let rgb = d3.rgb(defaultColor);\n if (d3.color(baseColor)) {\n rgb = d3.rgb(baseColor);\n }\n return rgb;\n };\n\n const getColorAlpha = d3.scaleLinear()\n .domain([0, d3.max(formattedData, d => d.value)])\n .range([0, 1]);\n\n const convertRGBAtoRGB = (color, bg = [255, 255, 255]) => {\n const opacity = color[3];\n\n return [Math.floor(((1 - opacity) * bg[0]) + (opacity * color[0]) + 0.5),\n Math.floor(((1 - opacity) * bg[1]) + (opacity * color[1]) + 0.5),\n Math.floor(((1 - opacity) * bg[2]) + (opacity * color[2]) + 0.5)];\n };\n\n const getTileColor = (value) => {\n const alpha = getColorAlpha(value);\n const rgb = getColor();\n const solidColor = convertRGBAtoRGB([rgb.r, rgb.g, rgb.b, alpha]);\n const color = `rgb(${solidColor[0]}, ${solidColor[1]}, ${solidColor[2]})`;\n return color;\n };\n\n const svg = d3.select(chartContainer)\n .append('svg')\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${containerWidth} ${containerHeight}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr(\n 'transform',\n `translate(${margin.left},${margin.top})`,\n );\n\n if (showSlider) {\n // eslint-disable-next-line no-unused-vars\n const rangeableInput = d3.select(container)\n .append('input')\n .attr('type', 'range')\n .attr('class', 'keen-dataviz-slider');\n\n const handleSliderChange = (data) => {\n const rects = svg.selectAll('rect');\n const [min, max] = data;\n\n rects.each((d, i, nodes) => {\n d3.select(nodes[i])\n .style('visibility', () => ((d.value > max || d.value < min) ? 'hidden' : 'visible'));\n });\n };\n\n // eslint-disable-next-line no-unused-vars\n const rangeable = new Rangeable('.keen-dataviz-slider', {\n multiple: true,\n min: minRange,\n max: maxRange,\n value: [minRange, maxRange],\n onChange: data => handleSliderChange(data),\n });\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${getColor()};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${getColor()} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${getColor()};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement('style');\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector('script');\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const xLabelBase = 5;\n const yLabelBase = 10;\n\n const getAxisLabelRatio = (base, labelSize) => Math.floor(labelSize / base) + 1;\n const xAxis = d3.scaleBand()\n .range([0, svgWidth])\n .domain([...xLabel])\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .attr('transform', `translate(0, ${svgHeight})`)\n .call(d3.axisBottom(xAxis).tickSize(0))\n .selectAll('text')\n .attr('dy', '1em')\n .filter((d, i) => i % getAxisLabelRatio(xLabelBase, xLabel.size))\n .style('display', 'none');\n\n const yAxis = d3.scaleBand()\n .range([svgHeight, 0])\n .domain([...yLabel].sort())\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .call(d3.axisLeft(yAxis).tickSize(0))\n .selectAll('text')\n .filter((d, i) => i % getAxisLabelRatio(yLabelBase, yLabel.size))\n .style('display', 'none');\n\n const chartTooltip = d3.select(container)\n .append('div')\n .attr('class', 'keen-dataviz-tooltip')\n .style('opacity', 0)\n .style('background-color', 'white')\n .style('border', `2px solid ${getColor().toString()}`)\n .style('font-size', '14px')\n .style('padding', '2px 8px')\n .style('box-shadow', '2px 2px 4px rgba(0,0,0,0.25')\n .style('display', 'none')\n .style('position', 'fixed');\n\n const handleMouseOver = () => {\n d3.select(d3.event.target)\n .raise()\n .style('transition', 'transform 150ms ease-out')\n .style('outline', `1px solid ${getColor()}`)\n .style('transform', 'translate(0px, -4px)');\n\n chartTooltip\n .style('opacity', 1)\n .style('display', 'block');\n };\n\n const handleMouseMove = (d) => {\n let tooltipContent = `\n \n value:\n ${d.value}\n `;\n if (!simpleTooltip) {\n tooltipContent = `\n \n xAxis:\n ${d.x}\n \n \n yAxis:\n ${d.y}\n \n ${tooltipContent}\n `;\n }\n chartTooltip\n .html(`\n \n ${tooltipContent}\n
\n `)\n .style('left', `${d3.event.clientX + 10}px`)\n .style('top', `${d3.event.clientY + 10}px`);\n };\n\n const handleMouseLeave = () => {\n d3.select(d3.event.target)\n .style('outline', 'none')\n .style('transform', 'none');\n\n chartTooltip\n .style('opacity', 0)\n .style('display', 'none');\n };\n\n const handleClick = d => copyToClipboard(d.value);\n\n svg.selectAll()\n .data(formattedData, d => `${d.x}:${d.y}`)\n .enter()\n .append('rect')\n .attr('x', d => xAxis(d.x))\n .attr('y', d => yAxis(d.y))\n .attr('width', xAxis.bandwidth())\n .attr('height', yAxis.bandwidth())\n .style('fill', d => getTileColor(d.value))\n .style('cursor', 'pointer')\n .on('mouseover', handleMouseOver)\n .on('mousemove', handleMouseMove)\n .on('mouseleave', handleMouseLeave)\n .on('click', handleClick);\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = this.el().querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from \"d3\";\nimport Rangeable from \"rangeable\";\nimport { prettyNumber } from \"../../utils/pretty-number\";\nimport copyToClipboard from \"../../utils/copy-to-clipboard\";\n\nexport default class Choropleth {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n utils,\n title,\n choropleth: {\n map,\n borders: { show, size, color },\n showSlider\n }\n } = this.config;\n const opts = this.config;\n const choroplethContainer = d3.select(container);\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n const width = Number(choroplethContainer.style(\"width\").slice(0, -2));\n const height = Number(choroplethContainer.style(\"height\").slice(0, -2));\n let heightChanges = 0;\n if (title) heightChanges += 31;\n if (showSlider) heightChanges += 20;\n const chart = chartContainer\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height - heightChanges);\n\n const onlyValues = matrix.slice(1).map(el => el[1]);\n let minVal = d3.min(onlyValues);\n const maxVal = d3.max(onlyValues);\n if(minVal === maxVal) minVal = 0;\n const lightColor = d3.hsl(colors[0]).brighter(1);\n lightColor.l = 0.95;\n const darkColor = colors[0];\n const ramp = d3\n .scaleLinear()\n .domain([minVal === undefined ? 0 : minVal, maxVal === undefined ? 0 : maxVal])\n .range([lightColor, darkColor]);\n\n d3.json(\n `https://cdn.jsdelivr.net/npm/keen-dataviz-maps@1.0.0/maps/${map}.json`\n ).then(data => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 5])\n .translateExtent([[0, 0], [width, height - 50]])\n .on(\"zoom\", zoomed);\n\n let projection;\n switch (map) {\n case \"world\":\n projection = d3.geoMercator().fitSize([width, height - 50], data);\n break;\n case \"us\":\n projection = d3\n .geoAlbersUsa()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n\n default:\n projection = d3\n .geoMercator()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n }\n\n const path = d3.geoPath().projection(projection);\n\n const usData = data.features.map(el => {\n const theOne = matrix.filter(d => d[0] === el.properties.name);\n if (theOne[0])\n return {\n ...el,\n properties: { ...el.properties, result: theOne[0][1] }\n };\n return {\n ...el,\n properties: { ...el.properties, result: 0 }\n };\n });\n\n if (showSlider) {\n const handleSliderChange = data => {\n const el = chart.selectAll(`.${elementName}`);\n const [min, max] = data;\n\n el.each((d, i, nodes) => {\n d3.select(nodes[i]).style(\"visibility\", () =>\n d.properties.result > max || d.properties.result < min\n ? \"hidden\"\n : \"visible\"\n );\n });\n };\n\n chartContainer\n .style(\"display\", \"flex\")\n .style(\"flex-direction\", \"column\")\n .style(\"justify-content\", \"center\");\n\n const rangeContainer = chartContainer\n .append(\"div\")\n .style(\"width\", \"95%\")\n .style(\"margin\", \"auto\");\n rangeContainer.append(\"input\").attr(\"id\", \"rangeSlider\");\n\n const rangeable = new Rangeable(\"#rangeSlider\", {\n type: \"double\",\n tooltips: true,\n min: 0,\n max: maxVal,\n onChange: data => handleSliderChange(data)\n });\n\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${colors[0]};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${colors[0]} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${colors[0]};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement(\"style\");\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector(\"script\");\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const elementName = map === \"world\" ? \"country\" : \"state\";\n\n chart\n .selectAll(\"path\")\n .data(usData)\n .enter()\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"class\", elementName)\n .attr(\n \"id\",\n d =>\n `${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .attr(\"cursor\", \"pointer\")\n .on(\"mouseover\", handleMouseOver)\n .on(\"mousemove\", handleMouseMove)\n .on(\"mouseout\", handleMouseOut);\n\n //borders\n if (show) {\n chart\n .selectAll(`.${elementName}`)\n .style(\"stroke\", color)\n .style(\"stroke-width\", size);\n }\n\n //tooltip\n const tooltip = d3\n .select(\".c3-chart\")\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"c3-tooltip-container\")\n .style(\"display\", \"none\")\n .style(\"position\", \"fixed\");\n\n //hover handling\n function handleMouseOver(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(1.2 * maxVal))\n .style(\"stroke-width\", 1.5 * size);\n\n tooltip.style(\"opacity\", 1).style(\"display\", \"block\");\n }\n\n function handleMouseMove(d) {\n let result = d.properties.result;\n if (\n (typeof opts[\"prettyNumber\"] === \"undefined\" ||\n opts[\"prettyNumber\"] === true) &&\n !isNaN(parseInt(d.properties.result))\n ) {\n result = prettyNumber(d.properties.result);\n }\n tooltip\n .html(\n `\n \n \n \n \n \n \n \n
${d.properties.name}
${result}
\n `\n )\n .style(\"left\", `${d3.event.clientX + 10}px`)\n .style(\"top\", `${d3.event.clientY + 10}px`);\n }\n function handleMouseOut(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .style(\"stroke-width\", size);\n\n tooltip.style(\"opacity\", 0).style(\"display\", \"none\");\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll(`.${elementName}`);\n\n label.on(\"click\", handleClickToCopy);\n\n function handleClickToCopy(data) {\n const {\n properties: { result }\n } = data;\n copyToClipboard(result, d3.event);\n }\n }\n function zoomed() {\n chart\n .selectAll(`.${elementName}`)\n .attr(\"transform\", d3.event.transform);\n }\n chart.call(zoom);\n chart.call(zoom).on(\"mousedown.zoom\", null);\n });\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n chartContainer.remove();\n }\n}\n","import copyToClipboard from './copy-to-clipboard';\n\nfunction removeClassWithTimeOut(element, className = 'copied', ms = 1000) {\n setTimeout(() => {\n element.classList.remove(className);\n }, ms);\n}\n\nfunction handleCopyToClipboard(event) {\n const { target, target: { nodeName } } = event;\n\n let value;\n if (nodeName === 'DD') {\n value = target.innerText;\n if (!target.classList.contains('copied')) {\n target.classList.add('copied');\n removeClassWithTimeOut(target);\n }\n }\n if (nodeName === 'DT') {\n value = target.nextSibling.innerText;\n if (!target.nextSibling.classList.contains('copied')) {\n target.nextSibling.classList.add('copied');\n removeClassWithTimeOut(target.nextSibling);\n }\n }\n\n copyToClipboard(value);\n}\n\nexport default function renderExecutionMetadata({\n element,\n data,\n} = {}) {\n const dataList = document.createElement('dl');\n dataList.classList = 'keen-dataviz-execution-meta';\n\n if (Object.keys(data).length) {\n Object.keys(data).forEach((item) => {\n const dt = document.createElement('dt');\n dt.innerText = item.replace(/_/g, ' ');\n dt.addEventListener('click', e => handleCopyToClipboard(e));\n\n const dd = document.createElement('dd');\n dd.innerText = data[item];\n dd.addEventListener('click', e => handleCopyToClipboard(e));\n\n dataList.append(dt);\n dataList.append(dd);\n });\n } else {\n dataList.innerText = 'No execution metadata available';\n }\n\n element.append(dataList);\n}\n","import autocollector from './autocollector';\nimport modern from './modern';\nimport dracula from './dracula';\n\nexport default {\n autocollector,\n modern,\n dracula,\n};","const palette = {\n colors: [\n '#5E77FF',\n '#9C60FE',\n '#F162FE',\n '#FD65B7',\n '#FD6768',\n '#FDB86A',\n '#F2FC6C',\n '#A5FC6E',\n '#71FB85',\n '#73FBD0',\n '#76DDFA',\n '#76f4fa',\n '#bb76fa',\n '#fa76bf'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#45B2E8',\n '#D9540D',\n '#2CAB72',\n '#2C4BAB',\n '#EDDD02',\n '#E84545',\n '#E845CE',\n '#5FCEC9',\n '#E89F45',\n '#28E43F',\n '#B765C0',\n '#458AE8',\n '#AB2C2C',\n '#AB2C75',\n '#27E5FF',\n '#7168F2',\n '#FF932B',\n '#855D00',\n '#ACE845',\n '#1C91B4'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#8be9fd',\n '#50fa7b',\n '#ffb86c',\n '#ff79c6',\n '#bd93f9',\n '#ff5555',\n '#f1fa8c',\n ]\n};\n\nexport default palette;"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./lib/utils/each.js","webpack:///./lib/utils/copy-to-clipboard.js","webpack:///external \"d3\"","webpack:///./lib/utils/pretty-number.js","webpack:///./lib/utils/escape-html.js","webpack:///./lib/utils/extend.js","webpack:///./lib/utils/svg-text-wrap.js","webpack:///(webpack)/buildin/global.js","webpack:///./lib/dataset/modifiers/append.js","webpack:///./lib/dataset/utils/create-null-list.js","webpack:///external \"c3\"","webpack:///./lib/utils/assert-date-string.js","webpack:///./lib/dataset/index.js","webpack:///./lib/dataset/utils/analyses.js","webpack:///./lib/dataset/utils/flatten.js","webpack:///./lib/utils/strip-html-tags.js","webpack:///./lib/utils/extend-deep.js","webpack:///./lib/utils/render-download-btn.js","webpack:///./lib/utils/export-svg.js","webpack:///./lib/utils/export-data.js","webpack:///./node_modules/rangeable/dist/rangeable.min.js","webpack:///./lib/browser.js","webpack:///./lib/index.js","webpack:///./lib/dataset/modifiers/delete.js","webpack:///./lib/dataset/modifiers/filter.js","webpack:///./lib/dataset/modifiers/insert.js","webpack:///./lib/dataset/modifiers/select.js","webpack:///./lib/dataset/modifiers/sort.js","webpack:///./lib/dataset/modifiers/update.js","webpack:///./lib/dataset/utils/parsers.js","webpack:///./lib/dataset/utils/object.js","webpack:///./lib/dataset/utils/create-extraction-keys.js","webpack:///./lib/data.js","webpack:///./lib/libraries/index.js","webpack:///./lib/libraries/c3/extensions/default-date-format.js","webpack:///./lib/libraries/c3/extensions/paginating-legend.js","webpack:///./lib/libraries/c3/extensions/tooltip-contents.js","webpack:///./lib/dataset/utils/calculate-range.js","webpack:///./lib/dataset/utils/calculate-percents.js","webpack:///./lib/libraries/default/message.js","webpack:///./lib/utils/download-results.js","webpack:///./node_modules/dom-to-image/src/dom-to-image.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./lib/libraries/default/metric.js","webpack:///./lib/libraries/default/table.js","webpack:///./lib/libraries/default/spinner.js","webpack:///./lib/libraries/default/funnel.js","webpack:///./lib/libraries/default/funnel-3d.js","webpack:///./lib/libraries/default/horizontal-funnel.js","webpack:///./lib/libraries/default/horizontal-funnel-3d.js","webpack:///./lib/libraries/default/metric-combo.js","webpack:///./lib/libraries/default/heatmap.js","webpack:///./lib/libraries/default/choropleth.js","webpack:///./lib/utils/render-execution-metadata.js","webpack:///./lib/palettes/index.js","webpack:///./lib/palettes/autocollector.js","webpack:///./lib/palettes/modern.js","webpack:///./lib/palettes/dracula.js"],"names":["root","factory","exports","module","require","define","amd","a","i","window","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__10__","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","each","cb","Array","length","event","placeholder","document","createElement","body","appendChild","select","execCommand","removeChild","notification","style","padding","backgroundColor","fontSize","position","top","pageY","left","pageX","zIndex","opacity","transition","innerText","addEventListener","e","tooltip","stickTooltip","setTimeout","prettyNumber","input","sciNo","Number","toPrecision","prefix","suffixes","String","Math","abs","recurse","iteration","split","rhs","charAt","numNumerals","escapeHtml","string","escape","str","match","matchHtmlRegExp","exec","html","index","lastIndex","charCodeAt","substring","extend","target","arguments","prop","textWrap","text","width","d3","this","words","reverse","word","line","lineNumber","x","attr","y","tspan","append","dy","pop","push","join","node","getComputedTextLength","g","Function","appendColumn","appendRow","_createNullList","_each","self","label","slice","undefined","matrix","row","cell","concat","_createNullList2","default","newRow","col","selectColumn","len","list","testObject","getTime","isNaN","testString","test","_typeof","del","filter","insert","sort","update","_extend","Dataset","config","meta","type","data","arr","set","coords","Error","colIndex","indexOf","rowIndex","colResult","rowResult","selectRow","analyses","parser","_parsers2","average","start","end","sum","val","parseFloat","maximum","nums","max","apply","minimum","min","getColumnAverage","getRowAverage","getColumnSum","getRowSum","getColumnMaximum","getRowMaximum","getColumnMinimum","getRowMinimum","getColumnLabel","getRowIndex","flatten","ob","toReturn","flatObject","stripHtmlTags","inputString","replace","extendDeep","_ref","element","_ref$label","_ref$type","_toConsumableArray","parentNode","children","find","child","className","button","_downloadResults2","insertBefore","nextSibling","_downloadResults","obj","quality","bgcolor","domtoimage","toBlob","then","blob","_fileSaver","saveAs","_domToImage","supportedFormats","format","toLowerCase","includes","fileFormat","content","encodeURIComponent","JSON","stringify","csvContent","forEach","j","generateCsvContent","htmlElement","setAttribute","fileName","click","global","q","u","classList","add","v","plugins","querySelector","assign","tooltips","updateThrottle","formatTooltip","classes","container","vertical","progress","handle","track","multiple","disabled","visible","mouseAxis","trackSize","trackPos","lastPos","double","isArray","touch","DocumentTouch","version","init","onInit","rangeable","step","axis","values","defaultValues","defaultValue","render","initialised","w","z","tabIndex","A","C","D","controls","locked","size","nodes","buffer","B","E","limits","setLimits","reset","setValue","onEnd","setValueFromPosition","getLimits","touches","rects","contains","ceil","startValue","activeHandle","limit","preventDefault","getValue","onStart","recalculate","getHandle","events","move","stop","stopValue","remove","removeEventListener","dispatchEvent","Event","keydown","stepUp","stepDown","activeElement","toFixed","accuracy","getBoundingClientRect","nativeEvent","textContent","right","bottom","toggle","setPosition","onChange","native","getPosition","closest","enable","disable","removeAttribute","scroll","resize","form","unbind","destroy","replaceChild","_index","Dataviz","extendKeenGlobalObject","env","KeenDataviz","KeenDataset","Keen","keenGlobals","webpackKeenGlobals","_dataset","_stripHtmlTags","_extendDeep","_this","options","c3","defaultOptions","showDeprecationWarnings","showLoadingSpinner","containerElement","title","showTitle","subtitle","notes","theme","colors","colorMapping","ui","executionMetadata","utils","clickToCopyToClipboard","indexBy","labels","labelMapping","labelMappingRegExp","errorMapping","showErrorMessages","library","sortGroups","sortIntervals","results","stacked","dateFormat","legend","show","alignment","textMaxLength","pagination","offset","pointer","color","point","focus","expand","enabled","sensitivity","horizontal","order","selection","draggable","onselected","view","_artifacts","selected","reduce","prev","curr","_copyToClipboard2","grid","partialIntervalIndicator","timezone","table","schema","renderOnVisible","funnel","lines","resultValues","percents","countingMethod","decimals","marginBetweenElements","hover","effect3d","minimalSize","react","range","sparkline","choropleth","map","borders","showSlider","heatmap","_extends","palette","palettes","console","log","convertChartTypes","stacking","el","pattern","dataset","_prepared","_rendered","visuals","prepare","firstVisibilityState","visibilityState","callback","setLabels","datavizInstance","_assertDateString2","updateRow","updateColumn","mapLabelsExec","valueAfterMatching","regExpAndLabel","mapLabels","labelMappingDimension","sortColumns","sortRows","areachart","barchart","columnchart","linechart","piechart","domReady","fn","readyState","DOMContentLoaded","testDom","libraries","_libraries2","register","actions","method","nodeName","visual","attributes","chartOptions","innerHTML","height","num","message","loader","spinner","_this2","firstResult","query","interval","timeframe","timeframes","resultItem","resultTimeframe","timeframeItem","msg","error","deleteColumn","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","iterator","next","done","result","event_collection","analysis_type","ds2","err","return","keys","returnValue","renderAsPromise","Promise","resolve","reject","customCallback","onrendered","shouldRenderExecutionMetadata","execution_metadata","shouldRenderDownloadBtn","buttons","download","mappedMsg","chart100percentWide","rangeChart","align","legendItemsAlign","buildDomWrapper","_renderDownloadBtn2","_renderExecutionMetadata2","IntersectionObserver","observer","isIntersecting","observe","hidden","visibilityChange","msHidden","webkitHidden","load","once","bool","exportImage","_ref2","_ref2$quality","_ref2$bgcolor","_exportSvg2","exportData","_exportData2","chartType","parseRawData","parseRequest","initialize","pkg","splice","deleteRow","filterColumns","clone","selectedColumn","ri","filterRows","insertColumn","insertRow","_append","comp","head","cols","analysesUtilMethods","b","op","_analyses","lib","parsers","_flatten","_object","_createExtractionKeys","metric","res","record","grouped-metric","grouped-interval","group","double-grouped-metric","rowLabel","double-grouped-interval","steps","extraction","datasetExtraction","datasetKeys","createExtractionKeys","names","from","tableConfig","resultKeys","keyName","columns","iNames","valueAtDeepKey","heatmap-axis","heatmapDataset","objKeys","is","Set","response","selectedParser","parserArgs","metadata","filters","group_by","display_name","analysis","toUpperCase","getDefaultTitle","visualization","chart_type","getDefaultType","Date","timer","onresize","attachEvent","bindResizeListener","clearTimeout","delay","chart","c3Chart","parentWidth","offsetWidth","nextSiblingWidth","previousSibling","types","Funnel","funnel-3d","Funnel3d","horizontal-funnel","HorizontalFunnel","horizontal-funnel-3d","HorizontalFunnel3d","metric-combo","MetricCombo","Heatmap","Choropleth","getPaddings","paddingName","parseInt","getComputedStyle","ENFORCED_OPTIONS","bindto","renderingElement","offsetHeight","titleElement","subtitleElement","notesElement","DEFAULT_OPTIONS","sumArray","_calculatePercents","calculateSumForPercents","calculatePercents","tick","_calculateRange2","clearOnRender","_datasetMeta$type","spliceFrom","removeLegend","rotated","_defaultDateFormat2","culling","groups","categories","legendElement","partialResultsRegion","class","regions","contents","c3TooltipContents","ratio","id","valueFormatted","scope","c3options","hide","generate","c3PaginatingLegend","onLegendRendered","onPaginated","flush","defineC3","startDate","endDate","timeDiff","months","ms","date","getMonth","getFullYear","getDate","domNode","legendConfig","round","total","dataColumnsSorted","column","columnData","item","paginateHorizontalLeftElement","legendItemsElement","paginateVerticalElement","paginateHorizontalRightElement","paginateData","labelShortened","legendItem","chartPartId","legendItemColorSample","prepend","tooltipElement","revert","isHidden","arrowUp","arrowDown","paginate","direction","diff","floor","clearSelectedText","empty","getSelection","removeAllRanges","_assertDateString","defaultTitleFormat","defaultValueFormat","nameFormat","tooltip_format_name","titleFormat","tooltip_format_title","valueFormat","tooltip_format_value","CLASS","_escapeHtml","levelColor","tooltipName","outer","inner","titleContainer","subtitleContainer","notesContainer","currentTarget","previousElementSibling","util","parseExtension","mimeType","url","extension","WOFF","woff","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","svg","dataAsUrl","isDataUrl","search","canvasToBlob","canvas","binaryString","atob","toDataURL","binaryArray","Uint8Array","Blob","resolveUrl","baseUrl","doc","implementation","createHTMLDocument","base","href","getAndEncode","TIMEOUT","impl","cacheBust","request","XMLHttpRequest","onreadystatechange","status","fail","encoder","FileReader","onloadend","readAsDataURL","ontimeout","responseType","timeout","open","send","imagePlaceholder","uid","random","pow","toString","arg","asArray","arrayLike","array","escapeXhtml","makeImage","uri","image","Image","onload","onerror","src","leftBorder","px","rightBorder","scrollWidth","topBorder","bottomBorder","scrollHeight","styleProperty","getPropertyValue","newUtil","inliner","URL_REGEX","inlineAll","shouldProcess","readUrls","urls","inline","dataUrl","RegExp","urlAsRegex","newInliner","fontFaces","resolveAll","readAll","webFonts","all","webFont","cssStrings","styleSheets","cssRules","sheet","rule","CSSRule","FONT_FACE_RULE","rules","newWebFont","webFontRule","parentStyleSheet","cssText","newFontFaces","images","Element","background","inlined","setProperty","getPropertyPriority","inlineBackground","HTMLImageElement","newImage","childNodes","newImages","toSvg","toPng","draw","toJpeg","toPixelData","getContext","getImageData","copyOptions","HTMLCanvasElement","cloneNode","original","parent","childClone","cloneChildrenInOrder","cloneChildren","source","copyProperties","styleElement","selector","formatCssText","formatCssProperties","createTextNode","formatPseudoElementStyle","clonePseudoElement","HTMLTextAreaElement","HTMLInputElement","SVGElement","SVGRectElement","attribute","getAttribute","processClone","embedFonts","inlineImages","XMLSerializer","serializeToString","xhtml","foreignObject","makeSvgDataUri","ctx","fillStyle","fillRect","newCanvas","drawImage","makeNodeCopy","copyStyle","cloneStyle","clonePseudoElements","formatProperty","copyUserInput","fixSvg","styleNode","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","MouseEvent","createEvent","initMouseEvent","f","HTMLAnchorElement","h","URL","webkitURL","rel","origin","location","createObjectURL","revokeObjectURL","navigator","msSaveOrOpenBlob","autoBom","warn","HTMLElement","safari","userAgent","k","_prettyNumber","_copyToClipboard","opts","prevValue","suffix","formattedNum","flexDifferenceStyle","resultDifference","differenceStyle","smallerValue","_config","previousResults","isExtraction","comparedProp","formattedResult","itemProp","acc","formatExtractionData","resultClassName","previousResultsClassName","currentPage","_generateTableRows","customConfig","page","arrows","datasetPaginated","pages","columnsArray","colNamesToMap","_datavizInstance$conf","mapValues","mapDates","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","entries","_slicedToArray","rowColValue","rowColValueEscaped","pageNumber","prevPage","nextPage","fieldNumber","columnNames","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","colName","colNameEscaped","_generateTableHeader","querySelectorAll","sortOrder","first","shift","sortOrderNumber","nameA","nameB","unshift","attachBtnEventListeners","btn","tableClass","_e$target","clearInterval","radius","_svgTextWrap","_config$funnel","_config$funnel$percen","marginBetweenSteps","margin","yMarginElement","funnelContainer","svgWidth","svgHeight","elemHeight","prevElemWidth","percent","minimalSizeStep","polygons","newPoints","points","selectAll","enter","handleMouseOver","polygonsHover","labelHover","thisLabel","handleMouseOut","on","shadowCut","polygonsShadows","polygons3d","rgb","darker","xMarginElement","elemWidth","prevElemHeight","metricResults","prevResult","previous","count","current","percentDifference","labelClass","iconClass","containerTitle","containerSubtitle","chartRoot","currentCount","timeFormat","_config$heatmap","simpleTooltip","heatmapContainer","containerWidth","containerHeight","chartContainer","xLabel","yLabel","formattedData","timestamp","parse","refValue","minRange","maxRange","getColor","baseColor","getColorAlpha","scaleLinear","domain","getTileColor","alpha","solidColor","bg","convertRGBAtoRGB","Rangeable","_data","handleSliderChange","containerToString","customStyle","scriptRef","getAxisLabelRatio","labelSize","xAxis","scaleBand","axisBottom","tickSize","yAxis","axisLeft","chartTooltip","bandwidth","raise","tooltipContent","clientX","clientY","_config$choropleth","_config$choropleth$bo","choroplethContainer","heightChanges","onlyValues","minVal","maxVal","lightColor","hsl","brighter","darkColor","ramp","json","zoom","scaleExtent","translateExtent","elementName","transform","projection","geoMercator","fitSize","geoAlbersUsa","scale","path","geoPath","usData","features","theOne","properties","dataList","dt","handleCopyToClipboard","dd","removeClassWithTimeOut","autocollector","modern","dracula"],"mappings":"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","file":"keen-dataviz.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"d3\"), require(\"c3\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"d3\", \"c3\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"d3\"), require(\"c3\")) : factory(root[\"d3\"], root[\"c3\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__10__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 21);\n","export function each(o, cb, s) {\n var n;\n if (!o) {\n return 0;\n }\n s = !s ? o : s;\n if (o instanceof Array) {\n // Indexed arrays, needed for Safari\n for (n = 0; n < o.length; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n // Hashtables\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false){\n return 0;\n }\n }\n }\n }\n return 1;\n}\n","function stickTooltip(event, tooltip) {\n tooltip.style.opacity = 0;\n tooltip.style.top = `${event.pageY}px`;\n tooltip.style.left = `${event.pageX + 10}px`;\n}\n\nexport default function copyToClipboard(value, event) {\n const placeholder = document.createElement('input');\n placeholder.value = value;\n document.body.appendChild(placeholder);\n placeholder.select();\n document.execCommand('copy');\n document.body.removeChild(placeholder);\n\n if (event) {\n const notification = document.createElement('div');\n notification.style.padding = '5px 10px';\n notification.style.backgroundColor = '#ffffff';\n notification.style.fontSize = '12px';\n notification.style.position = 'absolute';\n notification.style.top = `${event.pageY}px`;\n notification.style.left = `${event.pageX + 10}px`;\n notification.style.zIndex = '999';\n notification.style.opacity = 1;\n notification.style.transition = 'opacity 1s ease';\n notification.innerText = 'copied!';\n\n document.body.appendChild(notification);\n document.addEventListener('mousemove', e => stickTooltip(e, notification));\n\n setTimeout(() => {\n notification.style.opacity = 1;\n document.body.removeChild(notification);\n }, 1000);\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","export function prettyNumber(input) {\n // If it has 3 or fewer sig figs already, just return the number.\n var input = Number(input),\n sciNo = input.toPrecision(3),\n prefix = '',\n suffixes = ['', 'k', 'M', 'B', 'T'];\n\n if (Number(sciNo) == input && String(input).length <= 4) {\n return String(input);\n }\n\n if (Math.abs(input) >= 1000000000000000) {\n return sciNo;\n }\n\n if (input >= 1 || input <= -1) {\n if (input < 0){\n //Pull off the negative side and stash that.\n input = -input;\n prefix = '-';\n }\n return prefix + recurse(input, 0);\n }\n else {\n return input.toPrecision(3);\n }\n\n function recurse(input, iteration) {\n var input = String(input);\n var split = input.split('.');\n // If there's a dot\n if (split.length > 1) {\n // Keep the left hand side only\n input = split[0];\n var rhs = split[1];\n // If the left-hand side is too short, pad until it has 3 digits\n if (input.length == 2 && rhs.length > 0) {\n // Pad with right-hand side if possible\n if (rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n else if (input.length == 1 && rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n // Pad with right-hand side if possible\n if (rhs.length > 1) {\n input += rhs.charAt(1);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n }\n var numNumerals = input.length;\n // if it has a period, then numNumerals is 1 smaller than the string length:\n if (input.split('.').length > 1) {\n numNumerals--;\n }\n if (numNumerals <= 3) {\n return String(input) + suffixes[iteration];\n }\n else {\n return recurse(Number(input) / 1000, iteration + 1);\n }\n }\n}\n","const matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nexport function escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n for (var prop in arguments[i]){\n target[prop] = arguments[i][prop];\n }\n }\n return target;\n}\n","import * as d3 from 'd3';\n\nexport function textWrap(text, width) {\n text.each(function () {\n let text = d3.select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.1, // ems\n x = text.attr(\"x\"),\n y = text.attr(\"y\"),\n dy = 0, //parseFloat(text.attr(\"dy\")),\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\");\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n .text(word);\n }\n }\n });\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import createNullList from '../utils/create-null-list';\nimport { each } from '../../utils/each';\n\nexport function appendColumn(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n self.matrix[0].push(label);\n each(self.matrix, function(row, i) {\n let cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].push(cell);\n }\n });\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat(createNullList(self.matrix.length - 1 - input.length));\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String(self.matrix.length));\n }\n });\n }\n\n self.matrix[0].push(label);\n each(input, function(value, i){\n self.matrix[i+1][self.matrix[0].length-1] = value;\n });\n\n }\n\n return self;\n}\n\nexport function appendRow(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n const newRow = [];\n\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i){\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.push(newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length));\n }\n });\n }\n\n self.matrix.push(newRow.concat(input));\n }\n\n return self;\n}\n","export default function (len) {\n const list = [];\n for (let i = 0; i < len; i++) {\n list.push(null);\n }\n return list;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","export function testObject(input) {\n if (input !== null && typeof input.getTime === 'function' && !isNaN(input.getTime())) {\n return true;\n }\n return false;\n}\n\nexport function testString(input) {\n const ISO_8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n return ISO_8601.test(input);\n}\n\nexport default function (input) {\n if (typeof input === 'object') {\n return testObject(input);\n } else if (typeof input === 'string') {\n return testString(input);\n }\n return false;\n}\n","// Modifiers\nimport * as append from './modifiers/append';\nimport * as del from './modifiers/delete';\nimport * as filter from './modifiers/filter';\nimport * as insert from './modifiers/insert';\nimport * as select from './modifiers/select';\nimport * as sort from './modifiers/sort';\nimport * as update from './modifiers/update';\n\n// Utils\nimport analyses from './utils/analyses';\nimport { extend } from '../utils/extend';\nimport parsers from './utils/parsers';\n\nexport const Dataset = function (config = {}) {\n if (this instanceof Dataset === false) {\n return new Dataset(config);\n }\n\n this.matrix = [\n ['Index']\n ];\n this.meta = {\n type: undefined\n };\n this.config = config;\n}\n\nDataset.prototype.data = function (arr) {\n if (!arguments.length) return this.matrix;\n this.matrix = (arr instanceof Array ? arr : null);\n return this;\n};\n\nDataset.prototype.set = function (coords, value) {\n if (arguments.length < 2 || coords.length < 2) {\n throw Error('Incorrect arguments provided for #set method');\n }\n\n var colIndex = 'number' === typeof coords[0] ? coords[0] : this.matrix[0].indexOf(coords[0]),\n rowIndex = 'number' === typeof coords[1] ? coords[1] : select.selectColumn.call(this, 0).indexOf(coords[1]);\n\n var colResult = select.selectColumn.call(this, coords[0]),\n rowResult = select.selectRow.call(this, coords[1]);\n\n // Column doesn't exist, create and reset colIndex\n if (colResult.length < 1) {\n append.appendColumn.call(this, String(coords[0]));\n colIndex = this.matrix[0].length - 1;\n }\n\n // Row doesn't exist, create and reset rowIndex\n if (rowResult.length < 1) {\n append.appendRow.call(this, String(coords[1]));\n rowIndex = this.matrix.length - 1;\n }\n\n // Set provided value\n this.matrix[ rowIndex ][ colIndex ] = value;\n return this;\n};\n\nDataset.prototype.type = function(str){\n if (!arguments.length) return this.meta['type'];\n this.meta['type'] = (str ? String(str) : undefined);\n return this;\n};\n\nextend(Dataset.prototype, append);\nextend(Dataset.prototype, del);\nextend(Dataset.prototype, filter);\nextend(Dataset.prototype, insert);\nextend(Dataset.prototype, select);\nextend(Dataset.prototype, sort);\nextend(Dataset.prototype, update);\nextend(Dataset.prototype, analyses);\nDataset.parser = parsers(Dataset);\n\nexport default Dataset;\n","import { each } from '../../utils/each';\nimport { extend } from '../../utils/extend';\n\nfunction average(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0,\n avg = null;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum / set.length;\n}\n\nfunction maximum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.max.apply(Math, nums);\n}\n\nfunction minimum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.min.apply(Math, nums);\n}\n\nfunction sum(arr, start, end){\n // Copy set with given range\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum;\n}\n\nconst getColumnAverage = function (arr) {\n return average(arr, 1);\n};\nconst getRowAverage = getColumnAverage;\n\nconst getColumnSum = function (arr) {\n return sum(arr, 1);\n};\nconst getRowSum = getColumnSum;\n\nconst getColumnMaximum = function (arr) {\n return maximum(arr, 1);\n};\nconst getRowMaximum = getColumnMaximum;\n\nconst getColumnMinimum = function (arr) {\n return minimum(arr, 1);\n};\nconst getRowMinimum = getColumnMinimum;\n\nconst getColumnLabel = function (arr) {\n return arr[0];\n};\nconst getRowIndex = getColumnLabel;\n\nexport default {\n average,\n maximum,\n minimum,\n sum,\n getColumnAverage,\n getRowAverage,\n getColumnSum,\n getRowSum,\n getColumnMaximum,\n getRowMaximum,\n getColumnMinimum,\n getRowMinimum,\n getColumnLabel,\n getRowIndex,\n};\n","// Pure awesomeness by Will Rayner (penguinboy)\n// https://gist.github.com/penguinboy/762197\n\nexport function flatten(ob){\n var toReturn = {};\n for (var i in ob) {\n if (!ob.hasOwnProperty(i)) continue;\n if ((typeof ob[i]) == 'object' && ob[i] !== null) {\n var flatObject = flatten(ob[i]);\n for (var x in flatObject) {\n if (!flatObject.hasOwnProperty(x)) continue;\n toReturn[i + '.' + x] = flatObject[x];\n }\n } else {\n toReturn[i] = ob[i];\n }\n }\n return toReturn;\n};\n","/**\n * Strip html tags from string\n *\n * @param {string} string The string to strip\n * @return {string}\n * @public\n */\n\nexport function stripHtmlTags(inputString) {\n if (typeof inputString !== 'string') {\n return inputString;\n }\n return inputString.replace(/(<([^>]+)>)/ig, '');\n}\n","import { each } from './each';\n\nexport function extendDeep(target) {\n for (var i = 1; i < arguments.length; i++) {\n each(arguments[i], function(prop, key){\n if (( typeof target[key] !== 'undefined' && typeof prop !== 'undefined' ) &&\n ( typeof target[key] === 'object' && typeof prop === 'object' ) &&\n ( target[key] !== null && prop !== null )) {\n extendDeep(target[key], prop);\n }\n else {\n target[key] = prop;\n }\n });\n }\n return target;\n}\n","import downloadResults from './download-results';\n\nexport default function renderDownloadButton({\n element,\n label = 'Download',\n type = 'json',\n data,\n} = {}) {\n const btnClass = 'keen-dataviz-button';\n const isBtnRendered = [...element.parentNode.children]\n .find(child => child.className === btnClass);\n if (isBtnRendered) return;\n\n const button = document.createElement('button');\n button.innerText = label;\n button.className = btnClass;\n button.addEventListener('click', event => downloadResults({ event, type, data}));\n element.parentNode.insertBefore(button, element.nextSibling);\n};","import domtoimage from 'dom-to-image';\nimport { saveAs } from 'file-saver';\n\nexport default function exportImage(obj) {\n const { node, quality, bgcolor } = obj;\n if (quality) {\n if (quality < 0 || quality > 1) throw Error('Please provide image quality between 0 and 1');\n domtoimage.toBlob(node, { quality, bgcolor })\n .then((blob) => {\n saveAs(blob, 'chart.jpeg');\n });\n }\n\n if (!quality) {\n domtoimage.toBlob(node)\n .then((blob) => {\n saveAs(blob, 'chart.png');\n });\n }\n}\n","function generateCsvContent(data) {\n let csvContent = '';\n\n data.forEach((row, i) => {\n row.forEach((cell, j) => {\n csvContent += String(cell).replace(/,/g, '');\n if (row.length > j + 1) {\n csvContent += ',';\n }\n });\n if (data.length > i + 1) {\n csvContent += '\\n';\n }\n });\n return `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n}\n\nexport default function exportData(obj) {\n const { type, data } = obj;\n const supportedFormats = ['json', 'csv'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = supportedFormats[0];\n let content = '';\n\n if (format === 'json') {\n content = `data:text/json;charset=utf-8, ${encodeURIComponent(JSON.stringify(data))}`;\n }\n\n if (format === 'csv') {\n content = generateCsvContent(data);\n fileFormat = format;\n }\n\n const htmlElement = document.createElement('a');\n htmlElement.setAttribute('href', content);\n htmlElement.setAttribute('download', `${fileName}.${fileFormat}`);\n document.body.appendChild(htmlElement);\n htmlElement.click();\n document.body.removeChild(htmlElement);\n}\n","/*!\n *\n * Rangeable\n * Copyright (c) 2018 Karl Saunders (mobius1(at)gmx(dot)com)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.1.6\n *\n */\n(function(i,j){\"object\"==typeof exports?module.exports=j(\"Rangeable\"):\"function\"==typeof define&&define.amd?define([],j):i.Rangeable=j(\"Rangeable\")})(\"undefined\"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&\"function\"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=[\"ruler\"],\"string\"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:\"single\",tooltips:\"always\",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:\"rangeable-input\",container:\"rangeable-container\",vertical:\"rangeable-vertical\",progress:\"rangeable-progress\",handle:\"rangeable-handle\",track:\"rangeable-track\",multiple:\"rangeable-multiple\",disabled:\"rangeable-disabled\",tooltips:\"rangeable-tooltips\",tooltip:\"rangeable-tooltip\",visible:\"rangeable-tooltips--visible\"}},t),this.mouseAxis={x:\"clientX\",y:\"clientY\"},this.trackSize={x:\"width\",y:\"height\"},this.trackPos={x:\"left\",y:\"top\"},this.lastPos=0,this.double=\"double\"===this.config.type||Array.isArray(this.config.value),this.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version=\"0.1.6\",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?\"y\":\"x\",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i(\"div\",u.container),w=i(\"div\",u.track),x=i(\"div\",u.progress),y=i(\"div\",u.handle),z=i(\"div\",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i(\"div\",u.handle),i(\"div\",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i(\"div\",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+\"px\"),t.tooltips&&(v.classList.add(u.tooltips),\"string\"==typeof t.tooltips&&\"always\"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i(\"div\",\"rangeable-buffers\");this.input.values.forEach(function(C,D){var E=i(\"div\",\"rangeable-buffer\");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i(\"div\",\"rangeable-buffer\"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return\"mousedown\"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add(\"dragging\"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add(\"active\"),this.setValueFromPosition(s),this.touch?(document.addEventListener(\"touchmove\",this.events.move,!1),document.addEventListener(\"touchend\",this.events.stop,!1),document.addEventListener(\"touchcancel\",this.events.stop,!1)):(document.addEventListener(\"mousemove\",this.events.move,!1),document.addEventListener(\"mouseup\",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove(\"dragging\"),this.onEnd(),this.activeHandle.classList.remove(\"active\"),this.activeHandle=!1,this.touch?(document.removeEventListener(\"touchmove\",this.events.move),document.removeEventListener(\"touchend\",this.events.stop),document.removeEventListener(\"touchcancel\",this.events.stop)):(document.removeEventListener(\"mousemove\",this.events.move),document.removeEventListener(\"mouseup\",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event(\"change\")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case\"ArrowRight\":case\"ArrowUp\":t.stepUp(v);break;case\"ArrowLeft\":case\"ArrowDown\":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle(\"combined-tooltip\",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+\" - \"+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event(\"input\")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?\"bottom\":\"left\"]=s+\"px\",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+\"px\"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest(\".\"+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute(\"tabindex\")}):this.nodes.handle.removeAttribute(\"tabindex\"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},\"start move stop update reset native keydown\".split(\" \").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener(\"scroll\",this.events.scroll,!1),window.addEventListener(\"resize\",this.events.resize,!1),document.addEventListener(\"keydown\",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.input.addEventListener(\"input\",this.events.native,!1),this.input.form&&this.input.form.addEventListener(\"reset\",this.events.reset,!1)},r.unbind=function(){document.removeEventListener(\"scroll\",this.events.scroll),window.removeEventListener(\"resize\",this.events.resize),document.removeEventListener(\"keydown\",this.events.keydown),this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.input.removeEventListener(\"input\",this.events.native),this.input.form&&this.input.form.removeEventListener(\"reset\",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q});","import { Dataviz, Dataset } from './index';\n\nconst env = typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {};\n\nexport const extendKeenGlobalObject = function(env) {\n env.KeenDataviz = Dataviz;\n env.KeenDataset = Dataset;\n\n // just for backward compatibility\n env.Keen = env.Keen || {};\n env.Keen.Dataset = Dataset;\n env.Keen.Dataviz = Dataviz;\n};\n\nif (typeof KEEN_GLOBAL_OBJECT !== 'undefined'\n && KEEN_GLOBAL_OBJECT) {\n extendKeenGlobalObject(env);\n}\n\nexport let keenGlobals = undefined;\nif (typeof webpackKeenGlobals !== 'undefined') {\n keenGlobals = webpackKeenGlobals;\n}\n\nexport { Dataviz, Dataset } from './index';\nexport default Dataviz;\n","/* eslint-env browser */\nimport * as d3 from 'd3';\nimport c3 from 'c3';\n\nimport pkg from '../package.json';\nimport data from './data';\nimport { Dataset } from './dataset';\n\n// Utils\nimport { each } from './utils/each';\nimport isDateString from './utils/assert-date-string';\nimport { stripHtmlTags } from './utils/strip-html-tags';\nimport { escapeHtml } from './utils/escape-html';\nimport libraries from './libraries';\nimport { extendDeep } from './utils/extend-deep';\nimport exportImage from './utils/export-svg';\nimport exportData from './utils/export-data';\nimport renderDownloadButton from './utils/render-download-btn';\nimport renderExecutionMetadata from './utils/render-execution-metadata';\nimport copyToClipboard from './utils/copy-to-clipboard';\n\nimport palettes from './palettes/index';\n\n// Constructor\nexport const Dataviz = function (options = {}) {\n if (this instanceof Dataviz === false) {\n return new Dataviz(options);\n }\n\n this.c3 = c3; // expose for use outside\n this.d3 = d3;\n\n const datavizInstance = this;\n const defaultOptions = {\n showDeprecationWarnings: true,\n showLoadingSpinner: false,\n\n container: undefined, // querySelector of container, for example '#someDiv'\n containerElement: undefined, // HTML parent element for the chart\n\n // width: undefined, *deprecated* - use CSS\n // height: undefined, *deprecated* - use CSS\n\n title: undefined,\n showTitle: true,\n\n subtitle: undefined,\n\n notes: undefined,\n theme: 'keen-dataviz',\n\n colors: [\n '#00bbde', '#fe6672', '#eeb058', '#8a8ad6', '#ff855c', '#00cfbb',\n '#5a9eed', '#73d483', '#c879bb', '#0099b6', '#d74d58', '#cb9141',\n '#6b6bb6', '#d86945', '#00aa99', '#4281c9', '#57b566', '#ac5c9e',\n '#27cceb', '#ff818b', '#f6bf71', '#9b9be1', '#ff9b79', '#26dfcd',\n '#73aff4', '#87e096', '#d88bcb',\n ],\n\n colorMapping: {},\n ui: {\n executionMetadata: true,\n },\n utils: {\n clickToCopyToClipboard: true,\n },\n\n indexBy: 'timeframe.start',\n labels: [],\n labelMapping: {},\n labelMappingRegExp: undefined,\n errorMapping: {},\n showErrorMessages: true,\n library: 'default',\n sortGroups: undefined,\n sortIntervals: undefined,\n\n results: undefined, // raw data\n\n // C3 chartOptions\n type: undefined,\n stacked: false,\n dateFormat: undefined,\n legend: {\n show: true,\n position: 'right',\n alignment: 'top',\n label: {\n textMaxLength: 12\n },\n pagination: {\n offset: 0, // start from\n limit: 5 // items per page\n },\n tooltip: {\n show: true,\n pointer: true\n },\n sort: undefined\n },\n\n axis: {},\n color: {},\n size: {\n // control it with CSS of .c3-chart\n },\n padding: {\n top: 15\n },\n point: {\n focus: {\n expand: {\n enabled: false\n }\n },\n r: 2,\n show: true,\n sensitivity: 300\n },\n tooltip: {\n horizontal: true,\n format: {\n // https://c3js.org/samples/tooltip_format.html\n }\n },\n transition: {\n // duration: 0\n },\n data: {\n order: null,\n selection: {\n enabled: true,\n draggable: true,\n multiple: true\n },\n onselected: (d, element) => {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n },\n },\n grid: {\n y: {\n show: true\n }\n },\n partialIntervalIndicator: {\n show: undefined,\n className: 'partial-interval-indicator'\n },\n timezone: 'UTC',\n table: {\n schema: 'static',\n },\n renderOnVisible: false,\n funnel: {\n lines: true,\n resultValues: true,\n percents: {\n show: false,\n countingMethod: 'absolute',\n decimals: 0\n },\n marginBetweenElements: false,\n hover: true,\n effect3d: 'both-sides',\n minimalSize: false,\n },\n react: false,\n range: false,\n sparkline: false,\n choropleth: {\n map: 'world',\n borders: {\n show: true,\n size: 0.5,\n color: '#000'\n },\n showSlider: false\n },\n heatmap: {},\n };\n\n this.config = { ...extendDeep(defaultOptions, options) };\n\n if (options.palette) {\n if (!palettes[options.palette]){\n console.log('Colors pallete not found', options.palette);\n }\n this.config.colors = palettes[options.palette].colors;\n }\n\n if (this.config.type) {\n // backward compatibility with v2016... areachart -> area\n this.config.type = convertChartTypes(this.config.type);\n }\n\n // overwriting options for range chart\n if(this.config.type && this.config.type.includes('-range')) {\n this.config.range = true;\n this.config.type = this.config.type.replace('-range', '');\n this.config.legend.show = false;\n this.config.stacking = 'normal';\n this.config.labels = ['Max', 'Min'];\n this.config.colors = [\n this.config.colors[0],\n this.config.colors[0],\n ];\n }\n\n // overwriting stacked when stacking added\n if (this.config.stacking) {\n this.config.stacked = true;\n }\n\n // overwriting options for sparkline chart\n if (this.config.sparkline) {\n this.config.legend.show = false;\n this.config.axis = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n this.config.grid = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n }\n\n // get DOM node by query\n if (this.config.container) {\n this.el(this.config.container);\n }\n\n if (options.legend !== undefined && !options.legend) {\n this.config.legend = {\n ...options,\n show: false\n };\n }\n\n if (options.color && options.color.pattern) {\n // to match c3 options\n this.config.colors = options.color.pattern;\n }\n\n if (this.config.legend\n && this.config.legend.tooltip\n && this.config.legend.tooltip.show === false\n && this.config.tooltip.show === undefined) {\n this.config.tooltip = { show: false };\n }\n\n this.dataset = new Dataset(this.config);\n this.view = {\n _prepared: false,\n _rendered: false,\n _artifacts: { /* state bin */ }\n };\n\n Dataviz.visuals.push(this);\n\n if (this.config.showLoadingSpinner) {\n this.prepare();\n }\n\n if (!!this.config.results) {\n this.render(this.config.results);\n }\n this.config.firstVisibilityState = document.visibilityState;\n\n if (!this.config.utils.clickToCopyToClipboard) {\n this.config.data.onselected = () => {};\n }\n\n if (options.data && options.data.onselected) {\n this.config.data.onselected = (d, element) => {\n const callback = options.data.onselected.bind(null, d, element);\n callback();\n\n if (this.config.utils.clickToCopyToClipboard) {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n }\n };\n }\n\n};\n\n\nDataviz.libraries = { default: {} };\nif (typeof window !== 'undefined') {\n Dataviz.libraries.default = libraries(Dataviz);\n}\nDataviz.visuals = [];\n\nDataviz.register = function (name, actions) {\n Dataviz.libraries[name] = Dataviz.libraries[name] || {};\n each(actions, function(method, key){\n Dataviz.libraries[name][key] = method;\n });\n};\n\nDataviz.find = function(target){\n if (!arguments.length) return Dataviz.visuals;\n const el = target.nodeName ? target : document.querySelector(target);\n let match = null;\n each(Dataviz.visuals, function(visual){\n if (el == visual.config.container){\n match = visual;\n return false;\n }\n });\n return match;\n};\n\n\n // Prototype\n // ------------\n\nDataviz.prototype.attributes = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n const view = this.config;\n each(obj, function(prop, key){\n // Handle deprecated property names\n if (key === 'chartType') {\n key = 'type';\n }\n view[key] = prop;\n });\n return this;\n};\n\nDataviz.prototype.call = function(fn){\n fn.call(this);\n return this;\n};\n\nDataviz.prototype.chartOptions = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n this.config = extendDeep(this.config, obj);\n return this;\n};\n\nDataviz.prototype.colors = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.colors;\n this.config.colors = (arr instanceof Array ? arr : []);\n return this;\n};\n\nDataviz.prototype.colorMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })');\n }\n const datavizInstance = this;\n if (!arguments.length) return this.config.colorMapping;\n if (obj === null) {\n this.config.colorMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n datavizInstance.config.colorMapping[key] = (value ? value : null);\n });\n }\n return this;\n};\n\nDataviz.prototype.data = data;\n\nDataviz.prototype.dateFormat = function(val){\n if (this.config.showDeprecationWarnings) {\n console.log('.dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.dateFormat;\n if (typeof val === 'string' || typeof val === 'function') {\n this.config.dateFormat = val;\n }\n else {\n this.config.dateFormat = undefined;\n }\n return this;\n};\n\nDataviz.prototype.destroy = function(){\n const library = this.library();\n const type = this.config.type;\n const element = this.el();\n\n // Call destroy method if present\n if (Dataviz.libraries[library]\n && Dataviz.libraries[library][type]){\n Dataviz.libraries[library][type].destroy.call(this);\n }\n\n // Clear rendered artifacts, state bin\n if (element) {\n element.innerHTML = '';\n }\n this.view._prepared = false;\n this.view._rendered = false;\n this.view._artifacts = {};\n return this;\n};\n\nDataviz.prototype.el = function(target){\n const datavizInstance = this;\n if (!arguments.length) return this.config.containerElement;\n domReady(function(){\n if (target && target !== null) {\n if (target.nodeName) {\n datavizInstance.config.containerElement = target;\n }\n else if (document.querySelector) {\n datavizInstance.config.containerElement = document.querySelector(target);\n }\n }\n else {\n datavizInstance.config.containerElement = undefined;\n }\n });\n return this;\n};\n\nDataviz.prototype.height = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.height() is deprecated - use CSS classes');\n }\n return this;\n};\n\n// IMPORTANT: Must be run before data parsing\nDataviz.prototype.indexBy = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.indexBy;\n this.config.indexBy = (str ? String(str) : 'timeframe.start');\n return this;\n};\n\nDataviz.prototype.labels = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })');\n }\n\n if (!arguments.length) return this.config.labels;\n this.config.labels = (arr instanceof Array ? arr : []);\n\n setLabels(this);\n\n return this;\n};\n\nfunction setLabels(datavizInstance){\n // Write labels\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.updateColumn(0, function(value, index){\n if (datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n else {\n datavizInstance.dataset.updateRow(0, function(value, index){\n if (index > 0 && datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.labelMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.labelMapping;\n if (obj === null) {\n this.config.labelMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n this.config.labelMapping[key] = (value ? value : null);\n }.bind(this));\n }\n\n mapLabels(this);\n\n return this;\n};\n\nfunction mapLabelsExec({ datavizInstance, value }){\n if (datavizInstance.config.labelMappingRegExp){\n let valueAfterMatching = value;\n datavizInstance.config.labelMappingRegExp.forEach(regExpAndLabel => {\n if (regExpAndLabel.length > 1) {\n let regExpObj = regExpAndLabel[0];\n if (regExpObj.test(value)){\n valueAfterMatching = regExpAndLabel[1];\n }\n }\n });\n return stripHtmlTags(valueAfterMatching);\n }\n if (datavizInstance.config.labelMapping[value]) {\n return stripHtmlTags(String(datavizInstance.config.labelMapping[value]));\n }\n return stripHtmlTags(value);\n}\n\nfunction mapLabels(datavizInstance){\n // Write labels\n if (!datavizInstance.config.labelMappingDimension) {\n // if not defined use deprecated auto-detecting\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.config.labelMappingDimension = 'row';\n } else {\n datavizInstance.config.labelMappingDimension = 'column';\n }\n }\n\n if (datavizInstance.config.labelMappingDimension === 'row'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateColumn(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n\n if (datavizInstance.config.labelMappingDimension === 'column'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateRow(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.library = function(str){\n if (!arguments.length) return this.config['library'];\n this.config['library'] = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.message = function(){\n if (this.view._rendered) {\n this.destroy();\n }\n if (this.el()) {\n this.el().innerHTML = '';\n const message = Dataviz.libraries.default.message;\n if (message.render) {\n message.render.apply(this, arguments);\n }\n }\n return this;\n};\n\nDataviz.prototype.notes = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.notes;\n this.config.notes = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.prepare = function(){\n const datavizInstance = this;\n\n if (!this.el()) {\n throw `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n return;\n }\n\n domReady(function(){\n if (datavizInstance.view._rendered) {\n datavizInstance.destroy();\n }\n if (datavizInstance.el()) {\n datavizInstance.el().innerHTML = '';\n const loader = Dataviz.libraries.default.spinner;\n if (loader.render) {\n loader.render.call(datavizInstance);\n }\n datavizInstance.view._prepared = true;\n }\n });\n\n return this;\n};\n\nDataviz.prototype.render = function(results = undefined){\n const datavizInstance = this;\n\n if (!!results) {\n const firstResult = results[0] || results;\n if (\n firstResult.query\n && firstResult.query.interval\n && firstResult.query.timeframe\n && typeof firstResult.query.timeframe === 'string'\n && firstResult.query.timeframe.includes('this_')\n && this.config.partialIntervalIndicator\n && this.config.partialIntervalIndicator.show === undefined\n )\n {\n this.config.partialIntervalIndicator.show = true;\n }\n\n if (Array.isArray(results)) {\n const timeframes = results.map(resultItem => resultItem.query.timeframe);\n timeframes.forEach(resultTimeframe => {\n let foundDifferent = timeframes.find(timeframeItem =>\n JSON.stringify(timeframeItem) !== JSON.stringify(resultTimeframe)\n );\n if (foundDifferent){\n const msg = 'Timeframes of the queries should be the same';\n console.error(msg);\n throw msg;\n }\n });\n // first result is important to prepare X on the chart\n return datavizInstance\n .data(results[0])\n .call(() => {\n const input = results[0];\n this.dataset.deleteColumn(1);\n for (let result of results) {\n let label = `${input.query.event_collection} ${input.query.analysis_type}`;\n let ds2 = Dataset.parser('interval')(result);\n datavizInstance.dataset.appendColumn(label, ds2.selectColumn(1).slice(1));\n }\n })\n .render();\n }\n\n return datavizInstance.data(results).render();\n }\n if (\n (!!this.config.labelMapping && Object.keys(this.config.labelMapping).length > 0)\n ||\n (!!this.config.labelMappingRegExp && this.config.labelMappingRegExp.length > 0)\n ){\n mapLabels(datavizInstance);\n }\n if (!!this.config.labels && Object.keys(this.config.labels).length > 0){\n setLabels(datavizInstance);\n }\n if (!!this.config.sortGroups) {\n sortGroups(datavizInstance);\n }\n if (!!this.config.sortIntervals) {\n sortIntervals(datavizInstance);\n }\n\n const loader = Dataviz.libraries.default.spinner;\n const library = this.config.library;\n const type = this.config.type;\n const containerElement = this.el();\n\n if (!containerElement || containerElement === undefined) {\n const msg = `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n console.error(msg);\n throw msg;\n return;\n }\n\n let returnValue = datavizInstance;\n\n if (datavizInstance.config.renderAsPromise) {\n returnValue = new Promise((resolve, reject) => {\n const customCallback = this.config.onrendered;\n datavizInstance.config.onrendered = () => {\n if (customCallback) {\n customCallback();\n }\n resolve(datavizInstance);\n }\n });\n }\n\n domReady(function(){\n const shouldRenderExecutionMetadata = datavizInstance.execution_metadata\n && datavizInstance.config.ui\n && datavizInstance.config.ui.executionMetadata;\n const shouldRenderDownloadBtn = datavizInstance.config.ui\n && datavizInstance.config.ui.buttons\n && datavizInstance.config.ui.buttons.download\n && datavizInstance.config.ui.buttons.download.type;\n if (datavizInstance.view._prepared && loader.destroy) {\n loader.destroy.apply(datavizInstance, arguments);\n }\n containerElement.innerHTML = '';\n\n if (Dataviz.libraries[library] === 'undefined'){\n // Error: Unregistered library\n const msg = `Incorrect library`;\n datavizInstance.message(msg);\n throw msg;\n return;\n }\n else {\n if (typeof Dataviz.libraries[library][type] === 'undefined') {\n const msg = `Incorrect chart type`;\n const mappedMsg = this.config.errorMapping[msg] || msg;\n datavizInstance.message(mappedMsg);\n throw msg;\n return;\n }\n else {\n buildDomWrapper(containerElement,\n datavizInstance.config\n );\n if (shouldRenderDownloadBtn) {\n renderDownloadButton({\n element: containerElement,\n data: datavizInstance.dataset.matrix,\n type: datavizInstance.config.ui.buttons.download.type,\n label: datavizInstance.config.ui.buttons.download.label,\n })\n }\n if (shouldRenderExecutionMetadata) {\n renderExecutionMetadata({\n element: containerElement,\n data: datavizInstance.execution_metadata,\n })\n }\n const { renderOnVisible } = datavizInstance.config;\n if(renderOnVisible){\n if(typeof IntersectionObserver !== 'undefined'){\n const chartVisibleCallback = (events, observer) => {\n events.forEach(el => {\n if(el.isIntersecting){\n if(!datavizInstance.view._rendered){\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n })\n }\n const observer = new IntersectionObserver(chartVisibleCallback);\n observer.observe(containerElement);\n return;\n }\n }\n if(datavizInstance.config.firstVisibilityState === 'hidden'){\n if(typeof document !== 'undefined') {\n let hidden, visibilityChange;\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n const handleVisibilityChange = () => {\n if(!document[hidden] && datavizInstance.view._artifacts.c3) {\n datavizInstance.view._artifacts.c3.load(datavizInstance.dataset.matrix);\n }\n }\n if(typeof document.addEventListener !== \"undefined\" ||\n hidden !== undefined){\n document.addEventListener(visibilityChange, handleVisibilityChange, {\n once: true\n });\n }\n }\n }\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n });\n\n return returnValue;\n};\n\nDataviz.prototype.sortGroups = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortGroups;\n this.config.sortGroups = (str ? String(str) : null);\n\n sortGroups(this, str);\n\n return this;\n};\n\nfunction sortGroups(datavizInstance){\n // Sort groups\n if (datavizInstance.config.sortGroups && datavizInstance.data().length > 1) {\n if (isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.sortColumns(datavizInstance.config.sortGroups, datavizInstance.dataset.getColumnSum);\n }\n else {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortGroups, datavizInstance.dataset.getRowSum);\n }\n }\n}\n\nDataviz.prototype.sortIntervals = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortIntervals;\n this.config.sortIntervals = (str ? String(str) : null);\n\n sortIntervals(this);\n\n return this;\n};\n\nfunction sortIntervals(datavizInstance){\n if (datavizInstance.config.sortIntervals) {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortIntervals);\n }\n}\n\nDataviz.prototype.stacked = function(bool){\n if (this.config.showDeprecationWarnings) {\n console.log('.stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.stacked;\n this.config.stacked = bool ? true : false;\n return this;\n};\n\nDataviz.prototype.theme = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.theme;\n this.config.theme = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.title = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.title;\n this.config.title = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.type = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.type;\n this.config.type = (str ? convertChartTypes(str) : null);\n return this;\n};\n\nDataviz.prototype.update = function(){\n const library = this.config.library;\n const type = this.config.type;\n const element = this.el();\n if (library && type && element && Dataviz.libraries[library][type].update) {\n Dataviz.libraries[library][type].update.apply(this, arguments);\n }\n return this;\n};\n\nDataviz.prototype.width = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.width() is deprecated - use CSS classes');\n }\n return this;\n};\n\nDataviz.prototype.exportImage = function({ quality = 0, bgcolor = '#fff' } = {}) {\n exportImage({\n node: this.config.containerElement,\n quality,\n bgcolor,\n });\n};\n\nDataviz.prototype.exportData = function(type='json') {\n exportData({\n data: this.dataset.matrix,\n type,\n });\n};\n\n// Deprecations\nDataviz.prototype.chartType = Dataviz.prototype.type;\nDataviz.prototype.error = Dataviz.prototype.message;\nDataviz.prototype.parseRawData = Dataviz.prototype.data;\nDataviz.prototype.parseRequest = function(){\n // this.emit('error', 'This method is no longer supported. Use .data() instead: https://github.com/keen/keen-dataviz.js#data');\n return this;\n};\nDataviz.prototype.initialize = function(){\n // this.emit('error', 'This method is no longer supported, and can be omitted as it has no impact');\n return this;\n};\n\nDataviz.version = pkg.version;\n\n// Private\n\nfunction buildDomWrapper(el, options) {\n let html = '';\n let chart100percentWide = '';\n let rangeChart = '';\n if (options.legend.position === 'top' || options.legend.position === 'bottom') {\n chart100percentWide = 'c3-chart-100-percent';\n }\n if (options.range) {\n rangeChart = 'keen-dataviz-range';\n }\n let container = `
`;\n const verticalAlignment = ['top', 'middle', 'bottom'];\n const horizontalAlignment = ['left', 'center', 'right'];\n let align = 'horizontal';\n let legendItemsAlign = 'center';\n if (horizontalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n if (options.legend.position === 'left' || options.legend.position === 'right') {\n align = 'vertical';\n if (verticalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n }\n if (options.legend && options.legend.show) {\n if (options.legend.position === 'top' || options.legend.position === 'left') {\n container = `
${container}`;\n } else {\n container = `${container}
`;\n }\n }\n if(!options.react){\n html += `
`;\n }\n if (options.title && options.showTitle) {\n html += `
${options.title}
`;\n }\n if (options.subtitle) {\n html += `
${options.subtitle}
`;\n }\n html += `
${container}
`;\n if (options.notes) {\n html += `
${options.notes}
`;\n }\n if(!options.react){\n html += '
';\n }\n\n el.innerHTML = html;\n}\n\nfunction convertChartTypes(str) {\n const map = {\n areachart: 'area',\n barchart: 'horizontal-bar',\n columnchart: 'bar',\n linechart: 'line',\n piechart: 'pie',\n };\n return map[str] || str;\n}\n\nfunction testDom(fn) {\n if (/in/.test(document.readyState)) {\n setTimeout(() => {\n testDom(fn);\n }, 9);\n } else {\n fn();\n }\n}\n\nfunction domReady(fn) {\n if (typeof document !== 'undefined' || typeof window === 'undefined') {\n fn();\n return;\n }\n // Firefox 3.5 shim\n if (document.readyState == null && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', function DOMContentLoaded() {\n document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);\n document.readyState = 'complete';\n }, false);\n document.readyState = 'loading';\n }\n testDom(fn);\n}\n\nexport { Dataset } from './dataset';\n\nexport default Dataviz;\n","import { each } from '../../utils/each';\n\nexport function deleteColumn(q) {\n const self = this;\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n each(self.matrix, function(row, i){\n self.matrix[i].splice(index, 1);\n });\n }\n return self;\n}\n\nexport function deleteRow(q) {\n var index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n this.matrix.splice(index, 1);\n }\n return this;\n}\n","import { each } from '../../utils/each';\n\nexport function filterColumns(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i) {\n clone.push([]);\n });\n\n each(self.matrix[0], function(col, i){\n var selectedColumn = self.selectColumn(i);\n if (i == 0 || fn.call(self, selectedColumn, i)) {\n each(selectedColumn, function(cell, ri){\n clone[ri].push(cell);\n });\n }\n });\n\n self.data(clone);\n return self;\n}\n\nexport function filterRows(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i){\n if (i == 0 || fn.call(self, row, i)) {\n clone.push(row);\n }\n });\n\n self.data(clone);\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function insertColumn(index, str, input) {\n const self = this;\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n\n self.matrix[0].splice(index, 0, label);\n each(self.matrix, function(row, i) {\n var cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].splice(index, 0, cell);\n }\n });\n\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat( createNullList(self.matrix.length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n self.matrix[0].splice(index, 0, label);\n each(input, function(value, i){\n self.matrix[i+1].splice(index, 0, value);\n });\n\n }\n return self;\n}\n\nexport function insertRow(index, str, input) {\n const self = this;\n const newRow = [];\n const label = (str !== undefined) ? str : null;\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i) {\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.splice(index, 0, newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n self.matrix.splice(index, 0, newRow.concat(input) );\n }\n\n return self;\n}\n","import { each } from '../../utils/each';\n\nexport function selectColumn(q) {\n const result = [];\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1 && typeof this.matrix[0][index] !== 'undefined') {\n each(this.matrix, function(row, i) {\n result.push(row[index]);\n });\n }\n return result;\n}\n\nexport function selectRow(q) {\n let result = [];\n const index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1 && typeof this.matrix[index] !== 'undefined') {\n result = this.matrix[index];\n }\n return result;\n}\n","import { each } from '../../utils/each';\nimport analysesUtilMethods from '../utils/analyses';\n\nexport function sortColumns(str, comp) {\n var self = this,\n head = this.matrix[0].slice(1), // minus index\n cols = [],\n clone = [],\n fn = comp || analysesUtilMethods.getColumnLabel;\n\n // Isolate each column (except the index)\n each(head, function(cell, i) {\n cols.push(self.selectColumn(i+1).slice(0));\n });\n cols.sort(function(a,b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n each(cols, function(col, i) {\n self\n .deleteColumn(i+1)\n .insertColumn(i+1, col[0], col.slice(1));\n });\n return self;\n}\n\nexport function sortRows(str, comp) {\n var self = this,\n head = this.matrix.slice(0,1),\n body = this.matrix.slice(1),\n fn = comp || analysesUtilMethods.getRowIndex;\n body.sort(function(a, b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n self.data(head.concat(body));\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function updateColumn(q, input) {\n var self = this,\n index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data(), function(row, i){\n var cell;\n if (i > 0) {\n cell = input.call(self, row[index], i, row);\n if (typeof cell !== 'undefined') {\n self.matrix[i][index] = cell;\n }\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.data().length - 1) {\n input = input.concat( createNullList(self.data().length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[i+1][index] = value;\n });\n\n }\n\n }\n return self;\n}\n\nexport function updateRow(q, input){\n var self = this,\n index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data()[index], function(value, i){\n var col = self.selectColumn(i),\n cell = input.call(self, value, i, col);\n if (typeof cell !== 'undefined') {\n self.matrix[index][i] = cell;\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[index][i+1] = value;\n });\n }\n\n }\n return self;\n}\n","let Dataset; /* injected */\n\nimport { each } from '../../utils/each';\nimport { flatten } from '../utils/flatten';\nimport { valueAtDeepKey } from '../utils/object';\nimport { createExtractionKeys } from '../utils/create-extraction-keys';\n\nexport default function initialize(lib){\n Dataset = lib;\n return function(name){\n var options = Array.prototype.slice.call(arguments, 1);\n\n if (!parsers[name]) {\n throw 'Requested parser does not exist';\n }\n else {\n return parsers[name].apply(this, options);\n }\n };\n}\n\nfunction parseMetric(){\n return function(res){\n return new Dataset()\n .set(['Value', 'Result'], res.result)\n .type('metric');\n }\n}\n\n//var myParser = Dataset.parser('interval', 'timeframe.end');\nfunction parseInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n dataset.set(['Result', index], record.value);\n });\n return dataset;\n }\n}\n\nfunction parseGroupedMetric(){\n return function(res){\n var dataset = new Dataset()\n .type('grouped-metric');\n each(res.result, function(record, i){\n var label;\n each(record, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set(['Result', String(record[label])], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('grouped-interval', 'timeframe.end');\nfunction parseGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('grouped-interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n if (record.value.length) {\n each(record.value, function(group, j){\n var label;\n each(group, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set([ String(group[label]), index ], group.result);\n });\n }\n else {\n dataset.appendRow(index);\n }\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-metric', ['first', 'second']);\nfunction parseDoubleGroupedMetric(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-metric');\n each(res.result, function(record, i){\n var rowLabel = record[options[0][0]] + ' ' + record[options[0][1]];\n dataset.set([ 'Result', rowLabel ], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-interval', ['first', 'second'], 'timeframe.end');\nfunction parseDoubleGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-interval');\n each(res.result, function(record, i){\n var index = options[1] && options[1] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n each(record['value'], function(value, j){\n var label = value[options[0][0]] + ' ' + value[options[0][1]];\n dataset.set([ label, index ], value.result);\n });\n });\n return dataset;\n }\n}\n\nfunction parseFunnel(){\n return function(res){\n var result, steps, dataset;\n if (typeof res.steps !== 'undefined'\n && typeof res.result !== 'undefined'\n && res.result instanceof Array) {\n // Ad-hoc funnel response\n result = res.result;\n steps = res.steps;\n }\n else if (typeof res.result.steps !== 'undefined'\n && typeof res.result.result !== 'undefined'\n && res.result.result instanceof Array) {\n // Saved funnel response\n result = res.result.result;\n steps = res.result.steps;\n }\n dataset = new Dataset().type('funnel');\n dataset.appendColumn('Step Value');\n each(result, function(value, i){\n if (typeof steps !== 'undefined' && steps[i]) {\n dataset.appendRow(String(steps[i].event_collection), [value]);\n }\n });\n return dataset;\n }\n}\n\nfunction parseList(){\n return function(res){\n var dataset = new Dataset()\n .type('list');\n each(res.result, function(value, i){\n dataset.set( [ 'Result', String(i+1) ], value );\n });\n return dataset;\n }\n}\n\nfunction parseExtraction(){\n let config = this.config;\n return function(res){\n const datasetExtraction = new Dataset()\n .type('extraction');\n\n const datasetKeys = createExtractionKeys(res.result);\n let names = Array.from(datasetKeys);\n\n const tableConfig = config && config.table;\n if (tableConfig && tableConfig.schema === 'dynamic') {\n const results = res.result;\n const keys = {};\n results.forEach(resultItem => {\n const resultKeys = Object.keys(flatten(resultItem));\n if (resultKeys && resultKeys.length) {\n resultKeys.forEach(keyName => {\n if (!keys[keyName]) {\n keys[keyName] = true;\n }\n });\n }\n });\n names = Object.keys(keys);\n }\n\n let nameI = 0;\n names.forEach(value => {\n datasetExtraction.set([ value, '0' ], value);\n nameI++;\n });\n\n if (Dataset) {\n if (config\n && config.table\n && config.table.columns) {\n names = config.table.columns;\n }\n }\n\n for (let i=0; i {\n Object.keys(flatten(result)).map((key) => {\n keys.add(key);\n });\n });\n\n return keys;\n}\n","import Dataset from './dataset';\nimport { extend } from './utils/extend';\nimport { stripHtmlTags } from './utils/strip-html-tags';\n\nexport default function (data) {\n if (!arguments.length) return this.dataset.data();\n if (data instanceof Dataset) {\n this.dataset = data;\n return this;\n }\n return parseResponse.call(this, data);\n};\n\nfunction parseResponse(response) {\n var dataset,\n indexBy,\n meta,\n parser,\n parserArgs = [],\n query,\n selectedParser,\n title,\n type;\n\n indexBy = this.config.indexBy;\n meta = response.metadata || {};\n query = (typeof response.query !== 'undefined') ? response.query : {};\n\n // Ensure all required params are present\n query = extend({\n analysis_type: null,\n event_collection: null,\n filters: [],\n group_by: null,\n interval: null,\n timeframe: null,\n timezone: null\n }, query);\n\n if (query.analysis_type === 'funnel') {\n parser = 'funnel';\n }\n else if (query.analysis_type === 'extraction'){\n parser = 'extraction';\n }\n else if (query.analysis_type === 'select_unique') {\n if (!query.group_by && !query.interval) {\n parser = 'list';\n }\n // else { Not supported }\n }\n else if (query.analysis_type) {\n if (!query.group_by && !query.interval) {\n parser = 'metric';\n }\n else if (query.group_by && !query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-metric';\n parserArgs.push(query.group_by);\n }\n else {\n parser = 'grouped-metric';\n }\n }\n else if (query.interval && !query.group_by) {\n parser = 'interval';\n parserArgs.push(indexBy);\n }\n else if (query.group_by && query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-interval';\n parserArgs.push(query.group_by);\n parserArgs.push(indexBy);\n }\n else {\n parser = 'grouped-interval';\n parserArgs.push(indexBy);\n }\n }\n }\n\n if (!parser) {\n\n // Metric\n // -------------------------------\n if (typeof response.result === 'number'){\n parser = 'metric';\n }\n\n // Everything else\n // -------------------------------\n if (response.result instanceof Array && response.result.length > 0){\n\n // Interval w/ single value\n // -------------------------------\n if (response.result[0].timeframe && (typeof response.result[0].value == 'number' || response.result[0].value == null)) {\n parser = 'interval';\n parserArgs.push(indexBy)\n }\n\n // Static GroupBy\n // -------------------------------\n if (typeof response.result[0].result == 'number'){\n parser = 'grouped-metric';\n }\n\n // x, y, value for heatmap\n if (this.config.type === 'heatmap' && Object.keys(response.result[0] === 3 && typeof response.result[0].result === 'number')) {\n parser = 'heatmap-axis';\n }\n\n // Grouped Interval\n // -------------------------------\n if (response.result[0].value instanceof Array){\n parser = 'grouped-interval';\n parserArgs.push(indexBy)\n }\n\n // Funnel\n // -------------------------------\n if (typeof response.result[0] === 'number'\n && typeof response.steps !== 'undefined'){\n parser = 'funnel';\n // Move steps into query object\n query.steps = response.steps;\n }\n\n // Select Unique\n // -------------------------------\n if ((typeof response.result[0] === 'string' || typeof response.result[0] == 'number') && typeof response.steps === 'undefined'){\n parser = 'list';\n }\n\n // Extraction\n // -------------------------------\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n // Set title from saved query body, or create a default title\n if (this.config.title === undefined) {\n if (meta.display_name) {\n title = meta.display_name;\n }\n else {\n title = getDefaultTitle(query);\n }\n this.config.title = title;\n }\n\n // Set type from saved query body, or use a default type\n if (!this.config.type) {\n if (meta.visualization && meta.visualization.chart_type) {\n type = meta.visualization.chart_type;\n }\n else {\n type = getDefaultType(parser);\n }\n this.config.type = type;\n }\n\n // Define the appropriate parser\n selectedParser = Dataset.parser.apply(this, [parser].concat(parserArgs));\n\n // Parse the response with augmented query body\n dataset = selectedParser(extend(response, { 'query': query }));\n\n // Set true dates for 'interval' data\n if (parser.indexOf('interval') > -1) {\n dataset.updateColumn(0, function(value, i){\n return new Date(value);\n });\n }\n\n dataset.updateRow(0, function(value, i){\n return stripHtmlTags(value);\n });\n\n this.dataset = dataset;\n\n if (response.execution_metadata) {\n this.execution_metadata = response.execution_metadata;\n }\n\n return this;\n}\n\nfunction getDefaultTitle(query) {\n var analysis = query.analysis_type ? query.analysis_type.replace('_', ' ') : '',\n title;\n\n title = analysis.replace( /\\b./g, function(a){\n return a.toUpperCase();\n });\n\n if (query.event_collection) {\n title += ' - ' + query.event_collection;\n }\n return title;\n}\n\nfunction getDefaultType(parser) {\n let type;\n switch (parser) {\n case 'metric':\n type = 'metric';\n break;\n case 'interval':\n type = 'area';\n break;\n case 'grouped-metric':\n case 'double-grouped-metric':\n type = 'bar';\n break;\n case 'grouped-interval':\n case 'double-grouped-interval':\n type = 'line';\n break;\n case 'funnel':\n type = 'horizontal-bar';\n break;\n case 'list':\n case 'extraction':\n default:\n type = 'table';\n }\n return type;\n}\n","import c3 from 'c3';\n\nimport { each } from '../utils/each';\nimport { extend } from '../utils/extend';\nimport { extendDeep } from '../utils/extend-deep';\nimport isDateString from '../utils/assert-date-string';\nimport c3DefaultDateFormat from './c3/extensions/default-date-format';\nimport c3PaginatingLegend from './c3/extensions/paginating-legend';\nimport c3TooltipContents from './c3/extensions/tooltip-contents';\n\nimport calculateRange from '../dataset/utils/calculate-range';\nimport { calculateSumForPercents, calculatePercents } from '../dataset/utils/calculate-percents';\n\nimport message from './default/message';\nimport metric from './default/metric';\nimport table from './default/table';\nimport spinner from './default/spinner';\nimport Funnel from './default/funnel';\nimport Funnel3d from './default/funnel-3d';\nimport HorizontalFunnel from './default/horizontal-funnel';\nimport HorizontalFunnel3d from './default/horizontal-funnel-3d';\nimport MetricCombo from './default/metric-combo';\nimport Heatmap from './default/heatmap';\nimport Choropleth from './default/choropleth';\n\nexport default function(lib) {\n let timer;\n bindResizeListener(function(){\n if (timer) {\n clearTimeout(timer);\n }\n const delay = (lib.visuals.length > 12) ? 1000 : 250;\n timer = setTimeout(function(){\n each(lib.visuals, function(chart){\n const c3Chart = chart.view._artifacts.c3;\n if (c3Chart) {\n const parentWidth = c3Chart.element.parentNode.parentNode.offsetWidth;\n let width = parentWidth;\n if (chart.config.legend && chart.config.legend.show && (chart.config.legend.position === 'left' || chart.config.legend.position === 'right')) {\n const nextSiblingWidth = c3Chart.element.nextSibling ? c3Chart.element.nextSibling.offsetWidth : 0;\n const prevSiblingWidth = c3Chart.element.previousSibling ? c3Chart.element.previousSibling.offsetWidth : 0;\n width = parentWidth - prevSiblingWidth - nextSiblingWidth;\n }\n\n c3Chart.resize({\n width,\n });\n\n }\n });\n }, delay);\n });\n\n return defineC3();\n};\n\nfunction defineC3(){\n const types = {\n message,\n metric,\n table,\n spinner,\n 'funnel': new Funnel,\n 'funnel-3d': new Funnel3d,\n 'horizontal-funnel': new HorizontalFunnel,\n 'horizontal-funnel-3d': new HorizontalFunnel3d,\n 'metric-combo': new MetricCombo,\n 'heatmap': new Heatmap,\n 'choropleth': new Choropleth\n };\n\n const c3Types = [\n // Standard types\n 'area',\n 'area-spline',\n 'area-step',\n 'bar',\n 'donut',\n 'gauge',\n 'line',\n 'pie',\n 'step',\n 'spline',\n\n // Horizontal variant types\n 'horizontal-area',\n 'horizontal-area-spline',\n 'horizontal-area-step',\n 'horizontal-bar',\n 'horizontal-line',\n 'horizontal-step',\n 'horizontal-spline',\n ];\n\n const getPaddings = (element, paddingName) => {\n return parseInt(window.getComputedStyle(element)[`padding${paddingName}`].replace('px', ''));\n }\n\n function getDefaultOptions(){\n const ENFORCED_OPTIONS = {\n bindto: this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'),\n color: {\n pattern: this.config.colors\n },\n data: {\n colors: { ...this.config.colorMapping },\n columns: [],\n type: this.config.type.replace('horizontal-', '')\n },\n };\n\n const renderingElement = this.el();\n\n let height = renderingElement.offsetHeight;\n\n height -= (getPaddings(renderingElement, 'Top') + getPaddings(renderingElement, 'Bottom'));\n\n if (this.config.showTitle) {\n const titleElement = this.el().querySelector('.keen-dataviz-title');\n if (titleElement) {\n height -= titleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.subtitle) {\n const subtitleElement = this.el().querySelector('.keen-dataviz-subtitle');\n if (subtitleElement) {\n height -= subtitleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.notes) {\n const notesElement = this.el().querySelector('.keen-dataviz-notes');\n if (notesElement) {\n height -= notesElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n let width = this.el().querySelector('.c3-chart').offsetWidth\n - (getPaddings(renderingElement, 'Left') + getPaddings(renderingElement, 'Right'));\n if (width < 0) {\n width = 0;\n }\n\n const DEFAULT_OPTIONS = {\n size: {\n width,\n height:\n height > 0 ?\n height\n : undefined,\n }\n };\n\n const extendedConfig = extendDeep({}, DEFAULT_OPTIONS, this.config, ENFORCED_OPTIONS);\n\n return extendedConfig;\n }\n\n each(c3Types, function(type, index) {\n types[type] = {\n render: function(){\n const options = getDefaultOptions.call(this);\n\n // 100% for charts\n const sumArray = calculateSumForPercents(this.dataset.matrix);\n let oldMatrix = [];\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' || type === 'area-step' || type === 'area-spline')) {\n oldMatrix = this.dataset.matrix;\n this.dataset.matrix = [this.dataset.matrix[0], ...calculatePercents(this.dataset.matrix, sumArray)];\n if(!options.sparkline){\n options.axis = {\n y: {\n padding: {\n top: 0,\n },\n tick: {\n format: d => `${d}%`,\n },\n },\n };\n }\n }\n\n // range charts\n if (options.range) {\n this.dataset.matrix = [this.dataset.matrix[0], ...calculateRange(this.dataset.matrix)];\n }\n\n if (!!this.config.clearOnRender && options.data.columns.length && this.dataset && this.dataset.meta) {\n const datasetMeta = this.dataset.meta || {};\n const { type = '' } = datasetMeta;\n let spliceFrom = 0;\n const intervalTypes = ['interval'];\n if (intervalTypes.includes(type)) {\n spliceFrom = 1;\n }\n options.data.columns.splice(spliceFrom);\n }\n\n if (this.data()[0].length === 1 || this.data().length === 1) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n let removeLegend = false;\n\n if (type === 'gauge') {\n // Accommodate a neat bug:\n options.legend.show = false;\n options.data.columns = [[\n this.config.title || this.data()[1][0],\n this.data()[1][1]\n ]];\n removeLegend = true;\n }\n else if (type === 'pie' || type === 'donut') {\n options.data.columns = this.data().slice(1);\n }\n else {\n\n // Apply formatting for horizontal variant types\n if (type.indexOf('horizontal-') > -1) {\n options.axis.rotated = type.indexOf('horizontal-') > -1;\n }\n\n if (isDateString(this.data()[1][0])) {\n // TIMESERIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'timeseries';\n options.axis.x.tick = options.axis.x.tick || {\n format: this.config.dateFormat || c3DefaultDateFormat(this.data()[1][0], this.data()[2] ? this.data()[2][0] : this.data()[1][0]),\n culling: { max: 5 }\n };\n\n options.data.columns[0] = [];\n each(this.dataset.selectColumn(0), function(cell, i){\n if (i > 0) {\n cell = new Date(cell);\n }\n options.data.columns[0][i] = cell;\n });\n options.data.columns[0][0] = 'x';\n options.data.x = 'x';\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n else {\n // CATEGORIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'category';\n options.axis.x.categories = this.dataset.selectColumn(0).slice(1);\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n\n if (this.data()[0].length === 2) {\n options.legend.show = false;\n removeLegend = true;\n }\n\n each(this.data()[0], function(cell, i){\n if (i > 0) {\n options.data.columns.push(this.dataset.selectColumn(i));\n }\n }.bind(this));\n }\n\n if (removeLegend){\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n legendElement.remove();\n options.size.width = this.el().querySelector('.c3-chart').offsetWidth;\n }\n options.legend.show = false;\n }\n\n const chartTypesWithPartialIntervalIndicator = ['area', 'area-spline', 'area-step', 'line', 'spline', 'step'];\n\n if (options.partialIntervalIndicator\n && options.partialIntervalIndicator.show\n && chartTypesWithPartialIntervalIndicator.indexOf(options.type) > -1\n ) {\n const results = options.data.columns && options.data.columns[0];\n if (results && results.length > 1) {\n const partialResultsRegion = {\n axis: 'x',\n start: new Date(results[results.length - 2]),\n class: options.partialIntervalIndicator.className\n };\n options.regions = [...(options.regions || []), partialResultsRegion];\n }\n }\n \n if (\n !(options.tooltip && options.tooltip.show === false)\n &&\n (options.legend.show === true ||\n (options.legend\n && options.legend.tooltip\n && options.legend.tooltip.show)\n )) {\n \n // Apply custom tooltip\n options.tooltip = {\n contents: c3TooltipContents,\n format: {\n title: this.config.tooltip.format.title,\n value: (value, ratio, id, index) => {\n let valueFormatted = c3CustomTooltipFiltering.call(this, value, ratio, id, index);\n if (this.config.tooltip && this.config.tooltip.format && this.config.tooltip.format.value)\n {\n valueFormatted = this.config.tooltip.format.value.call(this, valueFormatted, ratio, id, index);\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = parseFloat(((valueFormatted / 100) * sumArray[index]).toFixed(2));\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = ((valueFormatted / 100) * sumArray[index]).toFixed(2);\n return parseFloat(valueFormatted);\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n }\n };\n }\n\n if (options.legend.show === true) {\n const c3options = { ...options };\n // Apply custom color handling\n c3options.data.color = c3CustomDataMapping.bind(this);\n\n c3options.legend.hide = true; // hide default c3 legend\n\n // Render artifacts\n this.view._artifacts['c3'] = c3.generate(c3options);\n\n c3PaginatingLegend.call(this, {...options, onLegendRendered: () => {\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n if (\n options.legend.position === 'top' ||\n options.legend.position === 'bottom'\n ) {\n c3options.size.height -= legendElement.offsetHeight;\n this.view._artifacts['c3'].resize({ height: c3options.size.height });\n } else {\n if (c3options.size.width === 0) {\n c3options.size.width = this.el().offsetWidth\n - getPaddings(this.el(), 'Left')\n - getPaddings(this.el(), 'Right');\n }\n c3options.size.width -= legendElement.offsetWidth;\n this.view._artifacts['c3'].resize({ width: c3options.size.width });\n }\n }\n },\n onPaginated: () => {\n this.view._artifacts['c3'].flush();\n }\n });\n }\n else {\n this.view._artifacts['c3'] = c3.generate(options);\n }\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts['c3']) {\n this.view._artifacts['c3'].destroy();\n this.view._artifacts['c3'] = null;\n }\n }\n };\n });\n\n return types;\n}\n\nfunction c3CustomDataMapping(color, d) {\n const type = this.config.type;\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if ((d.id && scope.indexOf(d.id) > -1)\n || (d && !d.id && scope.indexOf(d) > -1)) {\n return color;\n }\n else {\n if (type === 'donut' || type === 'pie') {\n return 'rgba(0,0,0,.1)';\n }\n else {\n return 'rgba(0,0,0,.07)';\n }\n }\n }\n else {\n return color;\n }\n}\n\nfunction c3CustomTooltipFiltering(value, ratio, id, index) {\n const type = this.config.type;\n\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if (scope.indexOf(id) > -1) {\n return value;\n }\n }\n else {\n return value;\n }\n}\n\nfunction bindResizeListener(fn){\n if (typeof window === 'undefined') return;\n window.onresize = window.resize = function(){};\n if (window.addEventListener) {\n window.addEventListener('resize', fn, true);\n }\n else if (window.attachEvent) {\n window.attachEvent('onresize', fn);\n }\n}\n","export default function (startDate, endDate) {\n const timeDiff = Math.abs(new Date(startDate).getTime() - new Date(endDate).getTime());\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'June',\n 'July',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n // Yearly (31536000000) + Monthly\n if (timeDiff >= 2419200000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getFullYear();\n };\n }\n // Daily\n else if (timeDiff >= 86400000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getDate();\n };\n }\n // Hourly\n else if (timeDiff >= 3600000) {\n return '%I:%M %p';\n }\n // Minutely\n else {\n return '%I:%M:%S %p';\n }\n}\n","import * as d3 from 'd3';\n\nimport isDateString from '../../../utils/assert-date-string';\n\nexport default function (options) {\n const cols = options.data.columns;\n const datavizInstance = this;\n const chart = this.view._artifacts.c3;\n let columns = [];\n const domNode = this.el().querySelector('.' + datavizInstance.config.theme + '-rendering');\n const legendConfig = datavizInstance.config.legend;\n\n const pagination = this.view._artifacts.pagination = {\n ...{\n hidden: [],\n labels: [],\n offset: 0,\n limit: Math.round((domNode.offsetHeight - 78) / 20),\n total: 0\n },\n ...legendConfig.pagination\n };\n\n if (options.legend.sort) {\n columns = options.legend.sort(cols);\n\n // update column order in the data, so tooltip will be the same order\n const columnsSorted = [];\n const dataColumnsSorted = [];\n if (cols[0][0] === 'x') {\n dataColumnsSorted.push(cols[0]);\n }\n columns.forEach(column => {\n let columnData = options.data.columns.find(item => item[0] === column);\n dataColumnsSorted.push(columnData);\n });\n options.data.columns = dataColumnsSorted;\n } else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i][0] !== 'x' && !isDateString(cols[i][1])) {\n columns.push(cols[i][0]);\n }\n }\n }\n\n const legendElement = this.el().querySelector('.keen-c3-legend');\n\n let align = 'vertical';\n if (legendConfig.position === 'top' || legendConfig.position === 'bottom') {\n align = 'horizontal';\n }\n\n const paginateHorizontalLeftElement = document.createElement('div');\n paginateHorizontalLeftElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-left');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalLeftElement);\n }\n\n const legendItemsElement = document.createElement('div');\n legendItemsElement.setAttribute('class', `keen-c3-legend-items keen-c3-legend-${align}-items`);\n legendElement.append(legendItemsElement);\n\n const paginateVerticalElement = document.createElement('div');\n paginateVerticalElement.setAttribute('class', 'keen-c3-legend-pagination keen-c3-legend-pagination-icons');\n if (align === 'vertical') {\n legendElement.append(paginateVerticalElement);\n }\n\n const paginateHorizontalRightElement = document.createElement('div');\n paginateHorizontalRightElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalRightElement);\n }\n\n paginateData();\n\n function paginateData(){\n pagination.labels = columns.slice(pagination.offset, pagination.offset + pagination.limit);\n pagination.total = columns.length;\n renderLegendComponent.call(datavizInstance, pagination.labels);\n if (pagination.total > pagination.limit) {\n renderPaginationComponent.call(datavizInstance);\n }\n if (options.onPaginated){\n options.onPaginated();\n }\n }\n\n function renderLegendComponent(){\n legendItemsElement.innerHTML = '';\n\n pagination.labels.forEach(label => {\n const labelShortened = legendConfig.label.textMaxLength ? label.slice(0, legendConfig.label.textMaxLength - 1) : label;\n const legendItem = document.createElement(\"div\");\n legendItem.innerHTML = `${labelShortened}`;\n legendItem.chartPartId = label;\n legendItem.setAttribute('class', 'legend-item');\n legendItemsElement.append(legendItem);\n\n const legendItemColorSample = document.createElement(\"span\");\n legendItemColorSample.setAttribute('class', 'legend-item-color-sample');\n legendItemColorSample.style.backgroundColor = chart.color(legendItem.chartPartId);\n legendItem.prepend(legendItemColorSample);\n\n const tooltipElement = document.createElement(\"div\");\n legendItem.addEventListener('mouseover', (event) => {\n chart.focus(legendItem.chartPartId);\n if (legendConfig.tooltip.show && legendItem.chartPartId.length > legendConfig.label.textMaxLength) {\n tooltipElement.setAttribute('class', `keen-c3-legend-label-overlay keen-c3-legend-position-${legendConfig.position}`);\n tooltipElement.innerHTML =\n `${\n options.legend.tooltip.pointer ? `
` : ``\n }${legendItem.chartPartId}`;\n legendItem.append(tooltipElement);\n }\n });\n legendItem.addEventListener('mouseout', (event) => {\n chart.revert();\n tooltipElement.remove();\n });\n legendItem.addEventListener('click', (event) => {\n let opacity = 1;\n const isHidden = pagination.hidden.indexOf(legendItem.chartPartId);\n if (isHidden < 0) {\n pagination.hidden.push(legendItem.chartPartId);\n opacity = .35;\n }\n else {\n pagination.hidden.splice(isHidden, 1);\n opacity = 1;\n }\n legendItem.style.opacity = opacity;\n chart.toggle(legendItem.chartPartId);\n });\n });\n\n if (options.onLegendRendered){\n options.onLegendRendered();\n options.onLegendRendered = null;\n }\n\n }\n\n function renderPaginationComponent(){\n paginateVerticalElement.innerHTML = '';\n paginateHorizontalLeftElement.innerHTML = '';\n paginateHorizontalRightElement.innerHTML = '';\n\n const arrowUp = document.createElement('i');\n const arrowDown = document.createElement('i');\n\n const paginate = (direction) => {\n if (direction === 'forward') {\n const diff = pagination.offset + pagination.limit;\n if (diff < pagination.total) {\n pagination.offset = diff;\n return;\n }\n pagination.offset = 0;\n return;\n }\n\n const diff = pagination.offset - pagination.limit;\n if (diff >= 0) {\n pagination.offset = diff;\n return;\n }\n\n pagination.offset = Math.floor(pagination.total/pagination.limit) * pagination.limit;\n };\n\n arrowDown.addEventListener('click', () => {\n paginate('forward');\n paginateData();\n clearSelectedText();\n });\n\n arrowUp.addEventListener('click', () => {\n paginate('backward');\n paginateData();\n clearSelectedText();\n });\n\n if (legendConfig.position === 'left' || legendConfig.position === 'right') {\n arrowUp.setAttribute('class', 'up');\n arrowDown.setAttribute('class', 'down');\n paginateVerticalElement.append(arrowDown);\n paginateVerticalElement.append(arrowUp);\n } else {\n // bottom top\n arrowUp.setAttribute('class', 'left');\n arrowDown.setAttribute('class', 'right');\n paginateHorizontalLeftElement.append(arrowUp);\n paginateHorizontalRightElement.append(arrowDown);\n }\n\n }\n\n function clearSelectedText() {\n let selection;\n if (document.selection && document.selection.empty) {\n selection = document.selection;\n selection.empty();\n }\n else if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n }\n }\n}\n","import { escapeHtml } from '../../../utils/escape-html';\n\nexport default function (d, defaultTitleFormat, defaultValueFormat, color) {\n let text;\n let title;\n // Set config options or defaults\n const nameFormat = this.config.tooltip_format_name || function (name) { return name; };\n const titleFormat = this.config.tooltip_format_title || defaultTitleFormat;\n const valueFormat = this.config.tooltip_format_value || defaultValueFormat;\n\n // Reverse list to match legend\n for (let i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n if (!text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n let name = nameFormat(d[i].name);\n let value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n let bgcolor = this.levelColor ? this.levelColor(d[i].value) : color(d[i].id);\n if (value && !isNaN(value)) {\n text += \"\";\n if (name.indexOf('__tooltip_ignore_name_field__') === -1) {\n text += \"\";\n }\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + escapeHtml(title) + \"
\" + escapeHtml(name) + \"\" + escapeHtml(value) + \"
\";\n}\n","export default function calculateRange(matrix) {\n const newValues = matrix.slice(1).map(d => d.map((e, i) => {\n if (typeof e === 'number') {\n if (i === 1) {\n return e - d[i + 1];\n }\n }\n return e;\n }));\n return newValues;\n}","export function calculateSumForPercents(matrix) {\n const sumArray = [];\n matrix.slice(1).forEach((d, i) => {\n d.forEach((e) => {\n if (typeof e === 'number') {\n if (!sumArray[i]) {\n sumArray[i] = e;\n return sumArray[i];\n }\n sumArray[i] += e;\n }\n return sumArray[i];\n });\n });\n return sumArray;\n}\n\nexport function calculatePercents(matrix, sumArray) {\n const newValues = matrix.slice(1).map((d, i) => d.map((e) => {\n if (typeof e === 'number') {\n return (e / sumArray[i]) * 100;\n }\n return e;\n }));\n return newValues;\n}\n","import { escapeHtml } from '../../utils/escape-html';\nimport renderDownloadButton from '../../utils/render-download-btn';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default {\n render: function(text){\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n const msg = document.createElement('span');\n\n const titleContainer = document.createElement('div');\n const subtitleContainer = document.createElement('div');\n const notesContainer = document.createElement('div');\n\n outer.className = this.config.theme + ' keen-dataviz-box';\n inner.className = this.config.theme + '-message';\n\n // Create title and notes for message\n titleContainer.className = this.config.theme + '-title';\n titleContainer.innerHTML = escapeHtml(this.config.title || '');\n subtitleContainer.className = this.config.theme + '-subtitle';\n subtitleContainer.innerHTML = escapeHtml(this.config.subtitle || '');\n notesContainer.className = this.config.theme + '-notes';\n notesContainer.innerHTML = escapeHtml(this.config.notes || '');\n\n msg.innerHTML = escapeHtml(text) || '';\n inner.appendChild(msg);\n\n if (this.config.title && this.config.showTitle) {\n outer.appendChild(titleContainer);\n }\n\n if (this.config.subtitle) {\n outer.appendChild(subtitleContainer);\n }\n\n outer.appendChild(inner);\n\n if (this.config.notes) {\n outer.appendChild(notesContainer);\n }\n\n if (this.config.ui\n && this.config.ui.buttons\n && this.config.ui.buttons.download\n && this.config.ui.buttons.download.type) {\n renderDownloadButton({\n element: this.el(),\n data: escapeHtml(text) || '',\n type: this.config.ui.buttons.download.type,\n label: this.config.ui.buttons.download.label,\n })\n }\n\n if (this.config.utils\n && this.config.utils.clickToCopyToClipboard) {\n titleContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n notesContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n msg.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n\n this.el().innerHTML = '';\n this.el().appendChild(outer);\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import exportImage from './export-svg';\nimport exportData from './export-data';\n\nexport default function downloadResults(obj) {\n const { event, type, data } = obj;\n event.preventDefault();\n const supportedFormats = ['json', 'csv', 'jpg', 'jpeg', 'png'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = '';\n let content = '';\n\n if (format === 'png') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n });\n return;\n }\n\n if (format === 'jpg' || format === 'jpeg') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n quality: 1,\n bgcolor: '#fff',\n });\n return;\n }\n\n if (format === 'json') {\n exportData({ type: format, data });\n }\n\n if (format === 'csv') {\n exportData({ type: format, data });\n }\n}\n","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { prettyNumber } from '../../utils/pretty-number';\nimport { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nfunction formatExtractionData(res, prop) {\n const { query, result } = res;\n const formattedResult = [];\n if (query.analysis_type !== 'extraction') throw new Error('Analysis type is not an extraction!');\n if (Array.isArray(result)) {\n result.forEach((item) => {\n const itemProp = prop.split('.').reduce((acc, val) => (acc && acc[val]) || null, item);\n const obj = {\n query,\n result: itemProp,\n };\n formattedResult.push(obj);\n });\n }\n return formattedResult;\n}\n\nexport default {\n render: function(){\n let color = this.config.colors[0];\n const theme = this.config.theme;\n const title = this.config.title;\n const subtitle = this.config.subtitle;\n const opts = this.config;\n let value = '-';\n let prevValue= '';\n let html = '';\n let prefix = '';\n let suffix = '';\n let formattedNum;\n let flexDifferenceStyle = '';\n let resultDifference = '';\n let differenceStyle = '';\n let smallerValue = '';\n const { results, previousResults, isExtraction, comparedProp } = this.config;\n if(results && previousResults){\n flexDifferenceStyle = previousResults ? ' metric-comparison' : '';\n smallerValue = previousResults && title ? '-smaller' : '';\n resultDifference = results.result - previousResults.result;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n if (this.data() && this.data()[1] && this.data()[1][1] && typeof this.data()[1][1] === 'number') {\n value = this.data()[1][1];\n }\n\n if (isExtraction && comparedProp) {\n const formattedResult = formatExtractionData(results, comparedProp);\n \n value = formattedResult[0].result;\n prevValue = formattedResult[1].result;\n\n flexDifferenceStyle = prevValue ? ' metric-comparison' : '';\n smallerValue = prevValue && title ? '-smaller' : '';\n resultDifference = value - prevValue;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n formattedNum = value;\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(value)) ) {\n formattedNum = prettyNumber(value);\n if(results && previousResults){\n resultDifference = prettyNumber(resultDifference);\n }\n }\n\n if (opts['prefix']) {\n prefix = '' + opts['prefix'] + '';\n }\n if (opts['suffix']) {\n suffix = '' + opts['suffix'] + '';\n }\n html += '
';\n html += '
';\n if (results && previousResults) {\n html += '
' + escapeHtml(resultDifference) + '
';\n }\n if (isExtraction && comparedProp) {\n if (value && prevValue) {\n html += '
' + escapeHtml(resultDifference) + '
';\n html += '' + prevValue + '';\n } else {\n html += '

No data to display

';\n }\n }\n html += '
' + prefix + escapeHtml(formattedNum) + suffix + '
';\n if (title) {\n html += '
' + escapeHtml(title) + '
';\n }\n if (subtitle) {\n html += '
' + escapeHtml(subtitle) + '
';\n }\n html += '
';\n html += '
';\n\n this.el().innerHTML = html;\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const resultClassName = `.${theme}-metric-value${smallerValue}`;\n document.querySelector(resultClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n\n if (results && previousResults) {\n const previousResultsClassName = `.${theme}-metric${differenceStyle}`;\n document.querySelector(previousResultsClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n }\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nlet currentPage;\nfunction _generateTableRows(datavizInstance, dataset) {\n let html = '';\n const defaultConfig = {\n page: 1,\n limit: 0,\n arrows: true\n };\n let customConfig = {};\n if (datavizInstance.config.table && datavizInstance.config.table.pagination) {\n customConfig = datavizInstance.config.table.pagination;\n }\n const config = {\n ...defaultConfig,\n ...customConfig\n };\n\n if (!currentPage){\n currentPage = config.page;\n }\n\n let datasetPaginated;\n let pages = 0;\n if (config.limit === 0) {\n datasetPaginated = dataset.slice(1); // remove header\n } else {\n const start = config.limit * (currentPage - 1) + 1;\n const end = start + config.limit;\n datasetPaginated = dataset.slice(start, end);\n pages = Math.ceil((dataset.length - 1) / config.limit);\n }\n\n let columnsArray = datavizInstance.config.table.columns ?\n datavizInstance.config.table.columns :\n datavizInstance.dataset.matrix[0];\n\n const colNamesToMap = {};\n const {\n mapValues,\n mapDates,\n } = datavizInstance.config.table;\n for (let key in mapValues){\n colNamesToMap[columnsArray.indexOf(key)] = key;\n }\n\n for (let row of datasetPaginated) {\n html += '';\n for (let [index, rowColValue] of row.entries()) {\n if (mapDates && rowColValue instanceof Date) {\n rowColValue = mapDates(rowColValue);\n }\n\n let rowColValueEscaped = escapeHtml(rowColValue);\n if(colNamesToMap[index]){\n html += `${mapValues[colNamesToMap[index]](rowColValueEscaped)}`;\n continue;\n }\n html += `${rowColValueEscaped}`\n }\n html += '';\n }\n\n if (pages > 1){\n html += ``;\n let pageNumber = 1;\n const prevPage = (currentPage === 1) ? 1 : (currentPage - 1);\n const nextPage = (currentPage === pages) ? pages : (currentPage + 1);\n if (config.arrows){\n html += `«`;\n }\n while (pageNumber <= pages){\n html += `${pageNumber}`;\n pageNumber++;\n }\n if (config.arrows){\n html += `»`;\n }\n html += '';\n }\n\n return html;\n}\n\nfunction _generateTableHeader(datavizInstance, dataset) {\n let html = '';\n let fieldNumber = -1;\n const tableConfig = datavizInstance.config.table;\n const columnNames =\n (tableConfig && tableConfig.columns)\n || dataset[0];\n for (let colName of columnNames) {\n let colNameEscaped = escapeHtml(colName);\n fieldNumber +=1;\n html += `${colNameEscaped}`;\n }\n return html;\n}\n\n\n const render = function() {\n const dataset = this.dataset.matrix;\n\n const el = this.el();\n const theme = this.config.theme;\n const datavizInstance = this;\n\n let html = '';\n\n const isEmpty = dataset.length === 1 && dataset[0].length === 0;\n if (isEmpty) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n // Open wrapper\n html += `
`;\n\n // Static, scrollable table\n html += ``;\n html += '';\n html += '';\n html += _generateTableHeader(datavizInstance, dataset);\n html += '';\n html += '';\n // Table data\n html += '';\n html += _generateTableRows(datavizInstance, dataset);\n html += '';\n html += '
';\n/* */\n // Close wrapper\n html += '
';\n\n // Inject HTML string\n el.querySelector(`.${theme}-rendering`).innerHTML = html;\n\n el\n .querySelectorAll(`.${theme}-rendering th`)\n .forEach((item) => {\n item.addEventListener('click', (event) => {\n let sortOrder = event.target.getAttribute('order') || 'asc';\n let fieldNumber = event.target.getAttribute('fieldNumber');\n let checker = function (a, b) {\n let sortOrderNumber = (sortOrder === 'asc') ? 1 : -1;\n\n if (typeof a[fieldNumber] === 'string') {\n let nameA = a[fieldNumber].toUpperCase(); // ignore upper and lowercase\n let nameB = b[fieldNumber].toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1 * sortOrderNumber;\n }\n if (nameA > nameB) {\n return 1* sortOrderNumber;\n }\n\n // names must be equal\n return 0;\n }\n return (a[fieldNumber] - b[fieldNumber]) * sortOrderNumber;\n };\n\n if (sortOrder === 'asc') {\n sortOrder = 'desc';\n } else {\n sortOrder = 'asc'\n }\n event.target.setAttribute('order', sortOrder);\n\n const first = this.dataset.matrix.shift();\n this.dataset.matrix.sort(checker);\n this.dataset.matrix.unshift(first);\n\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n });\n });\n\n\n const attachBtnEventListeners = () => {\n el.querySelectorAll('.btn').forEach(btn => {\n btn.addEventListener('click', (event) => {\n currentPage = parseInt(event.target.getAttribute('data-page'));\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n }, true);\n });\n };\n\n attachBtnEventListeners(datavizInstance, el, theme);\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const tableClass = `.${theme}-table-dataset`;\n document.querySelector(tableClass)\n .addEventListener('click', (e) => {\n const { nodeName, innerText } = e.target;\n if (nodeName === 'TD') {\n copyToClipboard(innerText, e);\n }\n });\n }\n };\n\n\n\nconst update = function(){\n // no special update handling\n this.render();\n };\n\nconst destroy= function(){};\n\nexport default { render, update, destroy };\n","export default {\n render: function(){\n let html = '';\n const artifacts = this.view._artifacts.spinner = {};\n\n // Build DOM element\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n this.el().innerHTML = html;\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts.spinner) {\n if (this.view._artifacts.spinner.interval) {\n clearInterval(this.view._artifacts.spinner.interval);\n }\n this.view._artifacts.spinner.radius = 0;\n try {\n delete this.view._artifacts.spinner;\n }\n catch (e) {\n this.view._artifacts.spinner = undefined;\n }\n }\n this.el().innerHTML = '';\n }\n};\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 30, left: 200 };\n let yMarginElement = 0;\n if(marginBetweenSteps){\n yMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if (countingMethod === \"relative\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth =\n (prevElemWidth * d[1]) / matrix[i][1]);\n percent = ((d[1] / matrix[i][1]) * 100).toFixed(decimals);\n }\n if (countingMethod === \"absolute\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth = (svgWidth * d[1]) / matrix[1][1]);\n percent = ((d[1] / matrix[1][1]) * 100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n \n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('x2', (d) => { return d.points[1].x + margin.left; })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('x2', polygons[polygons.length-1].points[2].x + margin.left)\n .attr('y2', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2)\n + (margin.left * 0.9);\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 16\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 12\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top;\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement - 5;\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 60, left: 200 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n const yMarginElement = elemHeight * 0.3;\n const shadowCut = (yMarginElement * 2.5);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = prevElemWidth * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = svgWidth * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[3].x,\n y: d.points[3].y\n },\n {\n x: d.points[2].x,\n y: d.points[2].y\n },\n {\n x: effect3d === 'left'\n ? d.points[2].x\n : d.points[2].x - shadowCut < svgWidth/2\n ? svgWidth/2 + 5\n : d.points[2].x - shadowCut,\n y: effect3d === 'left'\n ? d.points[2].y\n : d.points[2].y + (yMarginElement/1.5)\n },\n {\n x: effect3d === 'right'\n ? d.points[3].x\n : d.points[3].x + shadowCut > svgWidth/2\n ? svgWidth/2 - 5\n : d.points[3].x + shadowCut,\n y: effect3d === 'right'\n ? d.points[3].y\n : d.points[3].y + (yMarginElement/1.5)\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('x2', (d, i) => {\n if(i === 0){\n return d.points[1].x + margin.left;\n }\n return d.points[1].x + margin.left - shadowCut;\n })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('x2', polygons[polygons.length-1].points[2].x\n + margin.left - shadowCut )\n .attr('y2', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5 + (yMarginElement/4)\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2) + 130;\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 18\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 3\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n let xMarginElement = 0;\n if(marginBetweenSteps){\n xMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined'\n || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left - (xMarginElement/2))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/2))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight + (margin.bottom * 0.5) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', (d) => {\n if(d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) > svgHeight + margin.bottom - 40 + margin.top){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n return d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n const xMarginElement = elemWidth * 0.3;\n const shadowCut = (xMarginElement/1.5);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[0].x,\n y: d.points[0].y\n },\n {\n x: d.points[1].x,\n y: d.points[1].y\n },\n {\n x: effect3d === 'top'\n ? d.points[1].x\n : d.points[1].x - shadowCut,\n y: effect3d === 'top'\n ? d.points[1].y\n : d.points[1].y - xMarginElement < svgHeight/2\n ? svgHeight/2 + 5\n : d.points[1].y - xMarginElement\n },\n {\n x: effect3d === 'bottom'\n ? d.points[0].x\n : d.points[0].x - shadowCut,\n y: effect3d === 'bottom'\n ? d.points[0].y\n : d.points[0].y + xMarginElement > svgHeight/2\n ? svgHeight/2 - 5\n : d.points[0].y + xMarginElement\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left + (xMarginElement/4))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/4))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', svgHeight + (margin.bottom * 0.4) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', (d) => {\n if(d.points[2].y + (elemWidth/4) >\n svgHeight + margin.bottom - 40){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n if(d.points[2].y + (elemWidth/4) < d.points[1].y){\n return d.points[1].y + 20 + margin.top;\n }\n return d.points[2].y + (elemWidth/4) + 10 + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","/* eslint-env browser */\nimport c3 from 'c3';\nimport { each } from '../../utils/each';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class MetricCombo {\n render() {\n const {\n container,\n metricResults,\n title,\n showTitle,\n subtitle,\n tooltip,\n utils,\n } = this.config;\n\n const colors = ['#c3c4cc'];\n const columns = [];\n columns[0] = [];\n each(this.dataset.selectColumn(0), (c, i) => {\n let cell;\n if (i > 0) {\n cell = new Date(c);\n }\n columns[0][i] = cell;\n });\n columns[0][0] = 'x';\n\n each(this.data()[0], (c, i) => {\n if (i > 0) {\n columns.push(this.dataset.selectColumn(i));\n }\n });\n\n const prevResult = (metricResults && metricResults.previous && metricResults.previous.result)\n || 0;\n const currResult = (metricResults && metricResults.current && metricResults.current.result)\n || 0;\n const count = currResult - prevResult;\n const percentDifference = prevResult === 0 ? '-' : prettyNumber(Math.round((count / prevResult) * 100));\n let labelClass = 'keen-dataviz-metric-green';\n let iconClass = 'arrow-green';\n\n if (percentDifference < 0) {\n labelClass = 'keen-dataviz-metric-red';\n iconClass = 'arrow-red';\n }\n\n const containerTitle = (showTitle && title) ? `
${title}
` : '';\n const containerSubtitle = subtitle ? `
${subtitle}
` : '';\n const containerElement = document.querySelector(container);\n containerElement.innerHTML = `\n
\n
\n
\n ${containerTitle}\n ${containerSubtitle}\n
${percentDifference} %
\n
${prettyNumber(count)}
\n
\n
\n
\n
\n
\n
`;\n const chartRoot = containerElement.querySelector('.c3-chart');\n const chart = c3.generate({\n bindto: chartRoot,\n color: {\n pattern: colors,\n },\n title,\n legend: {\n show: false,\n },\n data: {\n x: 'x',\n columns,\n type: 'area-spline',\n selection: {\n draggable: false,\n enabled: true,\n multiple: true,\n },\n },\n point: {\n r: 0,\n focus: {\n expand: {\n r: 5,\n enabled: true,\n },\n },\n select: {\n r: 5,\n enabled: true,\n },\n },\n axis: {\n y: {\n show: false,\n },\n x: {\n show: false,\n },\n },\n grid: {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n },\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: -4,\n },\n tooltip,\n });\n\n if (utils && utils.clickToCopyToClipboard) {\n const currentCount = document.querySelector('.current-count').innerText;\n document.querySelector('.keen-dataviz-metric-combo')\n .addEventListener('click', e => copyToClipboard(currentCount, e));\n }\n }\n\n update() {\n this.destroy();\n this.render();\n }\n\n destroy() {\n const { container } = this.config;\n const containerElement = document.querySelector(container);\n const chartContainer = containerElement.querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport Rangeable from 'rangeable';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Heatmap {\n render() {\n const {\n colors,\n container,\n heatmap: { showSlider, simpleTooltip },\n } = this.config;\n const {\n matrix,\n meta,\n } = this.dataset;\n const margin = {\n top: 10,\n right: 10,\n bottom: 50,\n left: 50,\n };\n const baseWidth = 600;\n const baseHeight = 600;\n const heatmapContainer = d3.select(container);\n const containerWidth = parseInt(heatmapContainer.style('width'), 10) || baseWidth;\n const containerHeight = parseInt(heatmapContainer.style('height'), 10) || baseHeight;\n const chartContainer = this.el().querySelector('.c3-chart');\n const svgWidth = containerWidth - margin.right - margin.left;\n const svgHeight = containerHeight - margin.top - margin.bottom;\n\n const xLabel = new Set();\n const yLabel = new Set();\n\n const formatData = () => {\n const dateFormat = d3.timeFormat('%B %d');\n const timeFormat = d3.timeFormat('%H:%M');\n const arr = [];\n matrix.forEach((element) => {\n if (meta.type === 'heatmap') {\n if (typeof element[0][2] === 'number') {\n const obj = {\n x: element[0][0],\n y: element[0][1],\n value: element[0][2],\n };\n arr.push(obj);\n }\n } else {\n const timestamp = Date.parse(element[0]);\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(timestamp)) {\n const obj = {\n x: dateFormat(new Date(element[0])),\n y: timeFormat(new Date(element[0])),\n value: element[1],\n };\n arr.push(obj);\n }\n }\n });\n return arr;\n };\n\n const formattedData = formatData();\n\n formattedData.forEach((item) => {\n xLabel.add(item.x);\n yLabel.add(item.y);\n });\n\n const refValue = formattedData[0].value;\n const minRange = formattedData\n .reduce((min, curr) => (curr.value < min ? curr.value : min), refValue);\n const maxRange = formattedData\n .reduce((max, curr) => (curr.value > max ? curr.value : max), refValue);\n\n const getColor = () => {\n const defaultColor = '#00BBDE';\n const baseColor = colors[0];\n let rgb = d3.rgb(defaultColor);\n if (d3.color(baseColor)) {\n rgb = d3.rgb(baseColor);\n }\n return rgb;\n };\n\n const getColorAlpha = d3.scaleLinear()\n .domain([0, d3.max(formattedData, d => d.value)])\n .range([0, 1]);\n\n const convertRGBAtoRGB = (color, bg = [255, 255, 255]) => {\n const opacity = color[3];\n\n return [Math.floor(((1 - opacity) * bg[0]) + (opacity * color[0]) + 0.5),\n Math.floor(((1 - opacity) * bg[1]) + (opacity * color[1]) + 0.5),\n Math.floor(((1 - opacity) * bg[2]) + (opacity * color[2]) + 0.5)];\n };\n\n const getTileColor = (value) => {\n const alpha = getColorAlpha(value);\n const rgb = getColor();\n const solidColor = convertRGBAtoRGB([rgb.r, rgb.g, rgb.b, alpha]);\n const color = `rgb(${solidColor[0]}, ${solidColor[1]}, ${solidColor[2]})`;\n return color;\n };\n\n const svg = d3.select(chartContainer)\n .append('svg')\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${containerWidth} ${containerHeight}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr(\n 'transform',\n `translate(${margin.left},${margin.top})`,\n );\n\n if (showSlider) {\n // eslint-disable-next-line no-unused-vars\n const rangeableInput = d3.select(container)\n .append('input')\n .attr('type', 'range')\n .attr('class', 'keen-dataviz-slider');\n\n const handleSliderChange = (data) => {\n const rects = svg.selectAll('rect');\n const [min, max] = data;\n\n rects.each((d, i, nodes) => {\n d3.select(nodes[i])\n .style('visibility', () => ((d.value > max || d.value < min) ? 'hidden' : 'visible'));\n });\n };\n\n // eslint-disable-next-line no-unused-vars\n const rangeable = new Rangeable('.keen-dataviz-slider', {\n multiple: true,\n min: minRange,\n max: maxRange,\n value: [minRange, maxRange],\n onChange: data => handleSliderChange(data),\n });\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${getColor()};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${getColor()} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${getColor()};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement('style');\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector('script');\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const xLabelBase = 5;\n const yLabelBase = 10;\n\n const getAxisLabelRatio = (base, labelSize) => Math.floor(labelSize / base) + 1;\n const xAxis = d3.scaleBand()\n .range([0, svgWidth])\n .domain([...xLabel])\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .attr('transform', `translate(0, ${svgHeight})`)\n .call(d3.axisBottom(xAxis).tickSize(0))\n .selectAll('text')\n .attr('dy', '1em')\n .filter((d, i) => i % getAxisLabelRatio(xLabelBase, xLabel.size))\n .style('display', 'none');\n\n const yAxis = d3.scaleBand()\n .range([svgHeight, 0])\n .domain([...yLabel].sort())\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .call(d3.axisLeft(yAxis).tickSize(0))\n .selectAll('text')\n .filter((d, i) => i % getAxisLabelRatio(yLabelBase, yLabel.size))\n .style('display', 'none');\n\n const chartTooltip = d3.select(container)\n .append('div')\n .attr('class', 'keen-dataviz-tooltip')\n .style('opacity', 0)\n .style('background-color', 'white')\n .style('border', `2px solid ${getColor().toString()}`)\n .style('font-size', '14px')\n .style('padding', '2px 8px')\n .style('box-shadow', '2px 2px 4px rgba(0,0,0,0.25')\n .style('display', 'none')\n .style('position', 'fixed');\n\n const handleMouseOver = () => {\n d3.select(d3.event.target)\n .raise()\n .style('transition', 'transform 150ms ease-out')\n .style('outline', `1px solid ${getColor()}`)\n .style('transform', 'translate(0px, -4px)');\n\n chartTooltip\n .style('opacity', 1)\n .style('display', 'block');\n };\n\n const handleMouseMove = (d) => {\n let tooltipContent = `\n \n value:\n ${d.value}\n `;\n if (!simpleTooltip) {\n tooltipContent = `\n \n xAxis:\n ${d.x}\n \n \n yAxis:\n ${d.y}\n \n ${tooltipContent}\n `;\n }\n chartTooltip\n .html(`\n \n ${tooltipContent}\n
\n `)\n .style('left', `${d3.event.clientX + 10}px`)\n .style('top', `${d3.event.clientY + 10}px`);\n };\n\n const handleMouseLeave = () => {\n d3.select(d3.event.target)\n .style('outline', 'none')\n .style('transform', 'none');\n\n chartTooltip\n .style('opacity', 0)\n .style('display', 'none');\n };\n\n const handleClick = d => copyToClipboard(d.value);\n\n svg.selectAll()\n .data(formattedData, d => `${d.x}:${d.y}`)\n .enter()\n .append('rect')\n .attr('x', d => xAxis(d.x))\n .attr('y', d => yAxis(d.y))\n .attr('width', xAxis.bandwidth())\n .attr('height', yAxis.bandwidth())\n .style('fill', d => getTileColor(d.value))\n .style('cursor', 'pointer')\n .on('mouseover', handleMouseOver)\n .on('mousemove', handleMouseMove)\n .on('mouseleave', handleMouseLeave)\n .on('click', handleClick);\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = this.el().querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from \"d3\";\nimport Rangeable from \"rangeable\";\nimport { prettyNumber } from \"../../utils/pretty-number\";\nimport copyToClipboard from \"../../utils/copy-to-clipboard\";\n\nexport default class Choropleth {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n utils,\n title,\n choropleth: {\n map,\n borders: { show, size, color },\n showSlider\n }\n } = this.config;\n const opts = this.config;\n const choroplethContainer = d3.select(container);\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n const width = Number(choroplethContainer.style(\"width\").slice(0, -2));\n const height = Number(choroplethContainer.style(\"height\").slice(0, -2));\n let heightChanges = 0;\n if (title) heightChanges += 31;\n if (showSlider) heightChanges += 20;\n const chart = chartContainer\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height - heightChanges);\n\n const onlyValues = matrix.slice(1).map(el => el[1]);\n let minVal = d3.min(onlyValues);\n const maxVal = d3.max(onlyValues);\n if(minVal === maxVal) minVal = 0;\n const lightColor = d3.hsl(colors[0]).brighter(1);\n lightColor.l = 0.95;\n const darkColor = colors[0];\n const ramp = d3\n .scaleLinear()\n .domain([minVal === undefined ? 0 : minVal, maxVal === undefined ? 0 : maxVal])\n .range([lightColor, darkColor]);\n\n d3.json(\n `https://cdn.jsdelivr.net/npm/keen-dataviz-maps@1.0.0/maps/${map}.json`\n ).then(data => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 5])\n .translateExtent([[0, 0], [width, height - 50]])\n .on(\"zoom\", zoomed);\n\n let projection;\n switch (map) {\n case \"world\":\n projection = d3.geoMercator().fitSize([width, height - 50], data);\n break;\n case \"us\":\n projection = d3\n .geoAlbersUsa()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n\n default:\n projection = d3\n .geoMercator()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n }\n\n const path = d3.geoPath().projection(projection);\n\n const usData = data.features.map(el => {\n const theOne = matrix.filter(d => d[0] === el.properties.name);\n if (theOne[0])\n return {\n ...el,\n properties: { ...el.properties, result: theOne[0][1] }\n };\n return {\n ...el,\n properties: { ...el.properties, result: 0 }\n };\n });\n\n if (showSlider) {\n const handleSliderChange = data => {\n const el = chart.selectAll(`.${elementName}`);\n const [min, max] = data;\n\n el.each((d, i, nodes) => {\n d3.select(nodes[i]).style(\"visibility\", () =>\n d.properties.result > max || d.properties.result < min\n ? \"hidden\"\n : \"visible\"\n );\n });\n };\n\n chartContainer\n .style(\"display\", \"flex\")\n .style(\"flex-direction\", \"column\")\n .style(\"justify-content\", \"center\");\n\n const rangeContainer = chartContainer\n .append(\"div\")\n .style(\"width\", \"95%\")\n .style(\"margin\", \"auto\");\n rangeContainer.append(\"input\").attr(\"id\", \"rangeSlider\");\n\n const rangeable = new Rangeable(\"#rangeSlider\", {\n type: \"double\",\n tooltips: true,\n min: 0,\n max: maxVal,\n onChange: data => handleSliderChange(data)\n });\n\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${colors[0]};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${colors[0]} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${colors[0]};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement(\"style\");\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector(\"script\");\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const elementName = map === \"world\" ? \"country\" : \"state\";\n\n chart\n .selectAll(\"path\")\n .data(usData)\n .enter()\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"class\", elementName)\n .attr(\n \"id\",\n d =>\n `${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .attr(\"cursor\", \"pointer\")\n .on(\"mouseover\", handleMouseOver)\n .on(\"mousemove\", handleMouseMove)\n .on(\"mouseout\", handleMouseOut);\n\n //borders\n if (show) {\n chart\n .selectAll(`.${elementName}`)\n .style(\"stroke\", color)\n .style(\"stroke-width\", size);\n }\n\n //tooltip\n const tooltip = d3\n .select(\".c3-chart\")\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"c3-tooltip-container\")\n .style(\"display\", \"none\")\n .style(\"position\", \"fixed\");\n\n //hover handling\n function handleMouseOver(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(1.2 * maxVal))\n .style(\"stroke-width\", 1.5 * size);\n\n tooltip.style(\"opacity\", 1).style(\"display\", \"block\");\n }\n\n function handleMouseMove(d) {\n let result = d.properties.result;\n if (\n (typeof opts[\"prettyNumber\"] === \"undefined\" ||\n opts[\"prettyNumber\"] === true) &&\n !isNaN(parseInt(d.properties.result))\n ) {\n result = prettyNumber(d.properties.result);\n }\n tooltip\n .html(\n `\n \n \n \n \n \n \n \n
${d.properties.name}
${result}
\n `\n )\n .style(\"left\", `${d3.event.clientX + 10}px`)\n .style(\"top\", `${d3.event.clientY + 10}px`);\n }\n function handleMouseOut(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .style(\"stroke-width\", size);\n\n tooltip.style(\"opacity\", 0).style(\"display\", \"none\");\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll(`.${elementName}`);\n\n label.on(\"click\", handleClickToCopy);\n\n function handleClickToCopy(data) {\n const {\n properties: { result }\n } = data;\n copyToClipboard(result, d3.event);\n }\n }\n function zoomed() {\n chart\n .selectAll(`.${elementName}`)\n .attr(\"transform\", d3.event.transform);\n }\n chart.call(zoom);\n chart.call(zoom).on(\"mousedown.zoom\", null);\n });\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n chartContainer.remove();\n }\n}\n","import copyToClipboard from './copy-to-clipboard';\n\nfunction removeClassWithTimeOut(element, className = 'copied', ms = 1000) {\n setTimeout(() => {\n element.classList.remove(className);\n }, ms);\n}\n\nfunction handleCopyToClipboard(event) {\n const { target, target: { nodeName } } = event;\n\n let value;\n if (nodeName === 'DD') {\n value = target.innerText;\n if (!target.classList.contains('copied')) {\n target.classList.add('copied');\n removeClassWithTimeOut(target);\n }\n }\n if (nodeName === 'DT') {\n value = target.nextSibling.innerText;\n if (!target.nextSibling.classList.contains('copied')) {\n target.nextSibling.classList.add('copied');\n removeClassWithTimeOut(target.nextSibling);\n }\n }\n\n copyToClipboard(value);\n}\n\nexport default function renderExecutionMetadata({\n element,\n data,\n} = {}) {\n const dataList = document.createElement('dl');\n dataList.classList = 'keen-dataviz-execution-meta';\n\n if (Object.keys(data).length) {\n Object.keys(data).forEach((item) => {\n const dt = document.createElement('dt');\n dt.innerText = item.replace(/_/g, ' ');\n dt.addEventListener('click', e => handleCopyToClipboard(e));\n\n const dd = document.createElement('dd');\n dd.innerText = data[item];\n dd.addEventListener('click', e => handleCopyToClipboard(e));\n\n dataList.append(dt);\n dataList.append(dd);\n });\n } else {\n dataList.innerText = 'No execution metadata available';\n }\n\n element.append(dataList);\n}\n","import autocollector from './autocollector';\nimport modern from './modern';\nimport dracula from './dracula';\n\nexport default {\n autocollector,\n modern,\n dracula,\n};","const palette = {\n colors: [\n '#5E77FF',\n '#9C60FE',\n '#F162FE',\n '#FD65B7',\n '#FD6768',\n '#FDB86A',\n '#F2FC6C',\n '#A5FC6E',\n '#71FB85',\n '#73FBD0',\n '#76DDFA',\n '#76f4fa',\n '#bb76fa',\n '#fa76bf'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#45B2E8',\n '#D9540D',\n '#2CAB72',\n '#2C4BAB',\n '#EDDD02',\n '#E84545',\n '#E845CE',\n '#5FCEC9',\n '#E89F45',\n '#28E43F',\n '#B765C0',\n '#458AE8',\n '#AB2C2C',\n '#AB2C75',\n '#27E5FF',\n '#7168F2',\n '#FF932B',\n '#855D00',\n '#ACE845',\n '#1C91B4'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#8be9fd',\n '#50fa7b',\n '#ffb86c',\n '#ff79c6',\n '#bd93f9',\n '#ff5555',\n '#f1fa8c',\n ]\n};\n\nexport default palette;"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/external_d3_c3/node/keen-dataviz.js b/dist/external_d3_c3/node/keen-dataviz.js index 38f20a4..1784c59 100644 --- a/dist/external_d3_c3/node/keen-dataviz.js +++ b/dist/external_d3_c3/node/keen-dataviz.js @@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 19); +/******/ return __webpack_require__(__webpack_require__.s = 20); /******/ }) /************************************************************************/ /******/ ([ @@ -584,27 +584,27 @@ var _append = __webpack_require__(7); var append = _interopRequireWildcard(_append); -var _delete = __webpack_require__(21); +var _delete = __webpack_require__(22); var del = _interopRequireWildcard(_delete); -var _filter = __webpack_require__(22); +var _filter = __webpack_require__(23); var filter = _interopRequireWildcard(_filter); -var _insert = __webpack_require__(23); +var _insert = __webpack_require__(24); var insert = _interopRequireWildcard(_insert); -var _select = __webpack_require__(24); +var _select = __webpack_require__(25); var select = _interopRequireWildcard(_select); -var _sort = __webpack_require__(25); +var _sort = __webpack_require__(26); var sort = _interopRequireWildcard(_sort); -var _update = __webpack_require__(26); +var _update = __webpack_require__(27); var update = _interopRequireWildcard(_update); @@ -614,7 +614,7 @@ var _analyses2 = _interopRequireDefault(_analyses); var _extend = __webpack_require__(5); -var _parsers = __webpack_require__(27); +var _parsers = __webpack_require__(28); var _parsers2 = _interopRequireDefault(_parsers); @@ -810,6 +810,40 @@ exports.default = { "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +exports.flatten = flatten; +// Pure awesomeness by Will Rayner (penguinboy) +// https://gist.github.com/penguinboy/762197 + +function flatten(ob) { + var toReturn = {}; + for (var i in ob) { + if (!ob.hasOwnProperty(i)) continue; + if (_typeof(ob[i]) == 'object' && ob[i] !== null) { + var flatObject = flatten(ob[i]); + for (var x in flatObject) { + if (!flatObject.hasOwnProperty(x)) continue; + toReturn[i + '.' + x] = flatObject[x]; + } + } else { + toReturn[i] = ob[i]; + } + } + return toReturn; +}; + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); @@ -830,7 +864,7 @@ function stripHtmlTags(inputString) { } /***/ }), -/* 14 */ +/* 15 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -860,7 +894,7 @@ function extendDeep(target) { } /***/ }), -/* 15 */ +/* 16 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -871,7 +905,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = renderDownloadButton; -var _downloadResults = __webpack_require__(39); +var _downloadResults = __webpack_require__(40); var _downloadResults2 = _interopRequireDefault(_downloadResults); @@ -904,7 +938,7 @@ function renderDownloadButton() { }; /***/ }), -/* 16 */ +/* 17 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -915,11 +949,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = exportImage; -var _domToImage = __webpack_require__(40); +var _domToImage = __webpack_require__(41); var _domToImage2 = _interopRequireDefault(_domToImage); -var _fileSaver = __webpack_require__(41); +var _fileSaver = __webpack_require__(42); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -943,7 +977,7 @@ function exportImage(obj) { } /***/ }), -/* 17 */ +/* 18 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1002,7 +1036,7 @@ function exportData(obj) { } /***/ }), -/* 18 */ +/* 19 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -1018,15 +1052,15 @@ function exportData(obj) { (function(i,j){ true?module.exports=j("Rangeable"):undefined})("undefined"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&"function"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=["ruler"],"string"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:"single",tooltips:"always",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:"rangeable-input",container:"rangeable-container",vertical:"rangeable-vertical",progress:"rangeable-progress",handle:"rangeable-handle",track:"rangeable-track",multiple:"rangeable-multiple",disabled:"rangeable-disabled",tooltips:"rangeable-tooltips",tooltip:"rangeable-tooltip",visible:"rangeable-tooltips--visible"}},t),this.mouseAxis={x:"clientX",y:"clientY"},this.trackSize={x:"width",y:"height"},this.trackPos={x:"left",y:"top"},this.lastPos=0,this.double="double"===this.config.type||Array.isArray(this.config.value),this.touch="ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version="0.1.6",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?"y":"x",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i("div",u.container),w=i("div",u.track),x=i("div",u.progress),y=i("div",u.handle),z=i("div",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i("div",u.handle),i("div",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i("div",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+"px"),t.tooltips&&(v.classList.add(u.tooltips),"string"==typeof t.tooltips&&"always"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i("div","rangeable-buffers");this.input.values.forEach(function(C,D){var E=i("div","rangeable-buffer");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i("div","rangeable-buffer"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return"mousedown"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add("dragging"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add("active"),this.setValueFromPosition(s),this.touch?(document.addEventListener("touchmove",this.events.move,!1),document.addEventListener("touchend",this.events.stop,!1),document.addEventListener("touchcancel",this.events.stop,!1)):(document.addEventListener("mousemove",this.events.move,!1),document.addEventListener("mouseup",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove("dragging"),this.onEnd(),this.activeHandle.classList.remove("active"),this.activeHandle=!1,this.touch?(document.removeEventListener("touchmove",this.events.move),document.removeEventListener("touchend",this.events.stop),document.removeEventListener("touchcancel",this.events.stop)):(document.removeEventListener("mousemove",this.events.move),document.removeEventListener("mouseup",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event("change")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case"ArrowRight":case"ArrowUp":t.stepUp(v);break;case"ArrowLeft":case"ArrowDown":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle("combined-tooltip",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+" - "+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event("input")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?"bottom":"left"]=s+"px",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+"px"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest("."+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?"touchstart":"mousedown",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?"touchstart":"mousedown",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute("tabindex")}):this.nodes.handle.removeAttribute("tabindex"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},"start move stop update reset native keydown".split(" ").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener("scroll",this.events.scroll,!1),window.addEventListener("resize",this.events.resize,!1),document.addEventListener("keydown",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?"touchstart":"mousedown",this.events.start,!1),this.input.addEventListener("input",this.events.native,!1),this.input.form&&this.input.form.addEventListener("reset",this.events.reset,!1)},r.unbind=function(){document.removeEventListener("scroll",this.events.scroll),window.removeEventListener("resize",this.events.resize),document.removeEventListener("keydown",this.events.keydown),this.nodes.container.removeEventListener(this.touch?"touchstart":"mousedown",this.events.start),this.input.removeEventListener("input",this.events.native),this.input.form&&this.input.form.removeEventListener("reset",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q}); /***/ }), -/* 19 */ +/* 20 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -__webpack_require__(57); +__webpack_require__(58); -var _index = __webpack_require__(20); +var _index = __webpack_require__(21); module.exports = { default: _index.Dataviz, @@ -1035,7 +1069,7 @@ module.exports = { }; /***/ }), -/* 20 */ +/* 21 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1071,11 +1105,11 @@ var _c = __webpack_require__(9); var _c2 = _interopRequireDefault(_c); -var _package = __webpack_require__(30); +var _package = __webpack_require__(31); var _package2 = _interopRequireDefault(_package); -var _data = __webpack_require__(31); +var _data = __webpack_require__(32); var _data2 = _interopRequireDefault(_data); @@ -1085,29 +1119,29 @@ var _assertDateString = __webpack_require__(10); var _assertDateString2 = _interopRequireDefault(_assertDateString); -var _stripHtmlTags = __webpack_require__(13); +var _stripHtmlTags = __webpack_require__(14); var _escapeHtml = __webpack_require__(4); -var _libraries = __webpack_require__(32); +var _libraries = __webpack_require__(33); var _libraries2 = _interopRequireDefault(_libraries); -var _extendDeep = __webpack_require__(14); +var _extendDeep = __webpack_require__(15); -var _exportSvg = __webpack_require__(16); +var _exportSvg = __webpack_require__(17); var _exportSvg2 = _interopRequireDefault(_exportSvg); -var _exportData = __webpack_require__(17); +var _exportData = __webpack_require__(18); var _exportData2 = _interopRequireDefault(_exportData); -var _renderDownloadBtn = __webpack_require__(15); +var _renderDownloadBtn = __webpack_require__(16); var _renderDownloadBtn2 = _interopRequireDefault(_renderDownloadBtn); -var _renderExecutionMetadata = __webpack_require__(52); +var _renderExecutionMetadata = __webpack_require__(53); var _renderExecutionMetadata2 = _interopRequireDefault(_renderExecutionMetadata); @@ -1115,7 +1149,7 @@ var _copyToClipboard = __webpack_require__(1); var _copyToClipboard2 = _interopRequireDefault(_copyToClipboard); -var _index = __webpack_require__(53); +var _index = __webpack_require__(54); var _index2 = _interopRequireDefault(_index); @@ -2111,7 +2145,7 @@ function domReady(fn) { exports.default = Dataviz; /***/ }), -/* 21 */ +/* 22 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2147,7 +2181,7 @@ function deleteRow(q) { } /***/ }), -/* 22 */ +/* 23 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2197,7 +2231,7 @@ function filterRows(fn) { } /***/ }), -/* 23 */ +/* 24 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2299,7 +2333,7 @@ function insertRow(index, str, input) { } /***/ }), -/* 24 */ +/* 25 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2336,7 +2370,7 @@ function selectRow(q) { } /***/ }), -/* 25 */ +/* 26 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2406,7 +2440,7 @@ function sortRows(str, comp) { } /***/ }), -/* 26 */ +/* 27 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2505,7 +2539,7 @@ function updateRow(q, input) { } /***/ }), -/* 27 */ +/* 28 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2518,10 +2552,12 @@ exports.default = initialize; var _each = __webpack_require__(0); -var _flatten = __webpack_require__(28); +var _flatten = __webpack_require__(13); var _object = __webpack_require__(29); +var _createExtractionKeys = __webpack_require__(30); + var Dataset = void 0; /* injected */ function initialize(lib) { @@ -2666,8 +2702,8 @@ function parseExtraction() { return function (res) { var datasetExtraction = new Dataset().type('extraction'); - // get keys of the Object, static schema - var names = Object.keys((0, _flatten.flatten)(res.result[0])); + var datasetKeys = (0, _createExtractionKeys.createExtractionKeys)(res.result); + var names = Array.from(datasetKeys); var tableConfig = config && config.table; if (tableConfig && tableConfig.schema === 'dynamic') { @@ -2741,7 +2777,7 @@ var parsers = { }; /***/ }), -/* 28 */ +/* 29 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2750,32 +2786,13 @@ var parsers = { Object.defineProperty(exports, "__esModule", { value: true }); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.flatten = flatten; -// Pure awesomeness by Will Rayner (penguinboy) -// https://gist.github.com/penguinboy/762197 - -function flatten(ob) { - var toReturn = {}; - for (var i in ob) { - if (!ob.hasOwnProperty(i)) continue; - if (_typeof(ob[i]) == 'object' && ob[i] !== null) { - var flatObject = flatten(ob[i]); - for (var x in flatObject) { - if (!flatObject.hasOwnProperty(x)) continue; - toReturn[i + '.' + x] = flatObject[x]; - } - } else { - toReturn[i] = ob[i]; - } - } - return toReturn; -}; +exports.valueAtDeepKey = valueAtDeepKey; +function valueAtDeepKey(obj, is, value) { + if (typeof is == 'string') return valueAtDeepKey(obj, is.split('.'), value);else if (is.length == 1 && value !== undefined && obj !== null && typeof obj[is[0]] !== 'undefined') return obj[is[0]] = value;else if (is.length == 0) return obj;else if (typeof is === 'undefined' || typeof obj === 'undefined' || is === null || obj === null || typeof obj[is[0]] === 'undefined') return null;else return valueAtDeepKey(obj[is[0]], is.slice(1), value); +} /***/ }), -/* 29 */ +/* 30 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2784,19 +2801,29 @@ function flatten(ob) { Object.defineProperty(exports, "__esModule", { value: true }); -exports.valueAtDeepKey = valueAtDeepKey; -function valueAtDeepKey(obj, is, value) { - if (typeof is == 'string') return valueAtDeepKey(obj, is.split('.'), value);else if (is.length == 1 && value !== undefined && obj !== null && typeof obj[is[0]] !== 'undefined') return obj[is[0]] = value;else if (is.length == 0) return obj;else if (typeof is === 'undefined' || typeof obj === 'undefined' || is === null || obj === null || typeof obj[is[0]] === 'undefined') return null;else return valueAtDeepKey(obj[is[0]], is.slice(1), value); +exports.createExtractionKeys = createExtractionKeys; + +var _flatten = __webpack_require__(13); + +function createExtractionKeys(results) { + var keys = new Set(); + results.forEach(function (result) { + Object.keys((0, _flatten.flatten)(result)).map(function (key) { + keys.add(key); + }); + }); + + return keys; } /***/ }), -/* 30 */ +/* 31 */ /***/ (function(module) { -module.exports = {"name":"keen-dataviz","description":"Data Visualization SDK for Keen IO","license":"MIT","version":"3.14.4","main":"dist/external_d3_c3/node/keen-dataviz.js","browser":"dist/external_d3_c3/keen-dataviz.js","style":"dist/keen-dataviz.css","scripts":{"start":"concurrently --kill-others \"NODE_ENV=development webpack-dev-server\" \"npm run postcss-watch\"","postcss-watch":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o test/demo/keen-dataviz.css --watch --config postcss.config.js","build":"NODE_ENV=production webpack -p && npm run build:css && NODE_ENV=production OPTIMIZE_MINIMIZE=1 webpack -p && npm run build:css && npm run build:css:min && npm run build:external_d3_c3 && npm run build:external_d3_c3:css && npm run build:external_d3_c3:css:min && npm run build:node","build:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.css --config postcss.config.js","build:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.css --config postcss.config.js","build:external_d3_c3:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3":"NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p && NODE_ENV=production EXTERNAL_D3_C3=1 OPTIMIZE_MINIMIZE=1 webpack -p","build:node":"TARGET=node NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p","profile":"webpack --profile --json > stats.json","analyze":"webpack-bundle-analyzer stats.json /dist","version":"npm run build && git add .","postversion":"git push && git push --tags && npm publish","test":"NODE_ENV=test jest","test:watch":"NODE_ENV=test jest --watch"},"repository":{"type":"git","url":"https://github.com/keen/keen-dataviz.js.git"},"bugs":"https://github.com/keen/keen-dataviz.js/issues","author":"Keen.IO (https://keen.io/)","contributors":["Dustin Larimer (https://github.com/dustinlarimer)","Joanne Cheng (https://github.com/joannecheng)","Eric Anderson (https://github.com/aroc)","Joe Wegner (https://github.com/josephwegner)","Sara Falkoff (https://github.com/adamkasprowicz)","Dariusz Łacheta (https://github.com/dariuszlacheta)"],"homepage":"https://keen.io","keywords":["d3","c3","Analytics","Stats","Statistics","Visualization","Visualizations","Data Visualization","Chart","Charts","Charting","Svg","Dataviz","Plots","Graphs","Funnels"],"dependencies":{"c3":"^0.7.2","d3":"^5.11.0","dom-to-image":"^2.6.0","file-saver":"^2.0.1","promise-polyfill":"^8.0.0","rangeable":"^0.1.6"},"devDependencies":{"autoprefixer":"^8.2.0","babel-loader":"^7.1.4","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0","concurrently":"^3.5.1","cssnano":"^3.10.0","eslint":"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0","jest":"^22.4.3","jest-environment-jsdom-c3":"^2.0.0","nock":"^9.2.6","postcss":"^6.0.21","postcss-cli":"^5.0.0","postcss-color-function":"^4.0.1","postcss-css-variables":"^0.8.1","postcss-cssnext":"^2.4.0","postcss-import":"^8.0.2","postcss-loader":"^2.1.3","precss":"^3.1.2","regenerator-runtime":"^0.11.1","replace-in-file":"^3.4.0","style-loader":"^0.20.3","webpack":"^4.29.0","webpack-bundle-analyzer":"^3.3.2","webpack-cli":"^3.2.1","webpack-dev-server":"^3.3.1","xhr-mock":"^2.3.2"}}; +module.exports = {"name":"keen-dataviz","description":"Data Visualization SDK for Keen IO","license":"MIT","version":"3.14.5","main":"dist/external_d3_c3/node/keen-dataviz.js","browser":"dist/external_d3_c3/keen-dataviz.js","style":"dist/keen-dataviz.css","scripts":{"start":"concurrently --kill-others \"NODE_ENV=development webpack-dev-server\" \"npm run postcss-watch\"","postcss-watch":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o test/demo/keen-dataviz.css --watch --config postcss.config.js","build":"NODE_ENV=production webpack -p && npm run build:css && NODE_ENV=production OPTIMIZE_MINIMIZE=1 webpack -p && npm run build:css && npm run build:css:min && npm run build:external_d3_c3 && npm run build:external_d3_c3:css && npm run build:external_d3_c3:css:min && npm run build:node","build:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.css --config postcss.config.js","build:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.css --config postcss.config.js","build:external_d3_c3:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3":"NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p && NODE_ENV=production EXTERNAL_D3_C3=1 OPTIMIZE_MINIMIZE=1 webpack -p","build:node":"TARGET=node NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p","profile":"webpack --profile --json > stats.json","analyze":"webpack-bundle-analyzer stats.json /dist","version":"npm run build && git add .","postversion":"git push && git push --tags && npm publish","test":"NODE_ENV=test jest","test:watch":"NODE_ENV=test jest --watch"},"repository":{"type":"git","url":"https://github.com/keen/keen-dataviz.js.git"},"bugs":"https://github.com/keen/keen-dataviz.js/issues","author":"Keen.IO (https://keen.io/)","contributors":["Dustin Larimer (https://github.com/dustinlarimer)","Joanne Cheng (https://github.com/joannecheng)","Eric Anderson (https://github.com/aroc)","Joe Wegner (https://github.com/josephwegner)","Sara Falkoff (https://github.com/adamkasprowicz)","Dariusz Łacheta (https://github.com/dariuszlacheta)"],"homepage":"https://keen.io","keywords":["d3","c3","Analytics","Stats","Statistics","Visualization","Visualizations","Data Visualization","Chart","Charts","Charting","Svg","Dataviz","Plots","Graphs","Funnels"],"dependencies":{"c3":"^0.7.2","d3":"^5.11.0","dom-to-image":"^2.6.0","file-saver":"^2.0.1","promise-polyfill":"^8.0.0","rangeable":"^0.1.6"},"devDependencies":{"autoprefixer":"^8.2.0","babel-loader":"^7.1.4","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0","concurrently":"^3.5.1","cssnano":"^3.10.0","eslint":"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0","jest":"^22.4.3","jest-environment-jsdom-c3":"^2.0.0","nock":"^9.2.6","postcss":"^6.0.21","postcss-cli":"^5.0.0","postcss-color-function":"^4.0.1","postcss-css-variables":"^0.8.1","postcss-cssnext":"^2.4.0","postcss-import":"^8.0.2","postcss-loader":"^2.1.3","precss":"^3.1.2","regenerator-runtime":"^0.11.1","replace-in-file":"^3.4.0","style-loader":"^0.20.3","webpack":"^4.29.0","webpack-bundle-analyzer":"^3.3.2","webpack-cli":"^3.2.1","webpack-dev-server":"^3.3.1","xhr-mock":"^2.3.2"}}; /***/ }), -/* 31 */ +/* 32 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2821,7 +2848,7 @@ var _dataset2 = _interopRequireDefault(_dataset); var _extend = __webpack_require__(5); -var _stripHtmlTags = __webpack_require__(13); +var _stripHtmlTags = __webpack_require__(14); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -3039,7 +3066,7 @@ function getDefaultType(parser) { } /***/ }), -/* 32 */ +/* 33 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3089,71 +3116,71 @@ var _each = __webpack_require__(0); var _extend = __webpack_require__(5); -var _extendDeep = __webpack_require__(14); +var _extendDeep = __webpack_require__(15); var _assertDateString = __webpack_require__(10); var _assertDateString2 = _interopRequireDefault(_assertDateString); -var _defaultDateFormat = __webpack_require__(33); +var _defaultDateFormat = __webpack_require__(34); var _defaultDateFormat2 = _interopRequireDefault(_defaultDateFormat); -var _paginatingLegend = __webpack_require__(34); +var _paginatingLegend = __webpack_require__(35); var _paginatingLegend2 = _interopRequireDefault(_paginatingLegend); -var _tooltipContents = __webpack_require__(35); +var _tooltipContents = __webpack_require__(36); var _tooltipContents2 = _interopRequireDefault(_tooltipContents); -var _calculateRange = __webpack_require__(36); +var _calculateRange = __webpack_require__(37); var _calculateRange2 = _interopRequireDefault(_calculateRange); -var _calculatePercents = __webpack_require__(37); +var _calculatePercents = __webpack_require__(38); -var _message = __webpack_require__(38); +var _message = __webpack_require__(39); var _message2 = _interopRequireDefault(_message); -var _metric = __webpack_require__(42); +var _metric = __webpack_require__(43); var _metric2 = _interopRequireDefault(_metric); -var _table = __webpack_require__(43); +var _table = __webpack_require__(44); var _table2 = _interopRequireDefault(_table); -var _spinner = __webpack_require__(44); +var _spinner = __webpack_require__(45); var _spinner2 = _interopRequireDefault(_spinner); -var _funnel = __webpack_require__(45); +var _funnel = __webpack_require__(46); var _funnel2 = _interopRequireDefault(_funnel); -var _funnel3d = __webpack_require__(46); +var _funnel3d = __webpack_require__(47); var _funnel3d2 = _interopRequireDefault(_funnel3d); -var _horizontalFunnel = __webpack_require__(47); +var _horizontalFunnel = __webpack_require__(48); var _horizontalFunnel2 = _interopRequireDefault(_horizontalFunnel); -var _horizontalFunnel3d = __webpack_require__(48); +var _horizontalFunnel3d = __webpack_require__(49); var _horizontalFunnel3d2 = _interopRequireDefault(_horizontalFunnel3d); -var _metricCombo = __webpack_require__(49); +var _metricCombo = __webpack_require__(50); var _metricCombo2 = _interopRequireDefault(_metricCombo); -var _heatmap = __webpack_require__(50); +var _heatmap = __webpack_require__(51); var _heatmap2 = _interopRequireDefault(_heatmap); -var _choropleth = __webpack_require__(51); +var _choropleth = __webpack_require__(52); var _choropleth2 = _interopRequireDefault(_choropleth); @@ -3526,7 +3553,7 @@ function bindResizeListener(fn) { } /***/ }), -/* 33 */ +/* 34 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3565,7 +3592,7 @@ exports.default = function (startDate, endDate) { }; /***/ }), -/* 34 */ +/* 35 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3789,7 +3816,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } /***/ }), -/* 35 */ +/* 36 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3836,7 +3863,7 @@ exports.default = function (d, defaultTitleFormat, defaultValueFormat, color) { var _escapeHtml = __webpack_require__(4); /***/ }), -/* 36 */ +/* 37 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3861,7 +3888,7 @@ function calculateRange(matrix) { } /***/ }), -/* 37 */ +/* 38 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3902,7 +3929,7 @@ function calculatePercents(matrix, sumArray) { } /***/ }), -/* 38 */ +/* 39 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3914,7 +3941,7 @@ Object.defineProperty(exports, "__esModule", { var _escapeHtml = __webpack_require__(4); -var _renderDownloadBtn = __webpack_require__(15); +var _renderDownloadBtn = __webpack_require__(16); var _renderDownloadBtn2 = _interopRequireDefault(_renderDownloadBtn); @@ -3996,7 +4023,7 @@ exports.default = { }; /***/ }), -/* 39 */ +/* 40 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4007,11 +4034,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = downloadResults; -var _exportSvg = __webpack_require__(16); +var _exportSvg = __webpack_require__(17); var _exportSvg2 = _interopRequireDefault(_exportSvg); -var _exportData = __webpack_require__(17); +var _exportData = __webpack_require__(18); var _exportData2 = _interopRequireDefault(_exportData); @@ -4059,7 +4086,7 @@ function downloadResults(obj) { } /***/ }), -/* 40 */ +/* 41 */ /***/ (function(module, exports, __webpack_require__) { (function (global) { @@ -4834,7 +4861,7 @@ function downloadResults(obj) { /***/ }), -/* 41 */ +/* 42 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b), @@ -4845,7 +4872,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ //# sourceMappingURL=FileSaver.min.js.map /***/ }), -/* 42 */ +/* 43 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5003,7 +5030,7 @@ exports.default = { }; /***/ }), -/* 43 */ +/* 44 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5308,7 +5335,7 @@ var destroy = function destroy() {}; exports.default = { render: render, update: update, destroy: destroy }; /***/ }), -/* 44 */ +/* 45 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5351,7 +5378,7 @@ exports.default = { }; /***/ }), -/* 45 */ +/* 46 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5632,7 +5659,7 @@ var Funnel = function () { exports.default = Funnel; /***/ }), -/* 46 */ +/* 47 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5937,7 +5964,7 @@ var Funnel3d = function () { exports.default = Funnel3d; /***/ }), -/* 47 */ +/* 48 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6215,7 +6242,7 @@ var HorizontalFunnel = function () { exports.default = HorizontalFunnel; /***/ }), -/* 48 */ +/* 49 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6524,7 +6551,7 @@ var HorizontalFunnel3d = function () { exports.default = HorizontalFunnel3d; /***/ }), -/* 49 */ +/* 50 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6695,7 +6722,7 @@ var MetricCombo = function () { exports.default = MetricCombo; /***/ }), -/* 50 */ +/* 51 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6713,7 +6740,7 @@ var _d2 = __webpack_require__(2); var d3 = _interopRequireWildcard(_d2); -var _rangeable = __webpack_require__(18); +var _rangeable = __webpack_require__(19); var _rangeable2 = _interopRequireDefault(_rangeable); @@ -6956,7 +6983,7 @@ var Heatmap = function () { exports.default = Heatmap; /***/ }), -/* 51 */ +/* 52 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6976,7 +7003,7 @@ var _d2 = __webpack_require__(2); var d3 = _interopRequireWildcard(_d2); -var _rangeable = __webpack_require__(18); +var _rangeable = __webpack_require__(19); var _rangeable2 = _interopRequireDefault(_rangeable); @@ -7187,7 +7214,7 @@ var Choropleth = function () { exports.default = Choropleth; /***/ }), -/* 52 */ +/* 53 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7270,7 +7297,7 @@ function renderExecutionMetadata() { } /***/ }), -/* 53 */ +/* 54 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7280,15 +7307,15 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _autocollector = __webpack_require__(54); +var _autocollector = __webpack_require__(55); var _autocollector2 = _interopRequireDefault(_autocollector); -var _modern = __webpack_require__(55); +var _modern = __webpack_require__(56); var _modern2 = _interopRequireDefault(_modern); -var _dracula = __webpack_require__(56); +var _dracula = __webpack_require__(57); var _dracula2 = _interopRequireDefault(_dracula); @@ -7301,7 +7328,7 @@ exports.default = { }; /***/ }), -/* 54 */ +/* 55 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7317,7 +7344,7 @@ var palette = { exports.default = palette; /***/ }), -/* 55 */ +/* 56 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7333,7 +7360,7 @@ var palette = { exports.default = palette; /***/ }), -/* 56 */ +/* 57 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7349,7 +7376,7 @@ var palette = { exports.default = palette; /***/ }), -/* 57 */ +/* 58 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; diff --git a/dist/external_d3_c3/node/keen-dataviz.js.map b/dist/external_d3_c3/node/keen-dataviz.js.map index a4d360b..526c95c 100644 --- a/dist/external_d3_c3/node/keen-dataviz.js.map +++ b/dist/external_d3_c3/node/keen-dataviz.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./lib/utils/each.js","webpack:///./lib/utils/copy-to-clipboard.js","webpack:///external \"d3\"","webpack:///./lib/utils/pretty-number.js","webpack:///./lib/utils/escape-html.js","webpack:///./lib/utils/extend.js","webpack:///./lib/utils/svg-text-wrap.js","webpack:///./lib/dataset/modifiers/append.js","webpack:///./lib/dataset/utils/create-null-list.js","webpack:///external \"c3\"","webpack:///./lib/utils/assert-date-string.js","webpack:///./lib/dataset/index.js","webpack:///./lib/dataset/utils/analyses.js","webpack:///./lib/utils/strip-html-tags.js","webpack:///./lib/utils/extend-deep.js","webpack:///./lib/utils/render-download-btn.js","webpack:///./lib/utils/export-svg.js","webpack:///./lib/utils/export-data.js","webpack:///./node_modules/rangeable/dist/rangeable.min.js","webpack:///./lib/server.js","webpack:///./lib/index.js","webpack:///./lib/dataset/modifiers/delete.js","webpack:///./lib/dataset/modifiers/filter.js","webpack:///./lib/dataset/modifiers/insert.js","webpack:///./lib/dataset/modifiers/select.js","webpack:///./lib/dataset/modifiers/sort.js","webpack:///./lib/dataset/modifiers/update.js","webpack:///./lib/dataset/utils/parsers.js","webpack:///./lib/dataset/utils/flatten.js","webpack:///./lib/dataset/utils/object.js","webpack:///./lib/data.js","webpack:///./lib/libraries/index.js","webpack:///./lib/libraries/c3/extensions/default-date-format.js","webpack:///./lib/libraries/c3/extensions/paginating-legend.js","webpack:///./lib/libraries/c3/extensions/tooltip-contents.js","webpack:///./lib/dataset/utils/calculate-range.js","webpack:///./lib/dataset/utils/calculate-percents.js","webpack:///./lib/libraries/default/message.js","webpack:///./lib/utils/download-results.js","webpack:///./node_modules/dom-to-image/src/dom-to-image.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./lib/libraries/default/metric.js","webpack:///./lib/libraries/default/table.js","webpack:///./lib/libraries/default/spinner.js","webpack:///./lib/libraries/default/funnel.js","webpack:///./lib/libraries/default/funnel-3d.js","webpack:///./lib/libraries/default/horizontal-funnel.js","webpack:///./lib/libraries/default/horizontal-funnel-3d.js","webpack:///./lib/libraries/default/metric-combo.js","webpack:///./lib/libraries/default/heatmap.js","webpack:///./lib/libraries/default/choropleth.js","webpack:///./lib/utils/render-execution-metadata.js","webpack:///./lib/palettes/index.js","webpack:///./lib/palettes/autocollector.js","webpack:///./lib/palettes/modern.js","webpack:///./lib/palettes/dracula.js","webpack:///./node_modules/promise-polyfill/src/finally.js","webpack:///./node_modules/promise-polyfill/src/index.js","webpack:///./node_modules/promise-polyfill/src/polyfill.js"],"names":["each","o","cb","s","n","Array","length","call","hasOwnProperty","copyToClipboard","stickTooltip","event","tooltip","style","opacity","top","pageY","left","pageX","value","placeholder","document","createElement","body","appendChild","select","execCommand","removeChild","notification","padding","backgroundColor","fontSize","position","zIndex","transition","innerText","addEventListener","e","setTimeout","prettyNumber","input","Number","sciNo","toPrecision","prefix","suffixes","String","Math","abs","recurse","iteration","split","rhs","charAt","numNumerals","escapeHtml","matchHtmlRegExp","string","str","match","exec","escape","html","index","lastIndex","charCodeAt","substring","extend","target","i","arguments","prop","textWrap","d3","text","width","words","reverse","word","line","lineNumber","lineHeight","x","attr","y","dy","tspan","append","pop","push","join","node","getComputedTextLength","appendColumn","appendRow","self","args","prototype","slice","label","undefined","matrix","row","cell","concat","newRow","col","selectColumn","len","list","testObject","testString","getTime","isNaN","ISO_8601","test","del","filter","insert","sort","update","Dataset","config","meta","type","data","arr","set","coords","Error","colIndex","indexOf","rowIndex","colResult","rowResult","selectRow","analyses","parser","average","start","end","sum","avg","val","parseFloat","maximum","nums","max","apply","minimum","min","getColumnAverage","getRowAverage","getColumnSum","getRowSum","getColumnMaximum","getRowMaximum","getColumnMinimum","getRowMinimum","getColumnLabel","getRowIndex","stripHtmlTags","inputString","replace","extendDeep","key","renderDownloadButton","element","btnClass","isBtnRendered","parentNode","children","find","child","className","button","insertBefore","nextSibling","exportImage","obj","quality","bgcolor","domtoimage","toBlob","then","blob","exportData","generateCsvContent","csvContent","forEach","j","encodeURIComponent","supportedFormats","format","toLowerCase","includes","fileName","fileFormat","content","JSON","stringify","htmlElement","setAttribute","click","module","exports","default","Dataviz","options","c3","datavizInstance","defaultOptions","showDeprecationWarnings","showLoadingSpinner","container","containerElement","title","showTitle","subtitle","notes","theme","colors","colorMapping","ui","executionMetadata","utils","clickToCopyToClipboard","indexBy","labels","labelMapping","labelMappingRegExp","errorMapping","showErrorMessages","library","sortGroups","sortIntervals","results","stacked","dateFormat","legend","show","alignment","textMaxLength","pagination","offset","limit","pointer","axis","color","size","point","focus","expand","enabled","r","sensitivity","horizontal","order","selection","draggable","multiple","onselected","d","selectedItems","view","_artifacts","selected","reduce","prev","curr","grid","partialIntervalIndicator","timezone","table","schema","renderOnVisible","funnel","lines","resultValues","percents","countingMethod","decimals","marginBetweenElements","hover","effect3d","minimalSize","react","range","sparkline","choropleth","map","borders","showSlider","heatmap","palette","palettes","console","log","convertChartTypes","stacking","el","pattern","dataset","_prepared","_rendered","visuals","prepare","render","firstVisibilityState","visibilityState","callback","bind","libraries","window","register","name","actions","method","nodeName","querySelector","visual","attributes","fn","chartOptions","destroy","innerHTML","domReady","height","num","setLabels","updateColumn","updateRow","mapLabels","mapLabelsExec","valueAfterMatching","regExpAndLabel","regExpObj","labelMappingDimension","message","loader","spinner","firstResult","query","interval","timeframe","isArray","timeframes","resultItem","foundDifferent","timeframeItem","resultTimeframe","msg","error","deleteColumn","result","event_collection","analysis_type","ds2","Object","keys","returnValue","renderAsPromise","Promise","resolve","reject","customCallback","onrendered","shouldRenderExecutionMetadata","execution_metadata","shouldRenderDownloadBtn","buttons","download","mappedMsg","buildDomWrapper","IntersectionObserver","chartVisibleCallback","events","observer","isIntersecting","observe","hidden","visibilityChange","msHidden","webkitHidden","handleVisibilityChange","load","once","sortColumns","sortRows","bool","chartType","parseRawData","parseRequest","initialize","version","pkg","chart100percentWide","rangeChart","verticalAlignment","horizontalAlignment","align","legendItemsAlign","areachart","barchart","columnchart","linechart","piechart","testDom","readyState","DOMContentLoaded","removeEventListener","deleteRow","q","splice","filterColumns","filterRows","clone","selectedColumn","ri","insertColumn","insertRow","comp","head","cols","analysesUtilMethods","a","b","op","lib","parsers","parseMetric","res","parseInterval","record","parseGroupedMetric","parseGroupedInterval","group","parseDoubleGroupedMetric","rowLabel","parseDoubleGroupedInterval","parseFunnel","steps","parseList","parseExtraction","datasetExtraction","names","tableConfig","resultKeys","keyName","nameI","columns","iNames","parseHeatmapAxis","heatmapDataset","objKeys","metric","extraction","flatten","ob","toReturn","flatObject","valueAtDeepKey","is","parseResponse","response","parserArgs","selectedParser","metadata","filters","group_by","display_name","getDefaultTitle","visualization","chart_type","getDefaultType","Date","analysis","toUpperCase","timer","bindResizeListener","clearTimeout","delay","chart","c3Chart","parentWidth","offsetWidth","nextSiblingWidth","prevSiblingWidth","previousSibling","resize","defineC3","types","Funnel","Funnel3d","HorizontalFunnel","HorizontalFunnel3d","MetricCombo","Heatmap","Choropleth","c3Types","getPaddings","paddingName","parseInt","getComputedStyle","getDefaultOptions","ENFORCED_OPTIONS","bindto","renderingElement","offsetHeight","titleElement","subtitleElement","notesElement","DEFAULT_OPTIONS","extendedConfig","sumArray","oldMatrix","tick","clearOnRender","datasetMeta","spliceFrom","intervalTypes","removeLegend","rotated","culling","groups","categories","legendElement","remove","chartTypesWithPartialIntervalIndicator","partialResultsRegion","class","regions","contents","c3TooltipContents","ratio","id","valueFormatted","c3CustomTooltipFiltering","toFixed","c3options","c3CustomDataMapping","hide","generate","c3PaginatingLegend","onLegendRendered","onPaginated","flush","scope","onresize","attachEvent","startDate","endDate","timeDiff","months","ms","date","getMonth","getFullYear","getDate","domNode","legendConfig","round","total","columnsSorted","dataColumnsSorted","columnData","item","column","paginateHorizontalLeftElement","legendItemsElement","paginateVerticalElement","paginateHorizontalRightElement","paginateData","renderLegendComponent","renderPaginationComponent","labelShortened","legendItem","chartPartId","legendItemColorSample","prepend","tooltipElement","revert","isHidden","toggle","arrowUp","arrowDown","paginate","direction","diff","floor","clearSelectedText","empty","getSelection","removeAllRanges","defaultTitleFormat","defaultValueFormat","nameFormat","tooltip_format_name","titleFormat","tooltip_format_title","valueFormat","tooltip_format_value","CLASS","levelColor","tooltipName","calculateRange","newValues","calculateSumForPercents","calculatePercents","outer","inner","titleContainer","subtitleContainer","notesContainer","downloadResults","preventDefault","currentTarget","previousElementSibling","formatExtractionData","formattedResult","itemProp","acc","opts","prevValue","suffix","formattedNum","flexDifferenceStyle","resultDifference","differenceStyle","smallerValue","previousResults","isExtraction","comparedProp","resultClassName","previousResultsClassName","currentPage","_generateTableRows","defaultConfig","page","arrows","customConfig","datasetPaginated","pages","ceil","columnsArray","colNamesToMap","mapValues","mapDates","entries","rowColValue","rowColValueEscaped","pageNumber","prevPage","nextPage","_generateTableHeader","fieldNumber","columnNames","colName","colNameEscaped","isEmpty","querySelectorAll","sortOrder","getAttribute","checker","sortOrderNumber","nameA","nameB","first","shift","unshift","attachBtnEventListeners","btn","tableClass","artifacts","clearInterval","radius","marginBetweenSteps","margin","right","bottom","yMarginElement","funnelContainer","chartContainer","svgWidth","svgHeight","elemHeight","prevElemWidth","percent","minimalSizeStep","polygons","newPoints","points","selectAll","enter","p","handleMouseOver","polygonsHover","labelHover","thisLabel","handleMouseOut","on","handleClickToCopy","shadowCut","polygonsShadows","polygons3d","rgb","darker","xMarginElement","elemWidth","prevElemHeight","metricResults","c","prevResult","previous","currResult","current","count","percentDifference","labelClass","iconClass","containerTitle","containerSubtitle","chartRoot","currentCount","simpleTooltip","baseWidth","baseHeight","heatmapContainer","containerWidth","containerHeight","xLabel","Set","yLabel","formatData","timeFormat","timestamp","parse","formattedData","add","refValue","minRange","maxRange","getColor","defaultColor","baseColor","getColorAlpha","scaleLinear","domain","convertRGBAtoRGB","bg","getTileColor","alpha","solidColor","g","svg","rangeableInput","handleSliderChange","rects","nodes","rangeable","Rangeable","onChange","containerToString","customStyle","scriptRef","xLabelBase","yLabelBase","getAxisLabelRatio","base","labelSize","xAxis","scaleBand","axisBottom","tickSize","yAxis","axisLeft","chartTooltip","toString","raise","handleMouseMove","tooltipContent","clientX","clientY","handleMouseLeave","handleClick","bandwidth","choroplethContainer","heightChanges","onlyValues","minVal","maxVal","lightColor","hsl","brighter","l","darkColor","ramp","json","zoom","scaleExtent","translateExtent","zoomed","projection","geoMercator","fitSize","geoAlbersUsa","scale","path","geoPath","usData","features","theOne","properties","elementName","rangeContainer","tooltips","transform","renderExecutionMetadata","removeClassWithTimeOut","classList","handleCopyToClipboard","contains","dataList","dt","dd","autocollector","modern","dracula"],"mappings":"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GvC;AACA,eAAe,KAAK;AACpB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oEAAoE,gBAAgB;;AAEpF;AACA;AACA,8EAA8E;AAC9E;;AAEA;;AAEA;AACA;AACA,wCAAwC,QAAQ;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,2CAA2C;AAC3C,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,YAAY;AAC3C;;AAEA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,sCAAsC;AACtC;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AAC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A;AACA;;AAEe,kEAAkB,EAAC;;;ACnBK;;AAEvC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,aAAa,SAAS;AACtB;AACA,aAAa,kBAAkB;AAC/B;AACA,aAAa,kBAAkB;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B,WAAc;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEe,+CAAO,EAAC;;;AC/OO;AACS;;AAEvC,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,wBAAwB,GAAO;AAC/B,CAAC;AACD,0CAA0C,WAAc;AACxD","file":"node/keen-dataviz.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"d3\"), require(\"c3\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"d3\", \"c3\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"d3\"), require(\"c3\")) : factory(root[\"d3\"], root[\"c3\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(global, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__9__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 19);\n","export function each(o, cb, s) {\n var n;\n if (!o) {\n return 0;\n }\n s = !s ? o : s;\n if (o instanceof Array) {\n // Indexed arrays, needed for Safari\n for (n = 0; n < o.length; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n // Hashtables\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false){\n return 0;\n }\n }\n }\n }\n return 1;\n}\n","function stickTooltip(event, tooltip) {\n tooltip.style.opacity = 0;\n tooltip.style.top = `${event.pageY}px`;\n tooltip.style.left = `${event.pageX + 10}px`;\n}\n\nexport default function copyToClipboard(value, event) {\n const placeholder = document.createElement('input');\n placeholder.value = value;\n document.body.appendChild(placeholder);\n placeholder.select();\n document.execCommand('copy');\n document.body.removeChild(placeholder);\n\n if (event) {\n const notification = document.createElement('div');\n notification.style.padding = '5px 10px';\n notification.style.backgroundColor = '#ffffff';\n notification.style.fontSize = '12px';\n notification.style.position = 'absolute';\n notification.style.top = `${event.pageY}px`;\n notification.style.left = `${event.pageX + 10}px`;\n notification.style.zIndex = '999';\n notification.style.opacity = 1;\n notification.style.transition = 'opacity 1s ease';\n notification.innerText = 'copied!';\n\n document.body.appendChild(notification);\n document.addEventListener('mousemove', e => stickTooltip(e, notification));\n\n setTimeout(() => {\n notification.style.opacity = 1;\n document.body.removeChild(notification);\n }, 1000);\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","export function prettyNumber(input) {\n // If it has 3 or fewer sig figs already, just return the number.\n var input = Number(input),\n sciNo = input.toPrecision(3),\n prefix = '',\n suffixes = ['', 'k', 'M', 'B', 'T'];\n\n if (Number(sciNo) == input && String(input).length <= 4) {\n return String(input);\n }\n\n if (Math.abs(input) >= 1000000000000000) {\n return sciNo;\n }\n\n if (input >= 1 || input <= -1) {\n if (input < 0){\n //Pull off the negative side and stash that.\n input = -input;\n prefix = '-';\n }\n return prefix + recurse(input, 0);\n }\n else {\n return input.toPrecision(3);\n }\n\n function recurse(input, iteration) {\n var input = String(input);\n var split = input.split('.');\n // If there's a dot\n if (split.length > 1) {\n // Keep the left hand side only\n input = split[0];\n var rhs = split[1];\n // If the left-hand side is too short, pad until it has 3 digits\n if (input.length == 2 && rhs.length > 0) {\n // Pad with right-hand side if possible\n if (rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n else if (input.length == 1 && rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n // Pad with right-hand side if possible\n if (rhs.length > 1) {\n input += rhs.charAt(1);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n }\n var numNumerals = input.length;\n // if it has a period, then numNumerals is 1 smaller than the string length:\n if (input.split('.').length > 1) {\n numNumerals--;\n }\n if (numNumerals <= 3) {\n return String(input) + suffixes[iteration];\n }\n else {\n return recurse(Number(input) / 1000, iteration + 1);\n }\n }\n}\n","const matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nexport function escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n for (var prop in arguments[i]){\n target[prop] = arguments[i][prop];\n }\n }\n return target;\n}\n","import * as d3 from 'd3';\n\nexport function textWrap(text, width) {\n text.each(function () {\n let text = d3.select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.1, // ems\n x = text.attr(\"x\"),\n y = text.attr(\"y\"),\n dy = 0, //parseFloat(text.attr(\"dy\")),\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\");\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n .text(word);\n }\n }\n });\n}\n","import createNullList from '../utils/create-null-list';\nimport { each } from '../../utils/each';\n\nexport function appendColumn(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n self.matrix[0].push(label);\n each(self.matrix, function(row, i) {\n let cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].push(cell);\n }\n });\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat(createNullList(self.matrix.length - 1 - input.length));\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String(self.matrix.length));\n }\n });\n }\n\n self.matrix[0].push(label);\n each(input, function(value, i){\n self.matrix[i+1][self.matrix[0].length-1] = value;\n });\n\n }\n\n return self;\n}\n\nexport function appendRow(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n const newRow = [];\n\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i){\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.push(newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length));\n }\n });\n }\n\n self.matrix.push(newRow.concat(input));\n }\n\n return self;\n}\n","export default function (len) {\n const list = [];\n for (let i = 0; i < len; i++) {\n list.push(null);\n }\n return list;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__9__;","export function testObject(input) {\n if (input !== null && typeof input.getTime === 'function' && !isNaN(input.getTime())) {\n return true;\n }\n return false;\n}\n\nexport function testString(input) {\n const ISO_8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n return ISO_8601.test(input);\n}\n\nexport default function (input) {\n if (typeof input === 'object') {\n return testObject(input);\n } else if (typeof input === 'string') {\n return testString(input);\n }\n return false;\n}\n","// Modifiers\nimport * as append from './modifiers/append';\nimport * as del from './modifiers/delete';\nimport * as filter from './modifiers/filter';\nimport * as insert from './modifiers/insert';\nimport * as select from './modifiers/select';\nimport * as sort from './modifiers/sort';\nimport * as update from './modifiers/update';\n\n// Utils\nimport analyses from './utils/analyses';\nimport { extend } from '../utils/extend';\nimport parsers from './utils/parsers';\n\nexport const Dataset = function (config = {}) {\n if (this instanceof Dataset === false) {\n return new Dataset(config);\n }\n\n this.matrix = [\n ['Index']\n ];\n this.meta = {\n type: undefined\n };\n this.config = config;\n}\n\nDataset.prototype.data = function (arr) {\n if (!arguments.length) return this.matrix;\n this.matrix = (arr instanceof Array ? arr : null);\n return this;\n};\n\nDataset.prototype.set = function (coords, value) {\n if (arguments.length < 2 || coords.length < 2) {\n throw Error('Incorrect arguments provided for #set method');\n }\n\n var colIndex = 'number' === typeof coords[0] ? coords[0] : this.matrix[0].indexOf(coords[0]),\n rowIndex = 'number' === typeof coords[1] ? coords[1] : select.selectColumn.call(this, 0).indexOf(coords[1]);\n\n var colResult = select.selectColumn.call(this, coords[0]),\n rowResult = select.selectRow.call(this, coords[1]);\n\n // Column doesn't exist, create and reset colIndex\n if (colResult.length < 1) {\n append.appendColumn.call(this, String(coords[0]));\n colIndex = this.matrix[0].length - 1;\n }\n\n // Row doesn't exist, create and reset rowIndex\n if (rowResult.length < 1) {\n append.appendRow.call(this, String(coords[1]));\n rowIndex = this.matrix.length - 1;\n }\n\n // Set provided value\n this.matrix[ rowIndex ][ colIndex ] = value;\n return this;\n};\n\nDataset.prototype.type = function(str){\n if (!arguments.length) return this.meta['type'];\n this.meta['type'] = (str ? String(str) : undefined);\n return this;\n};\n\nextend(Dataset.prototype, append);\nextend(Dataset.prototype, del);\nextend(Dataset.prototype, filter);\nextend(Dataset.prototype, insert);\nextend(Dataset.prototype, select);\nextend(Dataset.prototype, sort);\nextend(Dataset.prototype, update);\nextend(Dataset.prototype, analyses);\nDataset.parser = parsers(Dataset);\n\nexport default Dataset;\n","import { each } from '../../utils/each';\nimport { extend } from '../../utils/extend';\n\nfunction average(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0,\n avg = null;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum / set.length;\n}\n\nfunction maximum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.max.apply(Math, nums);\n}\n\nfunction minimum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.min.apply(Math, nums);\n}\n\nfunction sum(arr, start, end){\n // Copy set with given range\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum;\n}\n\nconst getColumnAverage = function (arr) {\n return average(arr, 1);\n};\nconst getRowAverage = getColumnAverage;\n\nconst getColumnSum = function (arr) {\n return sum(arr, 1);\n};\nconst getRowSum = getColumnSum;\n\nconst getColumnMaximum = function (arr) {\n return maximum(arr, 1);\n};\nconst getRowMaximum = getColumnMaximum;\n\nconst getColumnMinimum = function (arr) {\n return minimum(arr, 1);\n};\nconst getRowMinimum = getColumnMinimum;\n\nconst getColumnLabel = function (arr) {\n return arr[0];\n};\nconst getRowIndex = getColumnLabel;\n\nexport default {\n average,\n maximum,\n minimum,\n sum,\n getColumnAverage,\n getRowAverage,\n getColumnSum,\n getRowSum,\n getColumnMaximum,\n getRowMaximum,\n getColumnMinimum,\n getRowMinimum,\n getColumnLabel,\n getRowIndex,\n};\n","/**\n * Strip html tags from string\n *\n * @param {string} string The string to strip\n * @return {string}\n * @public\n */\n\nexport function stripHtmlTags(inputString) {\n if (typeof inputString !== 'string') {\n return inputString;\n }\n return inputString.replace(/(<([^>]+)>)/ig, '');\n}\n","import { each } from './each';\n\nexport function extendDeep(target) {\n for (var i = 1; i < arguments.length; i++) {\n each(arguments[i], function(prop, key){\n if (( typeof target[key] !== 'undefined' && typeof prop !== 'undefined' ) &&\n ( typeof target[key] === 'object' && typeof prop === 'object' ) &&\n ( target[key] !== null && prop !== null )) {\n extendDeep(target[key], prop);\n }\n else {\n target[key] = prop;\n }\n });\n }\n return target;\n}\n","import downloadResults from './download-results';\n\nexport default function renderDownloadButton({\n element,\n label = 'Download',\n type = 'json',\n data,\n} = {}) {\n const btnClass = 'keen-dataviz-button';\n const isBtnRendered = [...element.parentNode.children]\n .find(child => child.className === btnClass);\n if (isBtnRendered) return;\n\n const button = document.createElement('button');\n button.innerText = label;\n button.className = btnClass;\n button.addEventListener('click', event => downloadResults({ event, type, data}));\n element.parentNode.insertBefore(button, element.nextSibling);\n};","import domtoimage from 'dom-to-image';\nimport { saveAs } from 'file-saver';\n\nexport default function exportImage(obj) {\n const { node, quality, bgcolor } = obj;\n if (quality) {\n if (quality < 0 || quality > 1) throw Error('Please provide image quality between 0 and 1');\n domtoimage.toBlob(node, { quality, bgcolor })\n .then((blob) => {\n saveAs(blob, 'chart.jpeg');\n });\n }\n\n if (!quality) {\n domtoimage.toBlob(node)\n .then((blob) => {\n saveAs(blob, 'chart.png');\n });\n }\n}\n","function generateCsvContent(data) {\n let csvContent = '';\n\n data.forEach((row, i) => {\n row.forEach((cell, j) => {\n csvContent += String(cell).replace(/,/g, '');\n if (row.length > j + 1) {\n csvContent += ',';\n }\n });\n if (data.length > i + 1) {\n csvContent += '\\n';\n }\n });\n return `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n}\n\nexport default function exportData(obj) {\n const { type, data } = obj;\n const supportedFormats = ['json', 'csv'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = supportedFormats[0];\n let content = '';\n\n if (format === 'json') {\n content = `data:text/json;charset=utf-8, ${encodeURIComponent(JSON.stringify(data))}`;\n }\n\n if (format === 'csv') {\n content = generateCsvContent(data);\n fileFormat = format;\n }\n\n const htmlElement = document.createElement('a');\n htmlElement.setAttribute('href', content);\n htmlElement.setAttribute('download', `${fileName}.${fileFormat}`);\n document.body.appendChild(htmlElement);\n htmlElement.click();\n document.body.removeChild(htmlElement);\n}\n","/*!\n *\n * Rangeable\n * Copyright (c) 2018 Karl Saunders (mobius1(at)gmx(dot)com)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.1.6\n *\n */\n(function(i,j){\"object\"==typeof exports?module.exports=j(\"Rangeable\"):\"function\"==typeof define&&define.amd?define([],j):i.Rangeable=j(\"Rangeable\")})(\"undefined\"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&\"function\"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=[\"ruler\"],\"string\"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:\"single\",tooltips:\"always\",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:\"rangeable-input\",container:\"rangeable-container\",vertical:\"rangeable-vertical\",progress:\"rangeable-progress\",handle:\"rangeable-handle\",track:\"rangeable-track\",multiple:\"rangeable-multiple\",disabled:\"rangeable-disabled\",tooltips:\"rangeable-tooltips\",tooltip:\"rangeable-tooltip\",visible:\"rangeable-tooltips--visible\"}},t),this.mouseAxis={x:\"clientX\",y:\"clientY\"},this.trackSize={x:\"width\",y:\"height\"},this.trackPos={x:\"left\",y:\"top\"},this.lastPos=0,this.double=\"double\"===this.config.type||Array.isArray(this.config.value),this.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version=\"0.1.6\",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?\"y\":\"x\",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i(\"div\",u.container),w=i(\"div\",u.track),x=i(\"div\",u.progress),y=i(\"div\",u.handle),z=i(\"div\",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i(\"div\",u.handle),i(\"div\",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i(\"div\",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+\"px\"),t.tooltips&&(v.classList.add(u.tooltips),\"string\"==typeof t.tooltips&&\"always\"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i(\"div\",\"rangeable-buffers\");this.input.values.forEach(function(C,D){var E=i(\"div\",\"rangeable-buffer\");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i(\"div\",\"rangeable-buffer\"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return\"mousedown\"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add(\"dragging\"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add(\"active\"),this.setValueFromPosition(s),this.touch?(document.addEventListener(\"touchmove\",this.events.move,!1),document.addEventListener(\"touchend\",this.events.stop,!1),document.addEventListener(\"touchcancel\",this.events.stop,!1)):(document.addEventListener(\"mousemove\",this.events.move,!1),document.addEventListener(\"mouseup\",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove(\"dragging\"),this.onEnd(),this.activeHandle.classList.remove(\"active\"),this.activeHandle=!1,this.touch?(document.removeEventListener(\"touchmove\",this.events.move),document.removeEventListener(\"touchend\",this.events.stop),document.removeEventListener(\"touchcancel\",this.events.stop)):(document.removeEventListener(\"mousemove\",this.events.move),document.removeEventListener(\"mouseup\",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event(\"change\")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case\"ArrowRight\":case\"ArrowUp\":t.stepUp(v);break;case\"ArrowLeft\":case\"ArrowDown\":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle(\"combined-tooltip\",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+\" - \"+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event(\"input\")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?\"bottom\":\"left\"]=s+\"px\",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+\"px\"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest(\".\"+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute(\"tabindex\")}):this.nodes.handle.removeAttribute(\"tabindex\"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},\"start move stop update reset native keydown\".split(\" \").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener(\"scroll\",this.events.scroll,!1),window.addEventListener(\"resize\",this.events.resize,!1),document.addEventListener(\"keydown\",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.input.addEventListener(\"input\",this.events.native,!1),this.input.form&&this.input.form.addEventListener(\"reset\",this.events.reset,!1)},r.unbind=function(){document.removeEventListener(\"scroll\",this.events.scroll),window.removeEventListener(\"resize\",this.events.resize),document.removeEventListener(\"keydown\",this.events.keydown),this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.input.removeEventListener(\"input\",this.events.native),this.input.form&&this.input.form.removeEventListener(\"reset\",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q});","import 'promise-polyfill/src/polyfill';\nimport { Dataviz, Dataset } from './index';\n\nmodule.exports = {\n default: Dataviz,\n Dataviz,\n Dataset,\n};\n","/* eslint-env browser */\nimport * as d3 from 'd3';\nimport c3 from 'c3';\n\nimport pkg from '../package.json';\nimport data from './data';\nimport { Dataset } from './dataset';\n\n// Utils\nimport { each } from './utils/each';\nimport isDateString from './utils/assert-date-string';\nimport { stripHtmlTags } from './utils/strip-html-tags';\nimport { escapeHtml } from './utils/escape-html';\nimport libraries from './libraries';\nimport { extendDeep } from './utils/extend-deep';\nimport exportImage from './utils/export-svg';\nimport exportData from './utils/export-data';\nimport renderDownloadButton from './utils/render-download-btn';\nimport renderExecutionMetadata from './utils/render-execution-metadata';\nimport copyToClipboard from './utils/copy-to-clipboard';\n\nimport palettes from './palettes/index';\n\n// Constructor\nexport const Dataviz = function (options = {}) {\n if (this instanceof Dataviz === false) {\n return new Dataviz(options);\n }\n\n this.c3 = c3; // expose for use outside\n this.d3 = d3;\n\n const datavizInstance = this;\n const defaultOptions = {\n showDeprecationWarnings: true,\n showLoadingSpinner: false,\n\n container: undefined, // querySelector of container, for example '#someDiv'\n containerElement: undefined, // HTML parent element for the chart\n\n // width: undefined, *deprecated* - use CSS\n // height: undefined, *deprecated* - use CSS\n\n title: undefined,\n showTitle: true,\n\n subtitle: undefined,\n\n notes: undefined,\n theme: 'keen-dataviz',\n\n colors: [\n '#00bbde', '#fe6672', '#eeb058', '#8a8ad6', '#ff855c', '#00cfbb',\n '#5a9eed', '#73d483', '#c879bb', '#0099b6', '#d74d58', '#cb9141',\n '#6b6bb6', '#d86945', '#00aa99', '#4281c9', '#57b566', '#ac5c9e',\n '#27cceb', '#ff818b', '#f6bf71', '#9b9be1', '#ff9b79', '#26dfcd',\n '#73aff4', '#87e096', '#d88bcb',\n ],\n\n colorMapping: {},\n ui: {\n executionMetadata: true,\n },\n utils: {\n clickToCopyToClipboard: true,\n },\n\n indexBy: 'timeframe.start',\n labels: [],\n labelMapping: {},\n labelMappingRegExp: undefined,\n errorMapping: {},\n showErrorMessages: true,\n library: 'default',\n sortGroups: undefined,\n sortIntervals: undefined,\n\n results: undefined, // raw data\n\n // C3 chartOptions\n type: undefined,\n stacked: false,\n dateFormat: undefined,\n legend: {\n show: true,\n position: 'right',\n alignment: 'top',\n label: {\n textMaxLength: 12\n },\n pagination: {\n offset: 0, // start from\n limit: 5 // items per page\n },\n tooltip: {\n show: true,\n pointer: true\n },\n sort: undefined\n },\n\n axis: {},\n color: {},\n size: {\n // control it with CSS of .c3-chart\n },\n padding: {\n top: 15\n },\n point: {\n focus: {\n expand: {\n enabled: false\n }\n },\n r: 2,\n show: true,\n sensitivity: 300\n },\n tooltip: {\n horizontal: true,\n format: {\n // https://c3js.org/samples/tooltip_format.html\n }\n },\n transition: {\n // duration: 0\n },\n data: {\n order: null,\n selection: {\n enabled: true,\n draggable: true,\n multiple: true\n },\n onselected: (d, element) => {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n },\n },\n grid: {\n y: {\n show: true\n }\n },\n partialIntervalIndicator: {\n show: undefined,\n className: 'partial-interval-indicator'\n },\n timezone: 'UTC',\n table: {\n schema: 'static',\n },\n renderOnVisible: false,\n funnel: {\n lines: true,\n resultValues: true,\n percents: {\n show: false,\n countingMethod: 'absolute',\n decimals: 0\n },\n marginBetweenElements: false,\n hover: true,\n effect3d: 'both-sides',\n minimalSize: false,\n },\n react: false,\n range: false,\n sparkline: false,\n choropleth: {\n map: 'world',\n borders: {\n show: true,\n size: 0.5,\n color: '#000'\n },\n showSlider: false\n },\n heatmap: {},\n };\n\n this.config = { ...extendDeep(defaultOptions, options) };\n\n if (options.palette) {\n if (!palettes[options.palette]){\n console.log('Colors pallete not found', options.palette);\n }\n this.config.colors = palettes[options.palette].colors;\n }\n\n if (this.config.type) {\n // backward compatibility with v2016... areachart -> area\n this.config.type = convertChartTypes(this.config.type);\n }\n\n // overwriting options for range chart\n if(this.config.type && this.config.type.includes('-range')) {\n this.config.range = true;\n this.config.type = this.config.type.replace('-range', '');\n this.config.legend.show = false;\n this.config.stacking = 'normal';\n this.config.labels = ['Max', 'Min'];\n this.config.colors = [\n this.config.colors[0],\n this.config.colors[0],\n ];\n }\n\n // overwriting stacked when stacking added\n if (this.config.stacking) {\n this.config.stacked = true;\n }\n\n // overwriting options for sparkline chart\n if (this.config.sparkline) {\n this.config.legend.show = false;\n this.config.axis = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n this.config.grid = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n }\n\n // get DOM node by query\n if (this.config.container) {\n this.el(this.config.container);\n }\n\n if (options.legend !== undefined && !options.legend) {\n this.config.legend = {\n ...options,\n show: false\n };\n }\n\n if (options.color && options.color.pattern) {\n // to match c3 options\n this.config.colors = options.color.pattern;\n }\n\n if (this.config.legend\n && this.config.legend.tooltip\n && this.config.legend.tooltip.show === false\n && this.config.tooltip.show === undefined) {\n this.config.tooltip = { show: false };\n }\n\n this.dataset = new Dataset(this.config);\n this.view = {\n _prepared: false,\n _rendered: false,\n _artifacts: { /* state bin */ }\n };\n\n Dataviz.visuals.push(this);\n\n if (this.config.showLoadingSpinner) {\n this.prepare();\n }\n\n if (!!this.config.results) {\n this.render(this.config.results);\n }\n this.config.firstVisibilityState = document.visibilityState;\n\n if (!this.config.utils.clickToCopyToClipboard) {\n this.config.data.onselected = () => {};\n }\n\n if (options.data && options.data.onselected) {\n this.config.data.onselected = (d, element) => {\n const callback = options.data.onselected.bind(null, d, element);\n callback();\n\n if (this.config.utils.clickToCopyToClipboard) {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n }\n };\n }\n\n};\n\n\nDataviz.libraries = { default: {} };\nif (typeof window !== 'undefined') {\n Dataviz.libraries.default = libraries(Dataviz);\n}\nDataviz.visuals = [];\n\nDataviz.register = function (name, actions) {\n Dataviz.libraries[name] = Dataviz.libraries[name] || {};\n each(actions, function(method, key){\n Dataviz.libraries[name][key] = method;\n });\n};\n\nDataviz.find = function(target){\n if (!arguments.length) return Dataviz.visuals;\n const el = target.nodeName ? target : document.querySelector(target);\n let match = null;\n each(Dataviz.visuals, function(visual){\n if (el == visual.config.container){\n match = visual;\n return false;\n }\n });\n return match;\n};\n\n\n // Prototype\n // ------------\n\nDataviz.prototype.attributes = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n const view = this.config;\n each(obj, function(prop, key){\n // Handle deprecated property names\n if (key === 'chartType') {\n key = 'type';\n }\n view[key] = prop;\n });\n return this;\n};\n\nDataviz.prototype.call = function(fn){\n fn.call(this);\n return this;\n};\n\nDataviz.prototype.chartOptions = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n this.config = extendDeep(this.config, obj);\n return this;\n};\n\nDataviz.prototype.colors = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.colors;\n this.config.colors = (arr instanceof Array ? arr : []);\n return this;\n};\n\nDataviz.prototype.colorMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })');\n }\n const datavizInstance = this;\n if (!arguments.length) return this.config.colorMapping;\n if (obj === null) {\n this.config.colorMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n datavizInstance.config.colorMapping[key] = (value ? value : null);\n });\n }\n return this;\n};\n\nDataviz.prototype.data = data;\n\nDataviz.prototype.dateFormat = function(val){\n if (this.config.showDeprecationWarnings) {\n console.log('.dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.dateFormat;\n if (typeof val === 'string' || typeof val === 'function') {\n this.config.dateFormat = val;\n }\n else {\n this.config.dateFormat = undefined;\n }\n return this;\n};\n\nDataviz.prototype.destroy = function(){\n const library = this.library();\n const type = this.config.type;\n const element = this.el();\n\n // Call destroy method if present\n if (Dataviz.libraries[library]\n && Dataviz.libraries[library][type]){\n Dataviz.libraries[library][type].destroy.call(this);\n }\n\n // Clear rendered artifacts, state bin\n if (element) {\n element.innerHTML = '';\n }\n this.view._prepared = false;\n this.view._rendered = false;\n this.view._artifacts = {};\n return this;\n};\n\nDataviz.prototype.el = function(target){\n const datavizInstance = this;\n if (!arguments.length) return this.config.containerElement;\n domReady(function(){\n if (target && target !== null) {\n if (target.nodeName) {\n datavizInstance.config.containerElement = target;\n }\n else if (document.querySelector) {\n datavizInstance.config.containerElement = document.querySelector(target);\n }\n }\n else {\n datavizInstance.config.containerElement = undefined;\n }\n });\n return this;\n};\n\nDataviz.prototype.height = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.height() is deprecated - use CSS classes');\n }\n return this;\n};\n\n// IMPORTANT: Must be run before data parsing\nDataviz.prototype.indexBy = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.indexBy;\n this.config.indexBy = (str ? String(str) : 'timeframe.start');\n return this;\n};\n\nDataviz.prototype.labels = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })');\n }\n\n if (!arguments.length) return this.config.labels;\n this.config.labels = (arr instanceof Array ? arr : []);\n\n setLabels(this);\n\n return this;\n};\n\nfunction setLabels(datavizInstance){\n // Write labels\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.updateColumn(0, function(value, index){\n if (datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n else {\n datavizInstance.dataset.updateRow(0, function(value, index){\n if (index > 0 && datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.labelMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.labelMapping;\n if (obj === null) {\n this.config.labelMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n this.config.labelMapping[key] = (value ? value : null);\n }.bind(this));\n }\n\n mapLabels(this);\n\n return this;\n};\n\nfunction mapLabelsExec({ datavizInstance, value }){\n if (datavizInstance.config.labelMappingRegExp){\n let valueAfterMatching = value;\n datavizInstance.config.labelMappingRegExp.forEach(regExpAndLabel => {\n if (regExpAndLabel.length > 1) {\n let regExpObj = regExpAndLabel[0];\n if (regExpObj.test(value)){\n valueAfterMatching = regExpAndLabel[1];\n }\n }\n });\n return stripHtmlTags(valueAfterMatching);\n }\n if (datavizInstance.config.labelMapping[value]) {\n return stripHtmlTags(String(datavizInstance.config.labelMapping[value]));\n }\n return stripHtmlTags(value);\n}\n\nfunction mapLabels(datavizInstance){\n // Write labels\n if (!datavizInstance.config.labelMappingDimension) {\n // if not defined use deprecated auto-detecting\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.config.labelMappingDimension = 'row';\n } else {\n datavizInstance.config.labelMappingDimension = 'column';\n }\n }\n\n if (datavizInstance.config.labelMappingDimension === 'row'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateColumn(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n\n if (datavizInstance.config.labelMappingDimension === 'column'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateRow(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.library = function(str){\n if (!arguments.length) return this.config['library'];\n this.config['library'] = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.message = function(){\n if (this.view._rendered) {\n this.destroy();\n }\n if (this.el()) {\n this.el().innerHTML = '';\n const message = Dataviz.libraries.default.message;\n if (message.render) {\n message.render.apply(this, arguments);\n }\n }\n return this;\n};\n\nDataviz.prototype.notes = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.notes;\n this.config.notes = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.prepare = function(){\n const datavizInstance = this;\n\n if (!this.el()) {\n throw `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n return;\n }\n\n domReady(function(){\n if (datavizInstance.view._rendered) {\n datavizInstance.destroy();\n }\n if (datavizInstance.el()) {\n datavizInstance.el().innerHTML = '';\n const loader = Dataviz.libraries.default.spinner;\n if (loader.render) {\n loader.render.call(datavizInstance);\n }\n datavizInstance.view._prepared = true;\n }\n });\n\n return this;\n};\n\nDataviz.prototype.render = function(results = undefined){\n const datavizInstance = this;\n\n if (!!results) {\n const firstResult = results[0] || results;\n if (\n firstResult.query\n && firstResult.query.interval\n && firstResult.query.timeframe\n && typeof firstResult.query.timeframe === 'string'\n && firstResult.query.timeframe.includes('this_')\n && this.config.partialIntervalIndicator\n && this.config.partialIntervalIndicator.show === undefined\n )\n {\n this.config.partialIntervalIndicator.show = true;\n }\n\n if (Array.isArray(results)) {\n const timeframes = results.map(resultItem => resultItem.query.timeframe);\n timeframes.forEach(resultTimeframe => {\n let foundDifferent = timeframes.find(timeframeItem =>\n JSON.stringify(timeframeItem) !== JSON.stringify(resultTimeframe)\n );\n if (foundDifferent){\n const msg = 'Timeframes of the queries should be the same';\n console.error(msg);\n throw msg;\n }\n });\n // first result is important to prepare X on the chart\n return datavizInstance\n .data(results[0])\n .call(() => {\n const input = results[0];\n this.dataset.deleteColumn(1);\n for (let result of results) {\n let label = `${input.query.event_collection} ${input.query.analysis_type}`;\n let ds2 = Dataset.parser('interval')(result);\n datavizInstance.dataset.appendColumn(label, ds2.selectColumn(1).slice(1));\n }\n })\n .render();\n }\n\n return datavizInstance.data(results).render();\n }\n if (\n (!!this.config.labelMapping && Object.keys(this.config.labelMapping).length > 0)\n ||\n (!!this.config.labelMappingRegExp && this.config.labelMappingRegExp.length > 0)\n ){\n mapLabels(datavizInstance);\n }\n if (!!this.config.labels && Object.keys(this.config.labels).length > 0){\n setLabels(datavizInstance);\n }\n if (!!this.config.sortGroups) {\n sortGroups(datavizInstance);\n }\n if (!!this.config.sortIntervals) {\n sortIntervals(datavizInstance);\n }\n\n const loader = Dataviz.libraries.default.spinner;\n const library = this.config.library;\n const type = this.config.type;\n const containerElement = this.el();\n\n if (!containerElement || containerElement === undefined) {\n const msg = `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n console.error(msg);\n throw msg;\n return;\n }\n\n let returnValue = datavizInstance;\n\n if (datavizInstance.config.renderAsPromise) {\n returnValue = new Promise((resolve, reject) => {\n const customCallback = this.config.onrendered;\n datavizInstance.config.onrendered = () => {\n if (customCallback) {\n customCallback();\n }\n resolve(datavizInstance);\n }\n });\n }\n\n domReady(function(){\n const shouldRenderExecutionMetadata = datavizInstance.execution_metadata\n && datavizInstance.config.ui\n && datavizInstance.config.ui.executionMetadata;\n const shouldRenderDownloadBtn = datavizInstance.config.ui\n && datavizInstance.config.ui.buttons\n && datavizInstance.config.ui.buttons.download\n && datavizInstance.config.ui.buttons.download.type;\n if (datavizInstance.view._prepared && loader.destroy) {\n loader.destroy.apply(datavizInstance, arguments);\n }\n containerElement.innerHTML = '';\n\n if (Dataviz.libraries[library] === 'undefined'){\n // Error: Unregistered library\n const msg = `Incorrect library`;\n datavizInstance.message(msg);\n throw msg;\n return;\n }\n else {\n if (typeof Dataviz.libraries[library][type] === 'undefined') {\n const msg = `Incorrect chart type`;\n const mappedMsg = this.config.errorMapping[msg] || msg;\n datavizInstance.message(mappedMsg);\n throw msg;\n return;\n }\n else {\n buildDomWrapper(containerElement,\n datavizInstance.config\n );\n if (shouldRenderDownloadBtn) {\n renderDownloadButton({\n element: containerElement,\n data: datavizInstance.dataset.matrix,\n type: datavizInstance.config.ui.buttons.download.type,\n label: datavizInstance.config.ui.buttons.download.label,\n })\n }\n if (shouldRenderExecutionMetadata) {\n renderExecutionMetadata({\n element: containerElement,\n data: datavizInstance.execution_metadata,\n })\n }\n const { renderOnVisible } = datavizInstance.config;\n if(renderOnVisible){\n if(typeof IntersectionObserver !== 'undefined'){\n const chartVisibleCallback = (events, observer) => {\n events.forEach(el => {\n if(el.isIntersecting){\n if(!datavizInstance.view._rendered){\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n })\n }\n const observer = new IntersectionObserver(chartVisibleCallback);\n observer.observe(containerElement);\n return;\n }\n }\n if(datavizInstance.config.firstVisibilityState === 'hidden'){\n if(typeof document !== 'undefined') {\n let hidden, visibilityChange;\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n const handleVisibilityChange = () => {\n if(!document[hidden] && datavizInstance.view._artifacts.c3) {\n datavizInstance.view._artifacts.c3.load(datavizInstance.dataset.matrix);\n }\n }\n if(typeof document.addEventListener !== \"undefined\" ||\n hidden !== undefined){\n document.addEventListener(visibilityChange, handleVisibilityChange, {\n once: true\n });\n }\n }\n }\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n });\n\n return returnValue;\n};\n\nDataviz.prototype.sortGroups = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortGroups;\n this.config.sortGroups = (str ? String(str) : null);\n\n sortGroups(this, str);\n\n return this;\n};\n\nfunction sortGroups(datavizInstance){\n // Sort groups\n if (datavizInstance.config.sortGroups && datavizInstance.data().length > 1) {\n if (isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.sortColumns(datavizInstance.config.sortGroups, datavizInstance.dataset.getColumnSum);\n }\n else {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortGroups, datavizInstance.dataset.getRowSum);\n }\n }\n}\n\nDataviz.prototype.sortIntervals = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortIntervals;\n this.config.sortIntervals = (str ? String(str) : null);\n\n sortIntervals(this);\n\n return this;\n};\n\nfunction sortIntervals(datavizInstance){\n if (datavizInstance.config.sortIntervals) {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortIntervals);\n }\n}\n\nDataviz.prototype.stacked = function(bool){\n if (this.config.showDeprecationWarnings) {\n console.log('.stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.stacked;\n this.config.stacked = bool ? true : false;\n return this;\n};\n\nDataviz.prototype.theme = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.theme;\n this.config.theme = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.title = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.title;\n this.config.title = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.type = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.type;\n this.config.type = (str ? convertChartTypes(str) : null);\n return this;\n};\n\nDataviz.prototype.update = function(){\n const library = this.config.library;\n const type = this.config.type;\n const element = this.el();\n if (library && type && element && Dataviz.libraries[library][type].update) {\n Dataviz.libraries[library][type].update.apply(this, arguments);\n }\n return this;\n};\n\nDataviz.prototype.width = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.width() is deprecated - use CSS classes');\n }\n return this;\n};\n\nDataviz.prototype.exportImage = function({ quality = 0, bgcolor = '#fff' } = {}) {\n exportImage({\n node: this.config.containerElement,\n quality,\n bgcolor,\n });\n};\n\nDataviz.prototype.exportData = function(type='json') {\n exportData({\n data: this.dataset.matrix,\n type,\n });\n};\n\n// Deprecations\nDataviz.prototype.chartType = Dataviz.prototype.type;\nDataviz.prototype.error = Dataviz.prototype.message;\nDataviz.prototype.parseRawData = Dataviz.prototype.data;\nDataviz.prototype.parseRequest = function(){\n // this.emit('error', 'This method is no longer supported. Use .data() instead: https://github.com/keen/keen-dataviz.js#data');\n return this;\n};\nDataviz.prototype.initialize = function(){\n // this.emit('error', 'This method is no longer supported, and can be omitted as it has no impact');\n return this;\n};\n\nDataviz.version = pkg.version;\n\n// Private\n\nfunction buildDomWrapper(el, options) {\n let html = '';\n let chart100percentWide = '';\n let rangeChart = '';\n if (options.legend.position === 'top' || options.legend.position === 'bottom') {\n chart100percentWide = 'c3-chart-100-percent';\n }\n if (options.range) {\n rangeChart = 'keen-dataviz-range';\n }\n let container = `
`;\n const verticalAlignment = ['top', 'middle', 'bottom'];\n const horizontalAlignment = ['left', 'center', 'right'];\n let align = 'horizontal';\n let legendItemsAlign = 'center';\n if (horizontalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n if (options.legend.position === 'left' || options.legend.position === 'right') {\n align = 'vertical';\n if (verticalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n }\n if (options.legend && options.legend.show) {\n if (options.legend.position === 'top' || options.legend.position === 'left') {\n container = `
${container}`;\n } else {\n container = `${container}
`;\n }\n }\n if(!options.react){\n html += `
`;\n }\n if (options.title && options.showTitle) {\n html += `
${options.title}
`;\n }\n if (options.subtitle) {\n html += `
${options.subtitle}
`;\n }\n html += `
${container}
`;\n if (options.notes) {\n html += `
${options.notes}
`;\n }\n if(!options.react){\n html += '
';\n }\n\n el.innerHTML = html;\n}\n\nfunction convertChartTypes(str) {\n const map = {\n areachart: 'area',\n barchart: 'horizontal-bar',\n columnchart: 'bar',\n linechart: 'line',\n piechart: 'pie',\n };\n return map[str] || str;\n}\n\nfunction testDom(fn) {\n if (/in/.test(document.readyState)) {\n setTimeout(() => {\n testDom(fn);\n }, 9);\n } else {\n fn();\n }\n}\n\nfunction domReady(fn) {\n if (typeof document !== 'undefined' || typeof window === 'undefined') {\n fn();\n return;\n }\n // Firefox 3.5 shim\n if (document.readyState == null && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', function DOMContentLoaded() {\n document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);\n document.readyState = 'complete';\n }, false);\n document.readyState = 'loading';\n }\n testDom(fn);\n}\n\nexport { Dataset } from './dataset';\n\nexport default Dataviz;\n","import { each } from '../../utils/each';\n\nexport function deleteColumn(q) {\n const self = this;\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n each(self.matrix, function(row, i){\n self.matrix[i].splice(index, 1);\n });\n }\n return self;\n}\n\nexport function deleteRow(q) {\n var index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n this.matrix.splice(index, 1);\n }\n return this;\n}\n","import { each } from '../../utils/each';\n\nexport function filterColumns(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i) {\n clone.push([]);\n });\n\n each(self.matrix[0], function(col, i){\n var selectedColumn = self.selectColumn(i);\n if (i == 0 || fn.call(self, selectedColumn, i)) {\n each(selectedColumn, function(cell, ri){\n clone[ri].push(cell);\n });\n }\n });\n\n self.data(clone);\n return self;\n}\n\nexport function filterRows(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i){\n if (i == 0 || fn.call(self, row, i)) {\n clone.push(row);\n }\n });\n\n self.data(clone);\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function insertColumn(index, str, input) {\n const self = this;\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n\n self.matrix[0].splice(index, 0, label);\n each(self.matrix, function(row, i) {\n var cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].splice(index, 0, cell);\n }\n });\n\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat( createNullList(self.matrix.length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n self.matrix[0].splice(index, 0, label);\n each(input, function(value, i){\n self.matrix[i+1].splice(index, 0, value);\n });\n\n }\n return self;\n}\n\nexport function insertRow(index, str, input) {\n const self = this;\n const newRow = [];\n const label = (str !== undefined) ? str : null;\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i) {\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.splice(index, 0, newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n self.matrix.splice(index, 0, newRow.concat(input) );\n }\n\n return self;\n}\n","import { each } from '../../utils/each';\n\nexport function selectColumn(q) {\n const result = [];\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1 && typeof this.matrix[0][index] !== 'undefined') {\n each(this.matrix, function(row, i) {\n result.push(row[index]);\n });\n }\n return result;\n}\n\nexport function selectRow(q) {\n let result = [];\n const index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1 && typeof this.matrix[index] !== 'undefined') {\n result = this.matrix[index];\n }\n return result;\n}\n","import { each } from '../../utils/each';\nimport analysesUtilMethods from '../utils/analyses';\n\nexport function sortColumns(str, comp) {\n var self = this,\n head = this.matrix[0].slice(1), // minus index\n cols = [],\n clone = [],\n fn = comp || analysesUtilMethods.getColumnLabel;\n\n // Isolate each column (except the index)\n each(head, function(cell, i) {\n cols.push(self.selectColumn(i+1).slice(0));\n });\n cols.sort(function(a,b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n each(cols, function(col, i) {\n self\n .deleteColumn(i+1)\n .insertColumn(i+1, col[0], col.slice(1));\n });\n return self;\n}\n\nexport function sortRows(str, comp) {\n var self = this,\n head = this.matrix.slice(0,1),\n body = this.matrix.slice(1),\n fn = comp || analysesUtilMethods.getRowIndex;\n body.sort(function(a, b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n self.data(head.concat(body));\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function updateColumn(q, input) {\n var self = this,\n index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data(), function(row, i){\n var cell;\n if (i > 0) {\n cell = input.call(self, row[index], i, row);\n if (typeof cell !== 'undefined') {\n self.matrix[i][index] = cell;\n }\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.data().length - 1) {\n input = input.concat( createNullList(self.data().length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[i+1][index] = value;\n });\n\n }\n\n }\n return self;\n}\n\nexport function updateRow(q, input){\n var self = this,\n index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data()[index], function(value, i){\n var col = self.selectColumn(i),\n cell = input.call(self, value, i, col);\n if (typeof cell !== 'undefined') {\n self.matrix[index][i] = cell;\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[index][i+1] = value;\n });\n }\n\n }\n return self;\n}\n","let Dataset; /* injected */\n\nimport { each } from '../../utils/each';\nimport { flatten } from '../utils/flatten';\nimport { valueAtDeepKey } from '../utils/object';\n\nexport default function initialize(lib){\n Dataset = lib;\n return function(name){\n var options = Array.prototype.slice.call(arguments, 1);\n\n if (!parsers[name]) {\n throw 'Requested parser does not exist';\n }\n else {\n return parsers[name].apply(this, options);\n }\n };\n}\n\nfunction parseMetric(){\n return function(res){\n return new Dataset()\n .set(['Value', 'Result'], res.result)\n .type('metric');\n }\n}\n\n//var myParser = Dataset.parser('interval', 'timeframe.end');\nfunction parseInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n dataset.set(['Result', index], record.value);\n });\n return dataset;\n }\n}\n\nfunction parseGroupedMetric(){\n return function(res){\n var dataset = new Dataset()\n .type('grouped-metric');\n each(res.result, function(record, i){\n var label;\n each(record, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set(['Result', String(record[label])], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('grouped-interval', 'timeframe.end');\nfunction parseGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('grouped-interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n if (record.value.length) {\n each(record.value, function(group, j){\n var label;\n each(group, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set([ String(group[label]), index ], group.result);\n });\n }\n else {\n dataset.appendRow(index);\n }\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-metric', ['first', 'second']);\nfunction parseDoubleGroupedMetric(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-metric');\n each(res.result, function(record, i){\n var rowLabel = record[options[0][0]] + ' ' + record[options[0][1]];\n dataset.set([ 'Result', rowLabel ], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-interval', ['first', 'second'], 'timeframe.end');\nfunction parseDoubleGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-interval');\n each(res.result, function(record, i){\n var index = options[1] && options[1] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n each(record['value'], function(value, j){\n var label = value[options[0][0]] + ' ' + value[options[0][1]];\n dataset.set([ label, index ], value.result);\n });\n });\n return dataset;\n }\n}\n\nfunction parseFunnel(){\n return function(res){\n var result, steps, dataset;\n if (typeof res.steps !== 'undefined'\n && typeof res.result !== 'undefined'\n && res.result instanceof Array) {\n // Ad-hoc funnel response\n result = res.result;\n steps = res.steps;\n }\n else if (typeof res.result.steps !== 'undefined'\n && typeof res.result.result !== 'undefined'\n && res.result.result instanceof Array) {\n // Saved funnel response\n result = res.result.result;\n steps = res.result.steps;\n }\n dataset = new Dataset().type('funnel');\n dataset.appendColumn('Step Value');\n each(result, function(value, i){\n if (typeof steps !== 'undefined' && steps[i]) {\n dataset.appendRow(String(steps[i].event_collection), [value]);\n }\n });\n return dataset;\n }\n}\n\nfunction parseList(){\n return function(res){\n var dataset = new Dataset()\n .type('list');\n each(res.result, function(value, i){\n dataset.set( [ 'Result', String(i+1) ], value );\n });\n return dataset;\n }\n}\n\nfunction parseExtraction(){\n let config = this.config;\n return function(res){\n const datasetExtraction = new Dataset()\n .type('extraction');\n\n // get keys of the Object, static schema\n let names = Object.keys(flatten(res.result[0]));\n\n const tableConfig = config && config.table;\n if (tableConfig && tableConfig.schema === 'dynamic') {\n const results = res.result;\n const keys = {};\n results.forEach(resultItem => {\n const resultKeys = Object.keys(flatten(resultItem));\n if (resultKeys && resultKeys.length) {\n resultKeys.forEach(keyName => {\n if (!keys[keyName]) {\n keys[keyName] = true;\n }\n });\n }\n });\n names = Object.keys(keys);\n }\n \n let nameI = 0;\n names.forEach(value => {\n datasetExtraction.set([ value, '0' ], value);\n nameI++;\n });\n \n if (Dataset) {\n if (config\n && config.table\n && config.table.columns) {\n names = config.table.columns;\n }\n }\n\n for (let i=0; i 1) {\n parser = 'double-grouped-metric';\n parserArgs.push(query.group_by);\n }\n else {\n parser = 'grouped-metric';\n }\n }\n else if (query.interval && !query.group_by) {\n parser = 'interval';\n parserArgs.push(indexBy);\n }\n else if (query.group_by && query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-interval';\n parserArgs.push(query.group_by);\n parserArgs.push(indexBy);\n }\n else {\n parser = 'grouped-interval';\n parserArgs.push(indexBy);\n }\n }\n }\n\n if (!parser) {\n\n // Metric\n // -------------------------------\n if (typeof response.result === 'number'){\n parser = 'metric';\n }\n\n // Everything else\n // -------------------------------\n if (response.result instanceof Array && response.result.length > 0){\n\n // Interval w/ single value\n // -------------------------------\n if (response.result[0].timeframe && (typeof response.result[0].value == 'number' || response.result[0].value == null)) {\n parser = 'interval';\n parserArgs.push(indexBy)\n }\n\n // Static GroupBy\n // -------------------------------\n if (typeof response.result[0].result == 'number'){\n parser = 'grouped-metric';\n }\n\n // x, y, value for heatmap\n if (this.config.type === 'heatmap' && Object.keys(response.result[0] === 3 && typeof response.result[0].result === 'number')) {\n parser = 'heatmap-axis';\n }\n\n // Grouped Interval\n // -------------------------------\n if (response.result[0].value instanceof Array){\n parser = 'grouped-interval';\n parserArgs.push(indexBy)\n }\n\n // Funnel\n // -------------------------------\n if (typeof response.result[0] === 'number'\n && typeof response.steps !== 'undefined'){\n parser = 'funnel';\n // Move steps into query object\n query.steps = response.steps;\n }\n\n // Select Unique\n // -------------------------------\n if ((typeof response.result[0] === 'string' || typeof response.result[0] == 'number') && typeof response.steps === 'undefined'){\n parser = 'list';\n }\n\n // Extraction\n // -------------------------------\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n // Set title from saved query body, or create a default title\n if (this.config.title === undefined) {\n if (meta.display_name) {\n title = meta.display_name;\n }\n else {\n title = getDefaultTitle(query);\n }\n this.config.title = title;\n }\n\n // Set type from saved query body, or use a default type\n if (!this.config.type) {\n if (meta.visualization && meta.visualization.chart_type) {\n type = meta.visualization.chart_type;\n }\n else {\n type = getDefaultType(parser);\n }\n this.config.type = type;\n }\n\n // Define the appropriate parser\n selectedParser = Dataset.parser.apply(this, [parser].concat(parserArgs));\n\n // Parse the response with augmented query body\n dataset = selectedParser(extend(response, { 'query': query }));\n\n // Set true dates for 'interval' data\n if (parser.indexOf('interval') > -1) {\n dataset.updateColumn(0, function(value, i){\n return new Date(value);\n });\n }\n\n dataset.updateRow(0, function(value, i){\n return stripHtmlTags(value);\n });\n\n this.dataset = dataset;\n\n if (response.execution_metadata) {\n this.execution_metadata = response.execution_metadata;\n }\n\n return this;\n}\n\nfunction getDefaultTitle(query) {\n var analysis = query.analysis_type ? query.analysis_type.replace('_', ' ') : '',\n title;\n\n title = analysis.replace( /\\b./g, function(a){\n return a.toUpperCase();\n });\n\n if (query.event_collection) {\n title += ' - ' + query.event_collection;\n }\n return title;\n}\n\nfunction getDefaultType(parser) {\n let type;\n switch (parser) {\n case 'metric':\n type = 'metric';\n break;\n case 'interval':\n type = 'area';\n break;\n case 'grouped-metric':\n case 'double-grouped-metric':\n type = 'bar';\n break;\n case 'grouped-interval':\n case 'double-grouped-interval':\n type = 'line';\n break;\n case 'funnel':\n type = 'horizontal-bar';\n break;\n case 'list':\n case 'extraction':\n default:\n type = 'table';\n }\n return type;\n}\n","import c3 from 'c3';\n\nimport { each } from '../utils/each';\nimport { extend } from '../utils/extend';\nimport { extendDeep } from '../utils/extend-deep';\nimport isDateString from '../utils/assert-date-string';\nimport c3DefaultDateFormat from './c3/extensions/default-date-format';\nimport c3PaginatingLegend from './c3/extensions/paginating-legend';\nimport c3TooltipContents from './c3/extensions/tooltip-contents';\n\nimport calculateRange from '../dataset/utils/calculate-range';\nimport { calculateSumForPercents, calculatePercents } from '../dataset/utils/calculate-percents';\n\nimport message from './default/message';\nimport metric from './default/metric';\nimport table from './default/table';\nimport spinner from './default/spinner';\nimport Funnel from './default/funnel';\nimport Funnel3d from './default/funnel-3d';\nimport HorizontalFunnel from './default/horizontal-funnel';\nimport HorizontalFunnel3d from './default/horizontal-funnel-3d';\nimport MetricCombo from './default/metric-combo';\nimport Heatmap from './default/heatmap';\nimport Choropleth from './default/choropleth';\n\nexport default function(lib) {\n let timer;\n bindResizeListener(function(){\n if (timer) {\n clearTimeout(timer);\n }\n const delay = (lib.visuals.length > 12) ? 1000 : 250;\n timer = setTimeout(function(){\n each(lib.visuals, function(chart){\n const c3Chart = chart.view._artifacts.c3;\n if (c3Chart) {\n const parentWidth = c3Chart.element.parentNode.parentNode.offsetWidth;\n let width = parentWidth;\n if (chart.config.legend && chart.config.legend.show && (chart.config.legend.position === 'left' || chart.config.legend.position === 'right')) {\n const nextSiblingWidth = c3Chart.element.nextSibling ? c3Chart.element.nextSibling.offsetWidth : 0;\n const prevSiblingWidth = c3Chart.element.previousSibling ? c3Chart.element.previousSibling.offsetWidth : 0;\n width = parentWidth - prevSiblingWidth - nextSiblingWidth;\n }\n\n c3Chart.resize({\n width,\n });\n\n }\n });\n }, delay);\n });\n\n return defineC3();\n};\n\nfunction defineC3(){\n const types = {\n message,\n metric,\n table,\n spinner,\n 'funnel': new Funnel,\n 'funnel-3d': new Funnel3d,\n 'horizontal-funnel': new HorizontalFunnel,\n 'horizontal-funnel-3d': new HorizontalFunnel3d,\n 'metric-combo': new MetricCombo,\n 'heatmap': new Heatmap,\n 'choropleth': new Choropleth\n };\n\n const c3Types = [\n // Standard types\n 'area',\n 'area-spline',\n 'area-step',\n 'bar',\n 'donut',\n 'gauge',\n 'line',\n 'pie',\n 'step',\n 'spline',\n\n // Horizontal variant types\n 'horizontal-area',\n 'horizontal-area-spline',\n 'horizontal-area-step',\n 'horizontal-bar',\n 'horizontal-line',\n 'horizontal-step',\n 'horizontal-spline',\n ];\n\n const getPaddings = (element, paddingName) => {\n return parseInt(window.getComputedStyle(element)[`padding${paddingName}`].replace('px', ''));\n }\n\n function getDefaultOptions(){\n const ENFORCED_OPTIONS = {\n bindto: this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'),\n color: {\n pattern: this.config.colors\n },\n data: {\n colors: { ...this.config.colorMapping },\n columns: [],\n type: this.config.type.replace('horizontal-', '')\n },\n };\n\n const renderingElement = this.el();\n\n let height = renderingElement.offsetHeight;\n\n height -= (getPaddings(renderingElement, 'Top') + getPaddings(renderingElement, 'Bottom'));\n\n if (this.config.showTitle) {\n const titleElement = this.el().querySelector('.keen-dataviz-title');\n if (titleElement) {\n height -= titleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.subtitle) {\n const subtitleElement = this.el().querySelector('.keen-dataviz-subtitle');\n if (subtitleElement) {\n height -= subtitleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.notes) {\n const notesElement = this.el().querySelector('.keen-dataviz-notes');\n if (notesElement) {\n height -= notesElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n let width = this.el().querySelector('.c3-chart').offsetWidth\n - (getPaddings(renderingElement, 'Left') + getPaddings(renderingElement, 'Right'));\n if (width < 0) {\n width = 0;\n }\n\n const DEFAULT_OPTIONS = {\n size: {\n width,\n height:\n height > 0 ?\n height\n : undefined,\n }\n };\n\n const extendedConfig = extendDeep({}, DEFAULT_OPTIONS, this.config, ENFORCED_OPTIONS);\n\n return extendedConfig;\n }\n\n each(c3Types, function(type, index) {\n types[type] = {\n render: function(){\n const options = getDefaultOptions.call(this);\n\n // 100% for charts\n const sumArray = calculateSumForPercents(this.dataset.matrix);\n let oldMatrix = [];\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' || type === 'area-step' || type === 'area-spline')) {\n oldMatrix = this.dataset.matrix;\n this.dataset.matrix = [this.dataset.matrix[0], ...calculatePercents(this.dataset.matrix, sumArray)];\n if(!options.sparkline){\n options.axis = {\n y: {\n padding: {\n top: 0,\n },\n tick: {\n format: d => `${d}%`,\n },\n },\n };\n }\n }\n\n // range charts\n if (options.range) {\n this.dataset.matrix = [this.dataset.matrix[0], ...calculateRange(this.dataset.matrix)];\n }\n\n if (!!this.config.clearOnRender && options.data.columns.length && this.dataset && this.dataset.meta) {\n const datasetMeta = this.dataset.meta || {};\n const { type = '' } = datasetMeta;\n let spliceFrom = 0;\n const intervalTypes = ['interval'];\n if (intervalTypes.includes(type)) {\n spliceFrom = 1;\n }\n options.data.columns.splice(spliceFrom);\n }\n\n if (this.data()[0].length === 1 || this.data().length === 1) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n let removeLegend = false;\n\n if (type === 'gauge') {\n // Accommodate a neat bug:\n options.legend.show = false;\n options.data.columns = [[\n this.config.title || this.data()[1][0],\n this.data()[1][1]\n ]];\n removeLegend = true;\n }\n else if (type === 'pie' || type === 'donut') {\n options.data.columns = this.data().slice(1);\n }\n else {\n\n // Apply formatting for horizontal variant types\n if (type.indexOf('horizontal-') > -1) {\n options.axis.rotated = type.indexOf('horizontal-') > -1;\n }\n\n if (isDateString(this.data()[1][0])) {\n // TIMESERIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'timeseries';\n options.axis.x.tick = options.axis.x.tick || {\n format: this.config.dateFormat || c3DefaultDateFormat(this.data()[1][0], this.data()[2] ? this.data()[2][0] : this.data()[1][0]),\n culling: { max: 5 }\n };\n\n options.data.columns[0] = [];\n each(this.dataset.selectColumn(0), function(cell, i){\n if (i > 0) {\n cell = new Date(cell);\n }\n options.data.columns[0][i] = cell;\n });\n options.data.columns[0][0] = 'x';\n options.data.x = 'x';\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n else {\n // CATEGORIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'category';\n options.axis.x.categories = this.dataset.selectColumn(0).slice(1);\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n\n if (this.data()[0].length === 2) {\n options.legend.show = false;\n removeLegend = true;\n }\n\n each(this.data()[0], function(cell, i){\n if (i > 0) {\n options.data.columns.push(this.dataset.selectColumn(i));\n }\n }.bind(this));\n }\n\n if (removeLegend){\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n legendElement.remove();\n options.size.width = this.el().querySelector('.c3-chart').offsetWidth;\n }\n options.legend.show = false;\n }\n\n const chartTypesWithPartialIntervalIndicator = ['area', 'area-spline', 'area-step', 'line', 'spline', 'step'];\n\n if (options.partialIntervalIndicator\n && options.partialIntervalIndicator.show\n && chartTypesWithPartialIntervalIndicator.indexOf(options.type) > -1\n ) {\n const results = options.data.columns && options.data.columns[0];\n if (results && results.length > 1) {\n const partialResultsRegion = {\n axis: 'x',\n start: new Date(results[results.length - 2]),\n class: options.partialIntervalIndicator.className\n };\n options.regions = [...(options.regions || []), partialResultsRegion];\n }\n }\n \n if (\n !(options.tooltip && options.tooltip.show === false)\n &&\n (options.legend.show === true ||\n (options.legend\n && options.legend.tooltip\n && options.legend.tooltip.show)\n )) {\n \n // Apply custom tooltip\n options.tooltip = {\n contents: c3TooltipContents,\n format: {\n title: this.config.tooltip.format.title,\n value: (value, ratio, id, index) => {\n let valueFormatted = c3CustomTooltipFiltering.call(this, value, ratio, id, index);\n if (this.config.tooltip && this.config.tooltip.format && this.config.tooltip.format.value)\n {\n valueFormatted = this.config.tooltip.format.value.call(this, valueFormatted, ratio, id, index);\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = parseFloat(((valueFormatted / 100) * sumArray[index]).toFixed(2));\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = ((valueFormatted / 100) * sumArray[index]).toFixed(2);\n return parseFloat(valueFormatted);\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n }\n };\n }\n\n if (options.legend.show === true) {\n const c3options = { ...options };\n // Apply custom color handling\n c3options.data.color = c3CustomDataMapping.bind(this);\n\n c3options.legend.hide = true; // hide default c3 legend\n\n // Render artifacts\n this.view._artifacts['c3'] = c3.generate(c3options);\n\n c3PaginatingLegend.call(this, {...options, onLegendRendered: () => {\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n if (\n options.legend.position === 'top' ||\n options.legend.position === 'bottom'\n ) {\n c3options.size.height -= legendElement.offsetHeight;\n this.view._artifacts['c3'].resize({ height: c3options.size.height });\n } else {\n if (c3options.size.width === 0) {\n c3options.size.width = this.el().offsetWidth\n - getPaddings(this.el(), 'Left')\n - getPaddings(this.el(), 'Right');\n }\n c3options.size.width -= legendElement.offsetWidth;\n this.view._artifacts['c3'].resize({ width: c3options.size.width });\n }\n }\n },\n onPaginated: () => {\n this.view._artifacts['c3'].flush();\n }\n });\n }\n else {\n this.view._artifacts['c3'] = c3.generate(options);\n }\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts['c3']) {\n this.view._artifacts['c3'].destroy();\n this.view._artifacts['c3'] = null;\n }\n }\n };\n });\n\n return types;\n}\n\nfunction c3CustomDataMapping(color, d) {\n const type = this.config.type;\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if ((d.id && scope.indexOf(d.id) > -1)\n || (d && !d.id && scope.indexOf(d) > -1)) {\n return color;\n }\n else {\n if (type === 'donut' || type === 'pie') {\n return 'rgba(0,0,0,.1)';\n }\n else {\n return 'rgba(0,0,0,.07)';\n }\n }\n }\n else {\n return color;\n }\n}\n\nfunction c3CustomTooltipFiltering(value, ratio, id, index) {\n const type = this.config.type;\n\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if (scope.indexOf(id) > -1) {\n return value;\n }\n }\n else {\n return value;\n }\n}\n\nfunction bindResizeListener(fn){\n if (typeof window === 'undefined') return;\n window.onresize = window.resize = function(){};\n if (window.addEventListener) {\n window.addEventListener('resize', fn, true);\n }\n else if (window.attachEvent) {\n window.attachEvent('onresize', fn);\n }\n}\n","export default function (startDate, endDate) {\n const timeDiff = Math.abs(new Date(startDate).getTime() - new Date(endDate).getTime());\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'June',\n 'July',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n // Yearly (31536000000) + Monthly\n if (timeDiff >= 2419200000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getFullYear();\n };\n }\n // Daily\n else if (timeDiff >= 86400000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getDate();\n };\n }\n // Hourly\n else if (timeDiff >= 3600000) {\n return '%I:%M %p';\n }\n // Minutely\n else {\n return '%I:%M:%S %p';\n }\n}\n","import * as d3 from 'd3';\n\nimport isDateString from '../../../utils/assert-date-string';\n\nexport default function (options) {\n const cols = options.data.columns;\n const datavizInstance = this;\n const chart = this.view._artifacts.c3;\n let columns = [];\n const domNode = this.el().querySelector('.' + datavizInstance.config.theme + '-rendering');\n const legendConfig = datavizInstance.config.legend;\n\n const pagination = this.view._artifacts.pagination = {\n ...{\n hidden: [],\n labels: [],\n offset: 0,\n limit: Math.round((domNode.offsetHeight - 78) / 20),\n total: 0\n },\n ...legendConfig.pagination\n };\n\n if (options.legend.sort) {\n columns = options.legend.sort(cols);\n\n // update column order in the data, so tooltip will be the same order\n const columnsSorted = [];\n const dataColumnsSorted = [];\n if (cols[0][0] === 'x') {\n dataColumnsSorted.push(cols[0]);\n }\n columns.forEach(column => {\n let columnData = options.data.columns.find(item => item[0] === column);\n dataColumnsSorted.push(columnData);\n });\n options.data.columns = dataColumnsSorted;\n } else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i][0] !== 'x' && !isDateString(cols[i][1])) {\n columns.push(cols[i][0]);\n }\n }\n }\n\n const legendElement = this.el().querySelector('.keen-c3-legend');\n\n let align = 'vertical';\n if (legendConfig.position === 'top' || legendConfig.position === 'bottom') {\n align = 'horizontal';\n }\n\n const paginateHorizontalLeftElement = document.createElement('div');\n paginateHorizontalLeftElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-left');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalLeftElement);\n }\n\n const legendItemsElement = document.createElement('div');\n legendItemsElement.setAttribute('class', `keen-c3-legend-items keen-c3-legend-${align}-items`);\n legendElement.append(legendItemsElement);\n\n const paginateVerticalElement = document.createElement('div');\n paginateVerticalElement.setAttribute('class', 'keen-c3-legend-pagination keen-c3-legend-pagination-icons');\n if (align === 'vertical') {\n legendElement.append(paginateVerticalElement);\n }\n\n const paginateHorizontalRightElement = document.createElement('div');\n paginateHorizontalRightElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalRightElement);\n }\n\n paginateData();\n\n function paginateData(){\n pagination.labels = columns.slice(pagination.offset, pagination.offset + pagination.limit);\n pagination.total = columns.length;\n renderLegendComponent.call(datavizInstance, pagination.labels);\n if (pagination.total > pagination.limit) {\n renderPaginationComponent.call(datavizInstance);\n }\n if (options.onPaginated){\n options.onPaginated();\n }\n }\n\n function renderLegendComponent(){\n legendItemsElement.innerHTML = '';\n\n pagination.labels.forEach(label => {\n const labelShortened = legendConfig.label.textMaxLength ? label.slice(0, legendConfig.label.textMaxLength - 1) : label;\n const legendItem = document.createElement(\"div\");\n legendItem.innerHTML = `${labelShortened}`;\n legendItem.chartPartId = label;\n legendItem.setAttribute('class', 'legend-item');\n legendItemsElement.append(legendItem);\n\n const legendItemColorSample = document.createElement(\"span\");\n legendItemColorSample.setAttribute('class', 'legend-item-color-sample');\n legendItemColorSample.style.backgroundColor = chart.color(legendItem.chartPartId);\n legendItem.prepend(legendItemColorSample);\n\n const tooltipElement = document.createElement(\"div\");\n legendItem.addEventListener('mouseover', (event) => {\n chart.focus(legendItem.chartPartId);\n if (legendConfig.tooltip.show && legendItem.chartPartId.length > legendConfig.label.textMaxLength) {\n tooltipElement.setAttribute('class', `keen-c3-legend-label-overlay keen-c3-legend-position-${legendConfig.position}`);\n tooltipElement.innerHTML =\n `${\n options.legend.tooltip.pointer ? `
` : ``\n }${legendItem.chartPartId}`;\n legendItem.append(tooltipElement);\n }\n });\n legendItem.addEventListener('mouseout', (event) => {\n chart.revert();\n tooltipElement.remove();\n });\n legendItem.addEventListener('click', (event) => {\n let opacity = 1;\n const isHidden = pagination.hidden.indexOf(legendItem.chartPartId);\n if (isHidden < 0) {\n pagination.hidden.push(legendItem.chartPartId);\n opacity = .35;\n }\n else {\n pagination.hidden.splice(isHidden, 1);\n opacity = 1;\n }\n legendItem.style.opacity = opacity;\n chart.toggle(legendItem.chartPartId);\n });\n });\n\n if (options.onLegendRendered){\n options.onLegendRendered();\n options.onLegendRendered = null;\n }\n\n }\n\n function renderPaginationComponent(){\n paginateVerticalElement.innerHTML = '';\n paginateHorizontalLeftElement.innerHTML = '';\n paginateHorizontalRightElement.innerHTML = '';\n\n const arrowUp = document.createElement('i');\n const arrowDown = document.createElement('i');\n\n const paginate = (direction) => {\n if (direction === 'forward') {\n const diff = pagination.offset + pagination.limit;\n if (diff < pagination.total) {\n pagination.offset = diff;\n return;\n }\n pagination.offset = 0;\n return;\n }\n\n const diff = pagination.offset - pagination.limit;\n if (diff >= 0) {\n pagination.offset = diff;\n return;\n }\n\n pagination.offset = Math.floor(pagination.total/pagination.limit) * pagination.limit;\n };\n\n arrowDown.addEventListener('click', () => {\n paginate('forward');\n paginateData();\n clearSelectedText();\n });\n\n arrowUp.addEventListener('click', () => {\n paginate('backward');\n paginateData();\n clearSelectedText();\n });\n\n if (legendConfig.position === 'left' || legendConfig.position === 'right') {\n arrowUp.setAttribute('class', 'up');\n arrowDown.setAttribute('class', 'down');\n paginateVerticalElement.append(arrowDown);\n paginateVerticalElement.append(arrowUp);\n } else {\n // bottom top\n arrowUp.setAttribute('class', 'left');\n arrowDown.setAttribute('class', 'right');\n paginateHorizontalLeftElement.append(arrowUp);\n paginateHorizontalRightElement.append(arrowDown);\n }\n\n }\n\n function clearSelectedText() {\n let selection;\n if (document.selection && document.selection.empty) {\n selection = document.selection;\n selection.empty();\n }\n else if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n }\n }\n}\n","import { escapeHtml } from '../../../utils/escape-html';\n\nexport default function (d, defaultTitleFormat, defaultValueFormat, color) {\n let text;\n let title;\n // Set config options or defaults\n const nameFormat = this.config.tooltip_format_name || function (name) { return name; };\n const titleFormat = this.config.tooltip_format_title || defaultTitleFormat;\n const valueFormat = this.config.tooltip_format_value || defaultValueFormat;\n\n // Reverse list to match legend\n for (let i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n if (!text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n let name = nameFormat(d[i].name);\n let value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n let bgcolor = this.levelColor ? this.levelColor(d[i].value) : color(d[i].id);\n if (value && !isNaN(value)) {\n text += \"\";\n if (name.indexOf('__tooltip_ignore_name_field__') === -1) {\n text += \"\";\n }\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + escapeHtml(title) + \"
\" + escapeHtml(name) + \"\" + escapeHtml(value) + \"
\";\n}\n","export default function calculateRange(matrix) {\n const newValues = matrix.slice(1).map(d => d.map((e, i) => {\n if (typeof e === 'number') {\n if (i === 1) {\n return e - d[i + 1];\n }\n }\n return e;\n }));\n return newValues;\n}","export function calculateSumForPercents(matrix) {\n const sumArray = [];\n matrix.slice(1).forEach((d, i) => {\n d.forEach((e) => {\n if (typeof e === 'number') {\n if (!sumArray[i]) {\n sumArray[i] = e;\n return sumArray[i];\n }\n sumArray[i] += e;\n }\n return sumArray[i];\n });\n });\n return sumArray;\n}\n\nexport function calculatePercents(matrix, sumArray) {\n const newValues = matrix.slice(1).map((d, i) => d.map((e) => {\n if (typeof e === 'number') {\n return (e / sumArray[i]) * 100;\n }\n return e;\n }));\n return newValues;\n}\n","import { escapeHtml } from '../../utils/escape-html';\nimport renderDownloadButton from '../../utils/render-download-btn';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default {\n render: function(text){\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n const msg = document.createElement('span');\n\n const titleContainer = document.createElement('div');\n const subtitleContainer = document.createElement('div');\n const notesContainer = document.createElement('div');\n\n outer.className = this.config.theme + ' keen-dataviz-box';\n inner.className = this.config.theme + '-message';\n\n // Create title and notes for message\n titleContainer.className = this.config.theme + '-title';\n titleContainer.innerHTML = escapeHtml(this.config.title || '');\n subtitleContainer.className = this.config.theme + '-subtitle';\n subtitleContainer.innerHTML = escapeHtml(this.config.subtitle || '');\n notesContainer.className = this.config.theme + '-notes';\n notesContainer.innerHTML = escapeHtml(this.config.notes || '');\n\n msg.innerHTML = escapeHtml(text) || '';\n inner.appendChild(msg);\n\n if (this.config.title && this.config.showTitle) {\n outer.appendChild(titleContainer);\n }\n\n if (this.config.subtitle) {\n outer.appendChild(subtitleContainer);\n }\n\n outer.appendChild(inner);\n\n if (this.config.notes) {\n outer.appendChild(notesContainer);\n }\n\n if (this.config.ui\n && this.config.ui.buttons\n && this.config.ui.buttons.download\n && this.config.ui.buttons.download.type) {\n renderDownloadButton({\n element: this.el(),\n data: escapeHtml(text) || '',\n type: this.config.ui.buttons.download.type,\n label: this.config.ui.buttons.download.label,\n })\n }\n\n if (this.config.utils\n && this.config.utils.clickToCopyToClipboard) {\n titleContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n notesContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n msg.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n\n this.el().innerHTML = '';\n this.el().appendChild(outer);\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import exportImage from './export-svg';\nimport exportData from './export-data';\n\nexport default function downloadResults(obj) {\n const { event, type, data } = obj;\n event.preventDefault();\n const supportedFormats = ['json', 'csv', 'jpg', 'jpeg', 'png'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = '';\n let content = '';\n\n if (format === 'png') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n });\n return;\n }\n\n if (format === 'jpg' || format === 'jpeg') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n quality: 1,\n bgcolor: '#fff',\n });\n return;\n }\n\n if (format === 'json') {\n exportData({ type: format, data });\n }\n\n if (format === 'csv') {\n exportData({ type: format, data });\n }\n}\n","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { prettyNumber } from '../../utils/pretty-number';\nimport { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nfunction formatExtractionData(res, prop) {\n const { query, result } = res;\n const formattedResult = [];\n if (query.analysis_type !== 'extraction') throw new Error('Analysis type is not an extraction!');\n if (Array.isArray(result)) {\n result.forEach((item) => {\n const itemProp = prop.split('.').reduce((acc, val) => (acc && acc[val]) || null, item);\n const obj = {\n query,\n result: itemProp,\n };\n formattedResult.push(obj);\n });\n }\n return formattedResult;\n}\n\nexport default {\n render: function(){\n let color = this.config.colors[0];\n const theme = this.config.theme;\n const title = this.config.title;\n const subtitle = this.config.subtitle;\n const opts = this.config;\n let value = '-';\n let prevValue= '';\n let html = '';\n let prefix = '';\n let suffix = '';\n let formattedNum;\n let flexDifferenceStyle = '';\n let resultDifference = '';\n let differenceStyle = '';\n let smallerValue = '';\n const { results, previousResults, isExtraction, comparedProp } = this.config;\n if(results && previousResults){\n flexDifferenceStyle = previousResults ? ' metric-comparison' : '';\n smallerValue = previousResults && title ? '-smaller' : '';\n resultDifference = results.result - previousResults.result;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n if (this.data() && this.data()[1] && this.data()[1][1] && typeof this.data()[1][1] === 'number') {\n value = this.data()[1][1];\n }\n\n if (isExtraction && comparedProp) {\n const formattedResult = formatExtractionData(results, comparedProp);\n \n value = formattedResult[0].result;\n prevValue = formattedResult[1].result;\n\n flexDifferenceStyle = prevValue ? ' metric-comparison' : '';\n smallerValue = prevValue && title ? '-smaller' : '';\n resultDifference = value - prevValue;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n formattedNum = value;\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(value)) ) {\n formattedNum = prettyNumber(value);\n if(results && previousResults){\n resultDifference = prettyNumber(resultDifference);\n }\n }\n\n if (opts['prefix']) {\n prefix = '' + opts['prefix'] + '';\n }\n if (opts['suffix']) {\n suffix = '' + opts['suffix'] + '';\n }\n html += '
';\n html += '
';\n if (results && previousResults) {\n html += '
' + escapeHtml(resultDifference) + '
';\n }\n if (isExtraction && comparedProp) {\n if (value && prevValue) {\n html += '
' + escapeHtml(resultDifference) + '
';\n html += '' + prevValue + '';\n } else {\n html += '

No data to display

';\n }\n }\n html += '
' + prefix + escapeHtml(formattedNum) + suffix + '
';\n if (title) {\n html += '
' + escapeHtml(title) + '
';\n }\n if (subtitle) {\n html += '
' + escapeHtml(subtitle) + '
';\n }\n html += '
';\n html += '
';\n\n this.el().innerHTML = html;\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const resultClassName = `.${theme}-metric-value${smallerValue}`;\n document.querySelector(resultClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n\n if (results && previousResults) {\n const previousResultsClassName = `.${theme}-metric${differenceStyle}`;\n document.querySelector(previousResultsClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n }\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nlet currentPage;\nfunction _generateTableRows(datavizInstance, dataset) {\n let html = '';\n const defaultConfig = {\n page: 1,\n limit: 0,\n arrows: true\n };\n let customConfig = {};\n if (datavizInstance.config.table && datavizInstance.config.table.pagination) {\n customConfig = datavizInstance.config.table.pagination;\n }\n const config = {\n ...defaultConfig,\n ...customConfig\n };\n\n if (!currentPage){\n currentPage = config.page;\n }\n\n let datasetPaginated;\n let pages = 0;\n if (config.limit === 0) {\n datasetPaginated = dataset.slice(1); // remove header\n } else {\n const start = config.limit * (currentPage - 1) + 1;\n const end = start + config.limit;\n datasetPaginated = dataset.slice(start, end);\n pages = Math.ceil((dataset.length - 1) / config.limit);\n }\n\n let columnsArray = datavizInstance.config.table.columns ?\n datavizInstance.config.table.columns :\n datavizInstance.dataset.matrix[0];\n\n const colNamesToMap = {};\n const {\n mapValues,\n mapDates,\n } = datavizInstance.config.table;\n for (let key in mapValues){\n colNamesToMap[columnsArray.indexOf(key)] = key;\n }\n\n for (let row of datasetPaginated) {\n html += '';\n for (let [index, rowColValue] of row.entries()) {\n if (mapDates && rowColValue instanceof Date) {\n rowColValue = mapDates(rowColValue);\n }\n\n let rowColValueEscaped = escapeHtml(rowColValue);\n if(colNamesToMap[index]){\n html += `${mapValues[colNamesToMap[index]](rowColValueEscaped)}`;\n continue;\n }\n html += `${rowColValueEscaped}`\n }\n html += '';\n }\n\n if (pages > 1){\n html += ``;\n let pageNumber = 1;\n const prevPage = (currentPage === 1) ? 1 : (currentPage - 1);\n const nextPage = (currentPage === pages) ? pages : (currentPage + 1);\n if (config.arrows){\n html += `«`;\n }\n while (pageNumber <= pages){\n html += `${pageNumber}`;\n pageNumber++;\n }\n if (config.arrows){\n html += `»`;\n }\n html += '';\n }\n\n return html;\n}\n\nfunction _generateTableHeader(datavizInstance, dataset) {\n let html = '';\n let fieldNumber = -1;\n const tableConfig = datavizInstance.config.table;\n const columnNames =\n (tableConfig && tableConfig.columns)\n || dataset[0];\n for (let colName of columnNames) {\n let colNameEscaped = escapeHtml(colName);\n fieldNumber +=1;\n html += `${colNameEscaped}`;\n }\n return html;\n}\n\n\n const render = function() {\n const dataset = this.dataset.matrix;\n\n const el = this.el();\n const theme = this.config.theme;\n const datavizInstance = this;\n\n let html = '';\n\n const isEmpty = dataset.length === 1 && dataset[0].length === 0;\n if (isEmpty) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n // Open wrapper\n html += `
`;\n\n // Static, scrollable table\n html += ``;\n html += '';\n html += '';\n html += _generateTableHeader(datavizInstance, dataset);\n html += '';\n html += '';\n // Table data\n html += '';\n html += _generateTableRows(datavizInstance, dataset);\n html += '';\n html += '
';\n/* */\n // Close wrapper\n html += '
';\n\n // Inject HTML string\n el.querySelector(`.${theme}-rendering`).innerHTML = html;\n\n el\n .querySelectorAll(`.${theme}-rendering th`)\n .forEach((item) => {\n item.addEventListener('click', (event) => {\n let sortOrder = event.target.getAttribute('order') || 'asc';\n let fieldNumber = event.target.getAttribute('fieldNumber');\n let checker = function (a, b) {\n let sortOrderNumber = (sortOrder === 'asc') ? 1 : -1;\n\n if (typeof a[fieldNumber] === 'string') {\n let nameA = a[fieldNumber].toUpperCase(); // ignore upper and lowercase\n let nameB = b[fieldNumber].toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1 * sortOrderNumber;\n }\n if (nameA > nameB) {\n return 1* sortOrderNumber;\n }\n\n // names must be equal\n return 0;\n }\n return (a[fieldNumber] - b[fieldNumber]) * sortOrderNumber;\n };\n\n if (sortOrder === 'asc') {\n sortOrder = 'desc';\n } else {\n sortOrder = 'asc'\n }\n event.target.setAttribute('order', sortOrder);\n\n const first = this.dataset.matrix.shift();\n this.dataset.matrix.sort(checker);\n this.dataset.matrix.unshift(first);\n\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n });\n });\n\n\n const attachBtnEventListeners = () => {\n el.querySelectorAll('.btn').forEach(btn => {\n btn.addEventListener('click', (event) => {\n currentPage = parseInt(event.target.getAttribute('data-page'));\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n }, true);\n });\n };\n\n attachBtnEventListeners(datavizInstance, el, theme);\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const tableClass = `.${theme}-table-dataset`;\n document.querySelector(tableClass)\n .addEventListener('click', (e) => {\n const { nodeName, innerText } = e.target;\n if (nodeName === 'TD') {\n copyToClipboard(innerText, e);\n }\n });\n }\n };\n\n\n\nconst update = function(){\n // no special update handling\n this.render();\n };\n\nconst destroy= function(){};\n\nexport default { render, update, destroy };\n","export default {\n render: function(){\n let html = '';\n const artifacts = this.view._artifacts.spinner = {};\n\n // Build DOM element\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n this.el().innerHTML = html;\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts.spinner) {\n if (this.view._artifacts.spinner.interval) {\n clearInterval(this.view._artifacts.spinner.interval);\n }\n this.view._artifacts.spinner.radius = 0;\n try {\n delete this.view._artifacts.spinner;\n }\n catch (e) {\n this.view._artifacts.spinner = undefined;\n }\n }\n this.el().innerHTML = '';\n }\n};\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 30, left: 200 };\n let yMarginElement = 0;\n if(marginBetweenSteps){\n yMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if (countingMethod === \"relative\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth =\n (prevElemWidth * d[1]) / matrix[i][1]);\n percent = ((d[1] / matrix[i][1]) * 100).toFixed(decimals);\n }\n if (countingMethod === \"absolute\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth = (svgWidth * d[1]) / matrix[1][1]);\n percent = ((d[1] / matrix[1][1]) * 100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n \n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('x2', (d) => { return d.points[1].x + margin.left; })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('x2', polygons[polygons.length-1].points[2].x + margin.left)\n .attr('y2', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2)\n + (margin.left * 0.9);\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 16\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 12\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top;\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement - 5;\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 60, left: 200 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n const yMarginElement = elemHeight * 0.3;\n const shadowCut = (yMarginElement * 2.5);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = prevElemWidth * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = svgWidth * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[3].x,\n y: d.points[3].y\n },\n {\n x: d.points[2].x,\n y: d.points[2].y\n },\n {\n x: effect3d === 'left'\n ? d.points[2].x\n : d.points[2].x - shadowCut < svgWidth/2\n ? svgWidth/2 + 5\n : d.points[2].x - shadowCut,\n y: effect3d === 'left'\n ? d.points[2].y\n : d.points[2].y + (yMarginElement/1.5)\n },\n {\n x: effect3d === 'right'\n ? d.points[3].x\n : d.points[3].x + shadowCut > svgWidth/2\n ? svgWidth/2 - 5\n : d.points[3].x + shadowCut,\n y: effect3d === 'right'\n ? d.points[3].y\n : d.points[3].y + (yMarginElement/1.5)\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('x2', (d, i) => {\n if(i === 0){\n return d.points[1].x + margin.left;\n }\n return d.points[1].x + margin.left - shadowCut;\n })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('x2', polygons[polygons.length-1].points[2].x\n + margin.left - shadowCut )\n .attr('y2', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5 + (yMarginElement/4)\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2) + 130;\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 18\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 3\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n let xMarginElement = 0;\n if(marginBetweenSteps){\n xMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined'\n || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left - (xMarginElement/2))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/2))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight + (margin.bottom * 0.5) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', (d) => {\n if(d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) > svgHeight + margin.bottom - 40 + margin.top){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n return d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n const xMarginElement = elemWidth * 0.3;\n const shadowCut = (xMarginElement/1.5);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[0].x,\n y: d.points[0].y\n },\n {\n x: d.points[1].x,\n y: d.points[1].y\n },\n {\n x: effect3d === 'top'\n ? d.points[1].x\n : d.points[1].x - shadowCut,\n y: effect3d === 'top'\n ? d.points[1].y\n : d.points[1].y - xMarginElement < svgHeight/2\n ? svgHeight/2 + 5\n : d.points[1].y - xMarginElement\n },\n {\n x: effect3d === 'bottom'\n ? d.points[0].x\n : d.points[0].x - shadowCut,\n y: effect3d === 'bottom'\n ? d.points[0].y\n : d.points[0].y + xMarginElement > svgHeight/2\n ? svgHeight/2 - 5\n : d.points[0].y + xMarginElement\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left + (xMarginElement/4))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/4))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', svgHeight + (margin.bottom * 0.4) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', (d) => {\n if(d.points[2].y + (elemWidth/4) >\n svgHeight + margin.bottom - 40){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n if(d.points[2].y + (elemWidth/4) < d.points[1].y){\n return d.points[1].y + 20 + margin.top;\n }\n return d.points[2].y + (elemWidth/4) + 10 + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","/* eslint-env browser */\nimport c3 from 'c3';\nimport { each } from '../../utils/each';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class MetricCombo {\n render() {\n const {\n container,\n metricResults,\n title,\n showTitle,\n subtitle,\n tooltip,\n utils,\n } = this.config;\n\n const colors = ['#c3c4cc'];\n const columns = [];\n columns[0] = [];\n each(this.dataset.selectColumn(0), (c, i) => {\n let cell;\n if (i > 0) {\n cell = new Date(c);\n }\n columns[0][i] = cell;\n });\n columns[0][0] = 'x';\n\n each(this.data()[0], (c, i) => {\n if (i > 0) {\n columns.push(this.dataset.selectColumn(i));\n }\n });\n\n const prevResult = (metricResults && metricResults.previous && metricResults.previous.result)\n || 0;\n const currResult = (metricResults && metricResults.current && metricResults.current.result)\n || 0;\n const count = currResult - prevResult;\n const percentDifference = prevResult === 0 ? '-' : prettyNumber(Math.round((count / prevResult) * 100));\n let labelClass = 'keen-dataviz-metric-green';\n let iconClass = 'arrow-green';\n\n if (percentDifference < 0) {\n labelClass = 'keen-dataviz-metric-red';\n iconClass = 'arrow-red';\n }\n\n const containerTitle = (showTitle && title) ? `
${title}
` : '';\n const containerSubtitle = subtitle ? `
${subtitle}
` : '';\n const containerElement = document.querySelector(container);\n containerElement.innerHTML = `\n
\n
\n
\n ${containerTitle}\n ${containerSubtitle}\n
${percentDifference} %
\n
${prettyNumber(count)}
\n
\n
\n
\n
\n
\n
`;\n const chartRoot = containerElement.querySelector('.c3-chart');\n const chart = c3.generate({\n bindto: chartRoot,\n color: {\n pattern: colors,\n },\n title,\n legend: {\n show: false,\n },\n data: {\n x: 'x',\n columns,\n type: 'area-spline',\n selection: {\n draggable: false,\n enabled: true,\n multiple: true,\n },\n },\n point: {\n r: 0,\n focus: {\n expand: {\n r: 5,\n enabled: true,\n },\n },\n select: {\n r: 5,\n enabled: true,\n },\n },\n axis: {\n y: {\n show: false,\n },\n x: {\n show: false,\n },\n },\n grid: {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n },\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: -4,\n },\n tooltip,\n });\n\n if (utils && utils.clickToCopyToClipboard) {\n const currentCount = document.querySelector('.current-count').innerText;\n document.querySelector('.keen-dataviz-metric-combo')\n .addEventListener('click', e => copyToClipboard(currentCount, e));\n }\n }\n\n update() {\n this.destroy();\n this.render();\n }\n\n destroy() {\n const { container } = this.config;\n const containerElement = document.querySelector(container);\n const chartContainer = containerElement.querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport Rangeable from 'rangeable';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Heatmap {\n render() {\n const {\n colors,\n container,\n heatmap: { showSlider, simpleTooltip },\n } = this.config;\n const {\n matrix,\n meta,\n } = this.dataset;\n const margin = {\n top: 10,\n right: 10,\n bottom: 50,\n left: 50,\n };\n const baseWidth = 600;\n const baseHeight = 600;\n const heatmapContainer = d3.select(container);\n const containerWidth = parseInt(heatmapContainer.style('width'), 10) || baseWidth;\n const containerHeight = parseInt(heatmapContainer.style('height'), 10) || baseHeight;\n const chartContainer = this.el().querySelector('.c3-chart');\n const svgWidth = containerWidth - margin.right - margin.left;\n const svgHeight = containerHeight - margin.top - margin.bottom;\n\n const xLabel = new Set();\n const yLabel = new Set();\n\n const formatData = () => {\n const dateFormat = d3.timeFormat('%B %d');\n const timeFormat = d3.timeFormat('%H:%M');\n const arr = [];\n matrix.forEach((element) => {\n if (meta.type === 'heatmap') {\n if (typeof element[0][2] === 'number') {\n const obj = {\n x: element[0][0],\n y: element[0][1],\n value: element[0][2],\n };\n arr.push(obj);\n }\n } else {\n const timestamp = Date.parse(element[0]);\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(timestamp)) {\n const obj = {\n x: dateFormat(new Date(element[0])),\n y: timeFormat(new Date(element[0])),\n value: element[1],\n };\n arr.push(obj);\n }\n }\n });\n return arr;\n };\n\n const formattedData = formatData();\n\n formattedData.forEach((item) => {\n xLabel.add(item.x);\n yLabel.add(item.y);\n });\n\n const refValue = formattedData[0].value;\n const minRange = formattedData\n .reduce((min, curr) => (curr.value < min ? curr.value : min), refValue);\n const maxRange = formattedData\n .reduce((max, curr) => (curr.value > max ? curr.value : max), refValue);\n\n const getColor = () => {\n const defaultColor = '#00BBDE';\n const baseColor = colors[0];\n let rgb = d3.rgb(defaultColor);\n if (d3.color(baseColor)) {\n rgb = d3.rgb(baseColor);\n }\n return rgb;\n };\n\n const getColorAlpha = d3.scaleLinear()\n .domain([0, d3.max(formattedData, d => d.value)])\n .range([0, 1]);\n\n const convertRGBAtoRGB = (color, bg = [255, 255, 255]) => {\n const opacity = color[3];\n\n return [Math.floor(((1 - opacity) * bg[0]) + (opacity * color[0]) + 0.5),\n Math.floor(((1 - opacity) * bg[1]) + (opacity * color[1]) + 0.5),\n Math.floor(((1 - opacity) * bg[2]) + (opacity * color[2]) + 0.5)];\n };\n\n const getTileColor = (value) => {\n const alpha = getColorAlpha(value);\n const rgb = getColor();\n const solidColor = convertRGBAtoRGB([rgb.r, rgb.g, rgb.b, alpha]);\n const color = `rgb(${solidColor[0]}, ${solidColor[1]}, ${solidColor[2]})`;\n return color;\n };\n\n const svg = d3.select(chartContainer)\n .append('svg')\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${containerWidth} ${containerHeight}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr(\n 'transform',\n `translate(${margin.left},${margin.top})`,\n );\n\n if (showSlider) {\n // eslint-disable-next-line no-unused-vars\n const rangeableInput = d3.select(container)\n .append('input')\n .attr('type', 'range')\n .attr('class', 'keen-dataviz-slider');\n\n const handleSliderChange = (data) => {\n const rects = svg.selectAll('rect');\n const [min, max] = data;\n\n rects.each((d, i, nodes) => {\n d3.select(nodes[i])\n .style('visibility', () => ((d.value > max || d.value < min) ? 'hidden' : 'visible'));\n });\n };\n\n // eslint-disable-next-line no-unused-vars\n const rangeable = new Rangeable('.keen-dataviz-slider', {\n multiple: true,\n min: minRange,\n max: maxRange,\n value: [minRange, maxRange],\n onChange: data => handleSliderChange(data),\n });\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${getColor()};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${getColor()} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${getColor()};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement('style');\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector('script');\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const xLabelBase = 5;\n const yLabelBase = 10;\n\n const getAxisLabelRatio = (base, labelSize) => Math.floor(labelSize / base) + 1;\n const xAxis = d3.scaleBand()\n .range([0, svgWidth])\n .domain([...xLabel])\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .attr('transform', `translate(0, ${svgHeight})`)\n .call(d3.axisBottom(xAxis).tickSize(0))\n .selectAll('text')\n .attr('dy', '1em')\n .filter((d, i) => i % getAxisLabelRatio(xLabelBase, xLabel.size))\n .style('display', 'none');\n\n const yAxis = d3.scaleBand()\n .range([svgHeight, 0])\n .domain([...yLabel].sort())\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .call(d3.axisLeft(yAxis).tickSize(0))\n .selectAll('text')\n .filter((d, i) => i % getAxisLabelRatio(yLabelBase, yLabel.size))\n .style('display', 'none');\n\n const chartTooltip = d3.select(container)\n .append('div')\n .attr('class', 'keen-dataviz-tooltip')\n .style('opacity', 0)\n .style('background-color', 'white')\n .style('border', `2px solid ${getColor().toString()}`)\n .style('font-size', '14px')\n .style('padding', '2px 8px')\n .style('box-shadow', '2px 2px 4px rgba(0,0,0,0.25')\n .style('display', 'none')\n .style('position', 'fixed');\n\n const handleMouseOver = () => {\n d3.select(d3.event.target)\n .raise()\n .style('transition', 'transform 150ms ease-out')\n .style('outline', `1px solid ${getColor()}`)\n .style('transform', 'translate(0px, -4px)');\n\n chartTooltip\n .style('opacity', 1)\n .style('display', 'block');\n };\n\n const handleMouseMove = (d) => {\n let tooltipContent = `\n \n value:\n ${d.value}\n `;\n if (!simpleTooltip) {\n tooltipContent = `\n \n xAxis:\n ${d.x}\n \n \n yAxis:\n ${d.y}\n \n ${tooltipContent}\n `;\n }\n chartTooltip\n .html(`\n \n ${tooltipContent}\n
\n `)\n .style('left', `${d3.event.clientX + 10}px`)\n .style('top', `${d3.event.clientY + 10}px`);\n };\n\n const handleMouseLeave = () => {\n d3.select(d3.event.target)\n .style('outline', 'none')\n .style('transform', 'none');\n\n chartTooltip\n .style('opacity', 0)\n .style('display', 'none');\n };\n\n const handleClick = d => copyToClipboard(d.value);\n\n svg.selectAll()\n .data(formattedData, d => `${d.x}:${d.y}`)\n .enter()\n .append('rect')\n .attr('x', d => xAxis(d.x))\n .attr('y', d => yAxis(d.y))\n .attr('width', xAxis.bandwidth())\n .attr('height', yAxis.bandwidth())\n .style('fill', d => getTileColor(d.value))\n .style('cursor', 'pointer')\n .on('mouseover', handleMouseOver)\n .on('mousemove', handleMouseMove)\n .on('mouseleave', handleMouseLeave)\n .on('click', handleClick);\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = this.el().querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from \"d3\";\nimport Rangeable from \"rangeable\";\nimport { prettyNumber } from \"../../utils/pretty-number\";\nimport copyToClipboard from \"../../utils/copy-to-clipboard\";\n\nexport default class Choropleth {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n utils,\n title,\n choropleth: {\n map,\n borders: { show, size, color },\n showSlider\n }\n } = this.config;\n const opts = this.config;\n const choroplethContainer = d3.select(container);\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n const width = Number(choroplethContainer.style(\"width\").slice(0, -2));\n const height = Number(choroplethContainer.style(\"height\").slice(0, -2));\n let heightChanges = 0;\n if (title) heightChanges += 31;\n if (showSlider) heightChanges += 20;\n const chart = chartContainer\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height - heightChanges);\n\n const onlyValues = matrix.slice(1).map(el => el[1]);\n let minVal = d3.min(onlyValues);\n const maxVal = d3.max(onlyValues);\n if(minVal === maxVal) minVal = 0;\n const lightColor = d3.hsl(colors[0]).brighter(1);\n lightColor.l = 0.95;\n const darkColor = colors[0];\n const ramp = d3\n .scaleLinear()\n .domain([minVal === undefined ? 0 : minVal, maxVal === undefined ? 0 : maxVal])\n .range([lightColor, darkColor]);\n\n d3.json(\n `https://cdn.jsdelivr.net/npm/keen-dataviz-maps@1.0.0/maps/${map}.json`\n ).then(data => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 5])\n .translateExtent([[0, 0], [width, height - 50]])\n .on(\"zoom\", zoomed);\n\n let projection;\n switch (map) {\n case \"world\":\n projection = d3.geoMercator().fitSize([width, height - 50], data);\n break;\n case \"us\":\n projection = d3\n .geoAlbersUsa()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n\n default:\n projection = d3\n .geoMercator()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n }\n\n const path = d3.geoPath().projection(projection);\n\n const usData = data.features.map(el => {\n const theOne = matrix.filter(d => d[0] === el.properties.name);\n if (theOne[0])\n return {\n ...el,\n properties: { ...el.properties, result: theOne[0][1] }\n };\n return {\n ...el,\n properties: { ...el.properties, result: 0 }\n };\n });\n\n if (showSlider) {\n const handleSliderChange = data => {\n const el = chart.selectAll(`.${elementName}`);\n const [min, max] = data;\n\n el.each((d, i, nodes) => {\n d3.select(nodes[i]).style(\"visibility\", () =>\n d.properties.result > max || d.properties.result < min\n ? \"hidden\"\n : \"visible\"\n );\n });\n };\n\n chartContainer\n .style(\"display\", \"flex\")\n .style(\"flex-direction\", \"column\")\n .style(\"justify-content\", \"center\");\n\n const rangeContainer = chartContainer\n .append(\"div\")\n .style(\"width\", \"95%\")\n .style(\"margin\", \"auto\");\n rangeContainer.append(\"input\").attr(\"id\", \"rangeSlider\");\n\n const rangeable = new Rangeable(\"#rangeSlider\", {\n type: \"double\",\n tooltips: true,\n min: 0,\n max: maxVal,\n onChange: data => handleSliderChange(data)\n });\n\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${colors[0]};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${colors[0]} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${colors[0]};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement(\"style\");\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector(\"script\");\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const elementName = map === \"world\" ? \"country\" : \"state\";\n\n chart\n .selectAll(\"path\")\n .data(usData)\n .enter()\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"class\", elementName)\n .attr(\n \"id\",\n d =>\n `${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .attr(\"cursor\", \"pointer\")\n .on(\"mouseover\", handleMouseOver)\n .on(\"mousemove\", handleMouseMove)\n .on(\"mouseout\", handleMouseOut);\n\n //borders\n if (show) {\n chart\n .selectAll(`.${elementName}`)\n .style(\"stroke\", color)\n .style(\"stroke-width\", size);\n }\n\n //tooltip\n const tooltip = d3\n .select(\".c3-chart\")\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"c3-tooltip-container\")\n .style(\"display\", \"none\")\n .style(\"position\", \"fixed\");\n\n //hover handling\n function handleMouseOver(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(1.2 * maxVal))\n .style(\"stroke-width\", 1.5 * size);\n\n tooltip.style(\"opacity\", 1).style(\"display\", \"block\");\n }\n\n function handleMouseMove(d) {\n let result = d.properties.result;\n if (\n (typeof opts[\"prettyNumber\"] === \"undefined\" ||\n opts[\"prettyNumber\"] === true) &&\n !isNaN(parseInt(d.properties.result))\n ) {\n result = prettyNumber(d.properties.result);\n }\n tooltip\n .html(\n `\n \n \n \n \n \n \n \n
${d.properties.name}
${result}
\n `\n )\n .style(\"left\", `${d3.event.clientX + 10}px`)\n .style(\"top\", `${d3.event.clientY + 10}px`);\n }\n function handleMouseOut(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .style(\"stroke-width\", size);\n\n tooltip.style(\"opacity\", 0).style(\"display\", \"none\");\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll(`.${elementName}`);\n\n label.on(\"click\", handleClickToCopy);\n\n function handleClickToCopy(data) {\n const {\n properties: { result }\n } = data;\n copyToClipboard(result, d3.event);\n }\n }\n function zoomed() {\n chart\n .selectAll(`.${elementName}`)\n .attr(\"transform\", d3.event.transform);\n }\n chart.call(zoom);\n chart.call(zoom).on(\"mousedown.zoom\", null);\n });\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n chartContainer.remove();\n }\n}\n","import copyToClipboard from './copy-to-clipboard';\n\nfunction removeClassWithTimeOut(element, className = 'copied', ms = 1000) {\n setTimeout(() => {\n element.classList.remove(className);\n }, ms);\n}\n\nfunction handleCopyToClipboard(event) {\n const { target, target: { nodeName } } = event;\n\n let value;\n if (nodeName === 'DD') {\n value = target.innerText;\n if (!target.classList.contains('copied')) {\n target.classList.add('copied');\n removeClassWithTimeOut(target);\n }\n }\n if (nodeName === 'DT') {\n value = target.nextSibling.innerText;\n if (!target.nextSibling.classList.contains('copied')) {\n target.nextSibling.classList.add('copied');\n removeClassWithTimeOut(target.nextSibling);\n }\n }\n\n copyToClipboard(value);\n}\n\nexport default function renderExecutionMetadata({\n element,\n data,\n} = {}) {\n const dataList = document.createElement('dl');\n dataList.classList = 'keen-dataviz-execution-meta';\n\n if (Object.keys(data).length) {\n Object.keys(data).forEach((item) => {\n const dt = document.createElement('dt');\n dt.innerText = item.replace(/_/g, ' ');\n dt.addEventListener('click', e => handleCopyToClipboard(e));\n\n const dd = document.createElement('dd');\n dd.innerText = data[item];\n dd.addEventListener('click', e => handleCopyToClipboard(e));\n\n dataList.append(dt);\n dataList.append(dd);\n });\n } else {\n dataList.innerText = 'No execution metadata available';\n }\n\n element.append(dataList);\n}\n","import autocollector from './autocollector';\nimport modern from './modern';\nimport dracula from './dracula';\n\nexport default {\n autocollector,\n modern,\n dracula,\n};","const palette = {\n colors: [\n '#5E77FF',\n '#9C60FE',\n '#F162FE',\n '#FD65B7',\n '#FD6768',\n '#FDB86A',\n '#F2FC6C',\n '#A5FC6E',\n '#71FB85',\n '#73FBD0',\n '#76DDFA',\n '#76f4fa',\n '#bb76fa',\n '#fa76bf'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#45B2E8',\n '#D9540D',\n '#2CAB72',\n '#2C4BAB',\n '#EDDD02',\n '#E84545',\n '#E845CE',\n '#5FCEC9',\n '#E89F45',\n '#28E43F',\n '#B765C0',\n '#458AE8',\n '#AB2C2C',\n '#AB2C75',\n '#27E5FF',\n '#7168F2',\n '#FF932B',\n '#855D00',\n '#ACE845',\n '#1C91B4'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#8be9fd',\n '#50fa7b',\n '#ffb86c',\n '#ff79c6',\n '#bd93f9',\n '#ff5555',\n '#f1fa8c',\n ]\n};\n\nexport default palette;","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n return constructor.resolve(callback()).then(function() {\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","import promiseFinally from './finally';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!arr || typeof arr.length === 'undefined')\n throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(values) {\n return new Promise(function(resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n (typeof setImmediate === 'function' &&\n function(fn) {\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","import Promise from './index';\nimport promiseFinally from './finally';\n\n/** @suppress {undefinedVars} */\nvar globalNS = (function() {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n})();\n\nif (!('Promise' in globalNS)) {\n globalNS['Promise'] = Promise;\n} else if (!globalNS.Promise.prototype['finally']) {\n globalNS.Promise.prototype['finally'] = promiseFinally;\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./lib/utils/each.js","webpack:///./lib/utils/copy-to-clipboard.js","webpack:///external \"d3\"","webpack:///./lib/utils/pretty-number.js","webpack:///./lib/utils/escape-html.js","webpack:///./lib/utils/extend.js","webpack:///./lib/utils/svg-text-wrap.js","webpack:///./lib/dataset/modifiers/append.js","webpack:///./lib/dataset/utils/create-null-list.js","webpack:///external \"c3\"","webpack:///./lib/utils/assert-date-string.js","webpack:///./lib/dataset/index.js","webpack:///./lib/dataset/utils/analyses.js","webpack:///./lib/dataset/utils/flatten.js","webpack:///./lib/utils/strip-html-tags.js","webpack:///./lib/utils/extend-deep.js","webpack:///./lib/utils/render-download-btn.js","webpack:///./lib/utils/export-svg.js","webpack:///./lib/utils/export-data.js","webpack:///./node_modules/rangeable/dist/rangeable.min.js","webpack:///./lib/server.js","webpack:///./lib/index.js","webpack:///./lib/dataset/modifiers/delete.js","webpack:///./lib/dataset/modifiers/filter.js","webpack:///./lib/dataset/modifiers/insert.js","webpack:///./lib/dataset/modifiers/select.js","webpack:///./lib/dataset/modifiers/sort.js","webpack:///./lib/dataset/modifiers/update.js","webpack:///./lib/dataset/utils/parsers.js","webpack:///./lib/dataset/utils/object.js","webpack:///./lib/dataset/utils/create-extraction-keys.js","webpack:///./lib/data.js","webpack:///./lib/libraries/index.js","webpack:///./lib/libraries/c3/extensions/default-date-format.js","webpack:///./lib/libraries/c3/extensions/paginating-legend.js","webpack:///./lib/libraries/c3/extensions/tooltip-contents.js","webpack:///./lib/dataset/utils/calculate-range.js","webpack:///./lib/dataset/utils/calculate-percents.js","webpack:///./lib/libraries/default/message.js","webpack:///./lib/utils/download-results.js","webpack:///./node_modules/dom-to-image/src/dom-to-image.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./lib/libraries/default/metric.js","webpack:///./lib/libraries/default/table.js","webpack:///./lib/libraries/default/spinner.js","webpack:///./lib/libraries/default/funnel.js","webpack:///./lib/libraries/default/funnel-3d.js","webpack:///./lib/libraries/default/horizontal-funnel.js","webpack:///./lib/libraries/default/horizontal-funnel-3d.js","webpack:///./lib/libraries/default/metric-combo.js","webpack:///./lib/libraries/default/heatmap.js","webpack:///./lib/libraries/default/choropleth.js","webpack:///./lib/utils/render-execution-metadata.js","webpack:///./lib/palettes/index.js","webpack:///./lib/palettes/autocollector.js","webpack:///./lib/palettes/modern.js","webpack:///./lib/palettes/dracula.js","webpack:///./node_modules/promise-polyfill/src/finally.js","webpack:///./node_modules/promise-polyfill/src/index.js","webpack:///./node_modules/promise-polyfill/src/polyfill.js"],"names":["each","o","cb","s","n","Array","length","call","hasOwnProperty","copyToClipboard","stickTooltip","event","tooltip","style","opacity","top","pageY","left","pageX","value","placeholder","document","createElement","body","appendChild","select","execCommand","removeChild","notification","padding","backgroundColor","fontSize","position","zIndex","transition","innerText","addEventListener","e","setTimeout","prettyNumber","input","Number","sciNo","toPrecision","prefix","suffixes","String","Math","abs","recurse","iteration","split","rhs","charAt","numNumerals","escapeHtml","matchHtmlRegExp","string","str","match","exec","escape","html","index","lastIndex","charCodeAt","substring","extend","target","i","arguments","prop","textWrap","d3","text","width","words","reverse","word","line","lineNumber","lineHeight","x","attr","y","dy","tspan","append","pop","push","join","node","getComputedTextLength","appendColumn","appendRow","self","args","prototype","slice","label","undefined","matrix","row","cell","concat","newRow","col","selectColumn","len","list","testObject","testString","getTime","isNaN","ISO_8601","test","del","filter","insert","sort","update","Dataset","config","meta","type","data","arr","set","coords","Error","colIndex","indexOf","rowIndex","colResult","rowResult","selectRow","analyses","parser","average","start","end","sum","avg","val","parseFloat","maximum","nums","max","apply","minimum","min","getColumnAverage","getRowAverage","getColumnSum","getRowSum","getColumnMaximum","getRowMaximum","getColumnMinimum","getRowMinimum","getColumnLabel","getRowIndex","flatten","ob","toReturn","flatObject","stripHtmlTags","inputString","replace","extendDeep","key","renderDownloadButton","element","btnClass","isBtnRendered","parentNode","children","find","child","className","button","insertBefore","nextSibling","exportImage","obj","quality","bgcolor","domtoimage","toBlob","then","blob","exportData","generateCsvContent","csvContent","forEach","j","encodeURIComponent","supportedFormats","format","toLowerCase","includes","fileName","fileFormat","content","JSON","stringify","htmlElement","setAttribute","click","module","exports","default","Dataviz","options","c3","datavizInstance","defaultOptions","showDeprecationWarnings","showLoadingSpinner","container","containerElement","title","showTitle","subtitle","notes","theme","colors","colorMapping","ui","executionMetadata","utils","clickToCopyToClipboard","indexBy","labels","labelMapping","labelMappingRegExp","errorMapping","showErrorMessages","library","sortGroups","sortIntervals","results","stacked","dateFormat","legend","show","alignment","textMaxLength","pagination","offset","limit","pointer","axis","color","size","point","focus","expand","enabled","r","sensitivity","horizontal","order","selection","draggable","multiple","onselected","d","selectedItems","view","_artifacts","selected","reduce","prev","curr","grid","partialIntervalIndicator","timezone","table","schema","renderOnVisible","funnel","lines","resultValues","percents","countingMethod","decimals","marginBetweenElements","hover","effect3d","minimalSize","react","range","sparkline","choropleth","map","borders","showSlider","heatmap","palette","palettes","console","log","convertChartTypes","stacking","el","pattern","dataset","_prepared","_rendered","visuals","prepare","render","firstVisibilityState","visibilityState","callback","bind","libraries","window","register","name","actions","method","nodeName","querySelector","visual","attributes","fn","chartOptions","destroy","innerHTML","domReady","height","num","setLabels","updateColumn","updateRow","mapLabels","mapLabelsExec","valueAfterMatching","regExpAndLabel","regExpObj","labelMappingDimension","message","loader","spinner","firstResult","query","interval","timeframe","isArray","timeframes","resultItem","foundDifferent","timeframeItem","resultTimeframe","msg","error","deleteColumn","result","event_collection","analysis_type","ds2","Object","keys","returnValue","renderAsPromise","Promise","resolve","reject","customCallback","onrendered","shouldRenderExecutionMetadata","execution_metadata","shouldRenderDownloadBtn","buttons","download","mappedMsg","buildDomWrapper","IntersectionObserver","chartVisibleCallback","events","observer","isIntersecting","observe","hidden","visibilityChange","msHidden","webkitHidden","handleVisibilityChange","load","once","sortColumns","sortRows","bool","chartType","parseRawData","parseRequest","initialize","version","pkg","chart100percentWide","rangeChart","verticalAlignment","horizontalAlignment","align","legendItemsAlign","areachart","barchart","columnchart","linechart","piechart","testDom","readyState","DOMContentLoaded","removeEventListener","deleteRow","q","splice","filterColumns","filterRows","clone","selectedColumn","ri","insertColumn","insertRow","comp","head","cols","analysesUtilMethods","a","b","op","lib","parsers","parseMetric","res","parseInterval","record","parseGroupedMetric","parseGroupedInterval","group","parseDoubleGroupedMetric","rowLabel","parseDoubleGroupedInterval","parseFunnel","steps","parseList","parseExtraction","datasetExtraction","datasetKeys","names","from","tableConfig","resultKeys","keyName","nameI","columns","iNames","parseHeatmapAxis","heatmapDataset","objKeys","metric","extraction","valueAtDeepKey","is","createExtractionKeys","Set","add","parseResponse","response","parserArgs","selectedParser","metadata","filters","group_by","display_name","getDefaultTitle","visualization","chart_type","getDefaultType","Date","analysis","toUpperCase","timer","bindResizeListener","clearTimeout","delay","chart","c3Chart","parentWidth","offsetWidth","nextSiblingWidth","prevSiblingWidth","previousSibling","resize","defineC3","types","Funnel","Funnel3d","HorizontalFunnel","HorizontalFunnel3d","MetricCombo","Heatmap","Choropleth","c3Types","getPaddings","paddingName","parseInt","getComputedStyle","getDefaultOptions","ENFORCED_OPTIONS","bindto","renderingElement","offsetHeight","titleElement","subtitleElement","notesElement","DEFAULT_OPTIONS","extendedConfig","sumArray","oldMatrix","tick","clearOnRender","datasetMeta","spliceFrom","intervalTypes","removeLegend","rotated","culling","groups","categories","legendElement","remove","chartTypesWithPartialIntervalIndicator","partialResultsRegion","class","regions","contents","c3TooltipContents","ratio","id","valueFormatted","c3CustomTooltipFiltering","toFixed","c3options","c3CustomDataMapping","hide","generate","c3PaginatingLegend","onLegendRendered","onPaginated","flush","scope","onresize","attachEvent","startDate","endDate","timeDiff","months","ms","date","getMonth","getFullYear","getDate","domNode","legendConfig","round","total","columnsSorted","dataColumnsSorted","columnData","item","column","paginateHorizontalLeftElement","legendItemsElement","paginateVerticalElement","paginateHorizontalRightElement","paginateData","renderLegendComponent","renderPaginationComponent","labelShortened","legendItem","chartPartId","legendItemColorSample","prepend","tooltipElement","revert","isHidden","toggle","arrowUp","arrowDown","paginate","direction","diff","floor","clearSelectedText","empty","getSelection","removeAllRanges","defaultTitleFormat","defaultValueFormat","nameFormat","tooltip_format_name","titleFormat","tooltip_format_title","valueFormat","tooltip_format_value","CLASS","levelColor","tooltipName","calculateRange","newValues","calculateSumForPercents","calculatePercents","outer","inner","titleContainer","subtitleContainer","notesContainer","downloadResults","preventDefault","currentTarget","previousElementSibling","formatExtractionData","formattedResult","itemProp","acc","opts","prevValue","suffix","formattedNum","flexDifferenceStyle","resultDifference","differenceStyle","smallerValue","previousResults","isExtraction","comparedProp","resultClassName","previousResultsClassName","currentPage","_generateTableRows","defaultConfig","page","arrows","customConfig","datasetPaginated","pages","ceil","columnsArray","colNamesToMap","mapValues","mapDates","entries","rowColValue","rowColValueEscaped","pageNumber","prevPage","nextPage","_generateTableHeader","fieldNumber","columnNames","colName","colNameEscaped","isEmpty","querySelectorAll","sortOrder","getAttribute","checker","sortOrderNumber","nameA","nameB","first","shift","unshift","attachBtnEventListeners","btn","tableClass","artifacts","clearInterval","radius","marginBetweenSteps","margin","right","bottom","yMarginElement","funnelContainer","chartContainer","svgWidth","svgHeight","elemHeight","prevElemWidth","percent","minimalSizeStep","polygons","newPoints","points","selectAll","enter","p","handleMouseOver","polygonsHover","labelHover","thisLabel","handleMouseOut","on","handleClickToCopy","shadowCut","polygonsShadows","polygons3d","rgb","darker","xMarginElement","elemWidth","prevElemHeight","metricResults","c","prevResult","previous","currResult","current","count","percentDifference","labelClass","iconClass","containerTitle","containerSubtitle","chartRoot","currentCount","simpleTooltip","baseWidth","baseHeight","heatmapContainer","containerWidth","containerHeight","xLabel","yLabel","formatData","timeFormat","timestamp","parse","formattedData","refValue","minRange","maxRange","getColor","defaultColor","baseColor","getColorAlpha","scaleLinear","domain","convertRGBAtoRGB","bg","getTileColor","alpha","solidColor","g","svg","rangeableInput","handleSliderChange","rects","nodes","rangeable","Rangeable","onChange","containerToString","customStyle","scriptRef","xLabelBase","yLabelBase","getAxisLabelRatio","base","labelSize","xAxis","scaleBand","axisBottom","tickSize","yAxis","axisLeft","chartTooltip","toString","raise","handleMouseMove","tooltipContent","clientX","clientY","handleMouseLeave","handleClick","bandwidth","choroplethContainer","heightChanges","onlyValues","minVal","maxVal","lightColor","hsl","brighter","l","darkColor","ramp","json","zoom","scaleExtent","translateExtent","zoomed","projection","geoMercator","fitSize","geoAlbersUsa","scale","path","geoPath","usData","features","theOne","properties","elementName","rangeContainer","tooltips","transform","renderExecutionMetadata","removeClassWithTimeOut","classList","handleCopyToClipboard","contains","dataList","dt","dd","autocollector","modern","dracula"],"mappings":"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,MAAMyE,MAAR,EAAgBxE,UAAhB,EAAX;AACD;;AAED,MAAIwE,WAAW,KAAf,EAAsB;AACpB,8BAAW,EAAEzE,MAAMyE,MAAR,EAAgBxE,UAAhB,EAAX;AACD;AACF,C;;;;;;ACvCD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA6B;AACrC;AACA;AACA,QAAQ,EAA+B;;;AAGvC;AACA,eAAe,KAAK;AACpB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oEAAoE,gBAAgB;;AAEpF;AACA;AACA,8EAA8E;AAC9E;;AAEA;;AAEA;AACA;AACA,wCAAwC,QAAQ;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,2CAA2C;AAC3C,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,YAAY;AAC3C;;AAEA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,sCAAsC;AACtC;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAq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,SAhBM,EAiBN,SAjBM,EAkBN,SAlBM,EAmBN,SAnBM,EAoBN,SApBM;AADM,CAAhB;;kBAyBeyE,O;;;;;;;;;;;;ACzBf,IAAMA,UAAU;AACdzE,UAAQ,CACN,SADM,EAEN,SAFM,EAGN,SAHM,EAIN,SAJM,EAKN,SALM,EAMN,SANM,EAON,SAPM;AADM,CAAhB;;kBAYeyE,O;;;;;;;;;;ACZf;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEe,kEAAkB,EAAC;;;ACnBK;;AAEvC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,aAAa,SAAS;AACtB;AACA,aAAa,kBAAkB;AAC/B;AACA,aAAa,kBAAkB;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B,WAAc;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEe,+CAAO,EAAC;;;AC/OO;AACS;;AAEvC,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,wBAAwB,GAAO;AAC/B,CAAC;AACD,0CAA0C,WAAc;AACxD","file":"node/keen-dataviz.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"d3\"), require(\"c3\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"d3\", \"c3\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"d3\"), require(\"c3\")) : factory(root[\"d3\"], root[\"c3\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(global, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__9__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 20);\n","export function each(o, cb, s) {\n var n;\n if (!o) {\n return 0;\n }\n s = !s ? o : s;\n if (o instanceof Array) {\n // Indexed arrays, needed for Safari\n for (n = 0; n < o.length; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n // Hashtables\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false){\n return 0;\n }\n }\n }\n }\n return 1;\n}\n","function stickTooltip(event, tooltip) {\n tooltip.style.opacity = 0;\n tooltip.style.top = `${event.pageY}px`;\n tooltip.style.left = `${event.pageX + 10}px`;\n}\n\nexport default function copyToClipboard(value, event) {\n const placeholder = document.createElement('input');\n placeholder.value = value;\n document.body.appendChild(placeholder);\n placeholder.select();\n document.execCommand('copy');\n document.body.removeChild(placeholder);\n\n if (event) {\n const notification = document.createElement('div');\n notification.style.padding = '5px 10px';\n notification.style.backgroundColor = '#ffffff';\n notification.style.fontSize = '12px';\n notification.style.position = 'absolute';\n notification.style.top = `${event.pageY}px`;\n notification.style.left = `${event.pageX + 10}px`;\n notification.style.zIndex = '999';\n notification.style.opacity = 1;\n notification.style.transition = 'opacity 1s ease';\n notification.innerText = 'copied!';\n\n document.body.appendChild(notification);\n document.addEventListener('mousemove', e => stickTooltip(e, notification));\n\n setTimeout(() => {\n notification.style.opacity = 1;\n document.body.removeChild(notification);\n }, 1000);\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","export function prettyNumber(input) {\n // If it has 3 or fewer sig figs already, just return the number.\n var input = Number(input),\n sciNo = input.toPrecision(3),\n prefix = '',\n suffixes = ['', 'k', 'M', 'B', 'T'];\n\n if (Number(sciNo) == input && String(input).length <= 4) {\n return String(input);\n }\n\n if (Math.abs(input) >= 1000000000000000) {\n return sciNo;\n }\n\n if (input >= 1 || input <= -1) {\n if (input < 0){\n //Pull off the negative side and stash that.\n input = -input;\n prefix = '-';\n }\n return prefix + recurse(input, 0);\n }\n else {\n return input.toPrecision(3);\n }\n\n function recurse(input, iteration) {\n var input = String(input);\n var split = input.split('.');\n // If there's a dot\n if (split.length > 1) {\n // Keep the left hand side only\n input = split[0];\n var rhs = split[1];\n // If the left-hand side is too short, pad until it has 3 digits\n if (input.length == 2 && rhs.length > 0) {\n // Pad with right-hand side if possible\n if (rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n else if (input.length == 1 && rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n // Pad with right-hand side if possible\n if (rhs.length > 1) {\n input += rhs.charAt(1);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n }\n var numNumerals = input.length;\n // if it has a period, then numNumerals is 1 smaller than the string length:\n if (input.split('.').length > 1) {\n numNumerals--;\n }\n if (numNumerals <= 3) {\n return String(input) + suffixes[iteration];\n }\n else {\n return recurse(Number(input) / 1000, iteration + 1);\n }\n }\n}\n","const matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nexport function escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n for (var prop in arguments[i]){\n target[prop] = arguments[i][prop];\n }\n }\n return target;\n}\n","import * as d3 from 'd3';\n\nexport function textWrap(text, width) {\n text.each(function () {\n let text = d3.select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.1, // ems\n x = text.attr(\"x\"),\n y = text.attr(\"y\"),\n dy = 0, //parseFloat(text.attr(\"dy\")),\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\");\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n .text(word);\n }\n }\n });\n}\n","import createNullList from '../utils/create-null-list';\nimport { each } from '../../utils/each';\n\nexport function appendColumn(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n self.matrix[0].push(label);\n each(self.matrix, function(row, i) {\n let cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].push(cell);\n }\n });\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat(createNullList(self.matrix.length - 1 - input.length));\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String(self.matrix.length));\n }\n });\n }\n\n self.matrix[0].push(label);\n each(input, function(value, i){\n self.matrix[i+1][self.matrix[0].length-1] = value;\n });\n\n }\n\n return self;\n}\n\nexport function appendRow(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n const newRow = [];\n\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i){\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.push(newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length));\n }\n });\n }\n\n self.matrix.push(newRow.concat(input));\n }\n\n return self;\n}\n","export default function (len) {\n const list = [];\n for (let i = 0; i < len; i++) {\n list.push(null);\n }\n return list;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__9__;","export function testObject(input) {\n if (input !== null && typeof input.getTime === 'function' && !isNaN(input.getTime())) {\n return true;\n }\n return false;\n}\n\nexport function testString(input) {\n const ISO_8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n return ISO_8601.test(input);\n}\n\nexport default function (input) {\n if (typeof input === 'object') {\n return testObject(input);\n } else if (typeof input === 'string') {\n return testString(input);\n }\n return false;\n}\n","// Modifiers\nimport * as append from './modifiers/append';\nimport * as del from './modifiers/delete';\nimport * as filter from './modifiers/filter';\nimport * as insert from './modifiers/insert';\nimport * as select from './modifiers/select';\nimport * as sort from './modifiers/sort';\nimport * as update from './modifiers/update';\n\n// Utils\nimport analyses from './utils/analyses';\nimport { extend } from '../utils/extend';\nimport parsers from './utils/parsers';\n\nexport const Dataset = function (config = {}) {\n if (this instanceof Dataset === false) {\n return new Dataset(config);\n }\n\n this.matrix = [\n ['Index']\n ];\n this.meta = {\n type: undefined\n };\n this.config = config;\n}\n\nDataset.prototype.data = function (arr) {\n if (!arguments.length) return this.matrix;\n this.matrix = (arr instanceof Array ? arr : null);\n return this;\n};\n\nDataset.prototype.set = function (coords, value) {\n if (arguments.length < 2 || coords.length < 2) {\n throw Error('Incorrect arguments provided for #set method');\n }\n\n var colIndex = 'number' === typeof coords[0] ? coords[0] : this.matrix[0].indexOf(coords[0]),\n rowIndex = 'number' === typeof coords[1] ? coords[1] : select.selectColumn.call(this, 0).indexOf(coords[1]);\n\n var colResult = select.selectColumn.call(this, coords[0]),\n rowResult = select.selectRow.call(this, coords[1]);\n\n // Column doesn't exist, create and reset colIndex\n if (colResult.length < 1) {\n append.appendColumn.call(this, String(coords[0]));\n colIndex = this.matrix[0].length - 1;\n }\n\n // Row doesn't exist, create and reset rowIndex\n if (rowResult.length < 1) {\n append.appendRow.call(this, String(coords[1]));\n rowIndex = this.matrix.length - 1;\n }\n\n // Set provided value\n this.matrix[ rowIndex ][ colIndex ] = value;\n return this;\n};\n\nDataset.prototype.type = function(str){\n if (!arguments.length) return this.meta['type'];\n this.meta['type'] = (str ? String(str) : undefined);\n return this;\n};\n\nextend(Dataset.prototype, append);\nextend(Dataset.prototype, del);\nextend(Dataset.prototype, filter);\nextend(Dataset.prototype, insert);\nextend(Dataset.prototype, select);\nextend(Dataset.prototype, sort);\nextend(Dataset.prototype, update);\nextend(Dataset.prototype, analyses);\nDataset.parser = parsers(Dataset);\n\nexport default Dataset;\n","import { each } from '../../utils/each';\nimport { extend } from '../../utils/extend';\n\nfunction average(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0,\n avg = null;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum / set.length;\n}\n\nfunction maximum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.max.apply(Math, nums);\n}\n\nfunction minimum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.min.apply(Math, nums);\n}\n\nfunction sum(arr, start, end){\n // Copy set with given range\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum;\n}\n\nconst getColumnAverage = function (arr) {\n return average(arr, 1);\n};\nconst getRowAverage = getColumnAverage;\n\nconst getColumnSum = function (arr) {\n return sum(arr, 1);\n};\nconst getRowSum = getColumnSum;\n\nconst getColumnMaximum = function (arr) {\n return maximum(arr, 1);\n};\nconst getRowMaximum = getColumnMaximum;\n\nconst getColumnMinimum = function (arr) {\n return minimum(arr, 1);\n};\nconst getRowMinimum = getColumnMinimum;\n\nconst getColumnLabel = function (arr) {\n return arr[0];\n};\nconst getRowIndex = getColumnLabel;\n\nexport default {\n average,\n maximum,\n minimum,\n sum,\n getColumnAverage,\n getRowAverage,\n getColumnSum,\n getRowSum,\n getColumnMaximum,\n getRowMaximum,\n getColumnMinimum,\n getRowMinimum,\n getColumnLabel,\n getRowIndex,\n};\n","// Pure awesomeness by Will Rayner (penguinboy)\n// https://gist.github.com/penguinboy/762197\n\nexport function flatten(ob){\n var toReturn = {};\n for (var i in ob) {\n if (!ob.hasOwnProperty(i)) continue;\n if ((typeof ob[i]) == 'object' && ob[i] !== null) {\n var flatObject = flatten(ob[i]);\n for (var x in flatObject) {\n if (!flatObject.hasOwnProperty(x)) continue;\n toReturn[i + '.' + x] = flatObject[x];\n }\n } else {\n toReturn[i] = ob[i];\n }\n }\n return toReturn;\n};\n","/**\n * Strip html tags from string\n *\n * @param {string} string The string to strip\n * @return {string}\n * @public\n */\n\nexport function stripHtmlTags(inputString) {\n if (typeof inputString !== 'string') {\n return inputString;\n }\n return inputString.replace(/(<([^>]+)>)/ig, '');\n}\n","import { each } from './each';\n\nexport function extendDeep(target) {\n for (var i = 1; i < arguments.length; i++) {\n each(arguments[i], function(prop, key){\n if (( typeof target[key] !== 'undefined' && typeof prop !== 'undefined' ) &&\n ( typeof target[key] === 'object' && typeof prop === 'object' ) &&\n ( target[key] !== null && prop !== null )) {\n extendDeep(target[key], prop);\n }\n else {\n target[key] = prop;\n }\n });\n }\n return target;\n}\n","import downloadResults from './download-results';\n\nexport default function renderDownloadButton({\n element,\n label = 'Download',\n type = 'json',\n data,\n} = {}) {\n const btnClass = 'keen-dataviz-button';\n const isBtnRendered = [...element.parentNode.children]\n .find(child => child.className === btnClass);\n if (isBtnRendered) return;\n\n const button = document.createElement('button');\n button.innerText = label;\n button.className = btnClass;\n button.addEventListener('click', event => downloadResults({ event, type, data}));\n element.parentNode.insertBefore(button, element.nextSibling);\n};","import domtoimage from 'dom-to-image';\nimport { saveAs } from 'file-saver';\n\nexport default function exportImage(obj) {\n const { node, quality, bgcolor } = obj;\n if (quality) {\n if (quality < 0 || quality > 1) throw Error('Please provide image quality between 0 and 1');\n domtoimage.toBlob(node, { quality, bgcolor })\n .then((blob) => {\n saveAs(blob, 'chart.jpeg');\n });\n }\n\n if (!quality) {\n domtoimage.toBlob(node)\n .then((blob) => {\n saveAs(blob, 'chart.png');\n });\n }\n}\n","function generateCsvContent(data) {\n let csvContent = '';\n\n data.forEach((row, i) => {\n row.forEach((cell, j) => {\n csvContent += String(cell).replace(/,/g, '');\n if (row.length > j + 1) {\n csvContent += ',';\n }\n });\n if (data.length > i + 1) {\n csvContent += '\\n';\n }\n });\n return `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n}\n\nexport default function exportData(obj) {\n const { type, data } = obj;\n const supportedFormats = ['json', 'csv'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = supportedFormats[0];\n let content = '';\n\n if (format === 'json') {\n content = `data:text/json;charset=utf-8, ${encodeURIComponent(JSON.stringify(data))}`;\n }\n\n if (format === 'csv') {\n content = generateCsvContent(data);\n fileFormat = format;\n }\n\n const htmlElement = document.createElement('a');\n htmlElement.setAttribute('href', content);\n htmlElement.setAttribute('download', `${fileName}.${fileFormat}`);\n document.body.appendChild(htmlElement);\n htmlElement.click();\n document.body.removeChild(htmlElement);\n}\n","/*!\n *\n * Rangeable\n * Copyright (c) 2018 Karl Saunders (mobius1(at)gmx(dot)com)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.1.6\n *\n */\n(function(i,j){\"object\"==typeof exports?module.exports=j(\"Rangeable\"):\"function\"==typeof define&&define.amd?define([],j):i.Rangeable=j(\"Rangeable\")})(\"undefined\"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&\"function\"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=[\"ruler\"],\"string\"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:\"single\",tooltips:\"always\",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:\"rangeable-input\",container:\"rangeable-container\",vertical:\"rangeable-vertical\",progress:\"rangeable-progress\",handle:\"rangeable-handle\",track:\"rangeable-track\",multiple:\"rangeable-multiple\",disabled:\"rangeable-disabled\",tooltips:\"rangeable-tooltips\",tooltip:\"rangeable-tooltip\",visible:\"rangeable-tooltips--visible\"}},t),this.mouseAxis={x:\"clientX\",y:\"clientY\"},this.trackSize={x:\"width\",y:\"height\"},this.trackPos={x:\"left\",y:\"top\"},this.lastPos=0,this.double=\"double\"===this.config.type||Array.isArray(this.config.value),this.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version=\"0.1.6\",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?\"y\":\"x\",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i(\"div\",u.container),w=i(\"div\",u.track),x=i(\"div\",u.progress),y=i(\"div\",u.handle),z=i(\"div\",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i(\"div\",u.handle),i(\"div\",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i(\"div\",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+\"px\"),t.tooltips&&(v.classList.add(u.tooltips),\"string\"==typeof t.tooltips&&\"always\"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i(\"div\",\"rangeable-buffers\");this.input.values.forEach(function(C,D){var E=i(\"div\",\"rangeable-buffer\");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i(\"div\",\"rangeable-buffer\"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return\"mousedown\"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add(\"dragging\"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add(\"active\"),this.setValueFromPosition(s),this.touch?(document.addEventListener(\"touchmove\",this.events.move,!1),document.addEventListener(\"touchend\",this.events.stop,!1),document.addEventListener(\"touchcancel\",this.events.stop,!1)):(document.addEventListener(\"mousemove\",this.events.move,!1),document.addEventListener(\"mouseup\",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove(\"dragging\"),this.onEnd(),this.activeHandle.classList.remove(\"active\"),this.activeHandle=!1,this.touch?(document.removeEventListener(\"touchmove\",this.events.move),document.removeEventListener(\"touchend\",this.events.stop),document.removeEventListener(\"touchcancel\",this.events.stop)):(document.removeEventListener(\"mousemove\",this.events.move),document.removeEventListener(\"mouseup\",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event(\"change\")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case\"ArrowRight\":case\"ArrowUp\":t.stepUp(v);break;case\"ArrowLeft\":case\"ArrowDown\":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle(\"combined-tooltip\",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+\" - \"+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event(\"input\")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?\"bottom\":\"left\"]=s+\"px\",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+\"px\"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest(\".\"+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute(\"tabindex\")}):this.nodes.handle.removeAttribute(\"tabindex\"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},\"start move stop update reset native keydown\".split(\" \").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener(\"scroll\",this.events.scroll,!1),window.addEventListener(\"resize\",this.events.resize,!1),document.addEventListener(\"keydown\",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.input.addEventListener(\"input\",this.events.native,!1),this.input.form&&this.input.form.addEventListener(\"reset\",this.events.reset,!1)},r.unbind=function(){document.removeEventListener(\"scroll\",this.events.scroll),window.removeEventListener(\"resize\",this.events.resize),document.removeEventListener(\"keydown\",this.events.keydown),this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.input.removeEventListener(\"input\",this.events.native),this.input.form&&this.input.form.removeEventListener(\"reset\",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q});","import 'promise-polyfill/src/polyfill';\nimport { Dataviz, Dataset } from './index';\n\nmodule.exports = {\n default: Dataviz,\n Dataviz,\n Dataset,\n};\n","/* eslint-env browser */\nimport * as d3 from 'd3';\nimport c3 from 'c3';\n\nimport pkg from '../package.json';\nimport data from './data';\nimport { Dataset } from './dataset';\n\n// Utils\nimport { each } from './utils/each';\nimport isDateString from './utils/assert-date-string';\nimport { stripHtmlTags } from './utils/strip-html-tags';\nimport { escapeHtml } from './utils/escape-html';\nimport libraries from './libraries';\nimport { extendDeep } from './utils/extend-deep';\nimport exportImage from './utils/export-svg';\nimport exportData from './utils/export-data';\nimport renderDownloadButton from './utils/render-download-btn';\nimport renderExecutionMetadata from './utils/render-execution-metadata';\nimport copyToClipboard from './utils/copy-to-clipboard';\n\nimport palettes from './palettes/index';\n\n// Constructor\nexport const Dataviz = function (options = {}) {\n if (this instanceof Dataviz === false) {\n return new Dataviz(options);\n }\n\n this.c3 = c3; // expose for use outside\n this.d3 = d3;\n\n const datavizInstance = this;\n const defaultOptions = {\n showDeprecationWarnings: true,\n showLoadingSpinner: false,\n\n container: undefined, // querySelector of container, for example '#someDiv'\n containerElement: undefined, // HTML parent element for the chart\n\n // width: undefined, *deprecated* - use CSS\n // height: undefined, *deprecated* - use CSS\n\n title: undefined,\n showTitle: true,\n\n subtitle: undefined,\n\n notes: undefined,\n theme: 'keen-dataviz',\n\n colors: [\n '#00bbde', '#fe6672', '#eeb058', '#8a8ad6', '#ff855c', '#00cfbb',\n '#5a9eed', '#73d483', '#c879bb', '#0099b6', '#d74d58', '#cb9141',\n '#6b6bb6', '#d86945', '#00aa99', '#4281c9', '#57b566', '#ac5c9e',\n '#27cceb', '#ff818b', '#f6bf71', '#9b9be1', '#ff9b79', '#26dfcd',\n '#73aff4', '#87e096', '#d88bcb',\n ],\n\n colorMapping: {},\n ui: {\n executionMetadata: true,\n },\n utils: {\n clickToCopyToClipboard: true,\n },\n\n indexBy: 'timeframe.start',\n labels: [],\n labelMapping: {},\n labelMappingRegExp: undefined,\n errorMapping: {},\n showErrorMessages: true,\n library: 'default',\n sortGroups: undefined,\n sortIntervals: undefined,\n\n results: undefined, // raw data\n\n // C3 chartOptions\n type: undefined,\n stacked: false,\n dateFormat: undefined,\n legend: {\n show: true,\n position: 'right',\n alignment: 'top',\n label: {\n textMaxLength: 12\n },\n pagination: {\n offset: 0, // start from\n limit: 5 // items per page\n },\n tooltip: {\n show: true,\n pointer: true\n },\n sort: undefined\n },\n\n axis: {},\n color: {},\n size: {\n // control it with CSS of .c3-chart\n },\n padding: {\n top: 15\n },\n point: {\n focus: {\n expand: {\n enabled: false\n }\n },\n r: 2,\n show: true,\n sensitivity: 300\n },\n tooltip: {\n horizontal: true,\n format: {\n // https://c3js.org/samples/tooltip_format.html\n }\n },\n transition: {\n // duration: 0\n },\n data: {\n order: null,\n selection: {\n enabled: true,\n draggable: true,\n multiple: true\n },\n onselected: (d, element) => {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n },\n },\n grid: {\n y: {\n show: true\n }\n },\n partialIntervalIndicator: {\n show: undefined,\n className: 'partial-interval-indicator'\n },\n timezone: 'UTC',\n table: {\n schema: 'static',\n },\n renderOnVisible: false,\n funnel: {\n lines: true,\n resultValues: true,\n percents: {\n show: false,\n countingMethod: 'absolute',\n decimals: 0\n },\n marginBetweenElements: false,\n hover: true,\n effect3d: 'both-sides',\n minimalSize: false,\n },\n react: false,\n range: false,\n sparkline: false,\n choropleth: {\n map: 'world',\n borders: {\n show: true,\n size: 0.5,\n color: '#000'\n },\n showSlider: false\n },\n heatmap: {},\n };\n\n this.config = { ...extendDeep(defaultOptions, options) };\n\n if (options.palette) {\n if (!palettes[options.palette]){\n console.log('Colors pallete not found', options.palette);\n }\n this.config.colors = palettes[options.palette].colors;\n }\n\n if (this.config.type) {\n // backward compatibility with v2016... areachart -> area\n this.config.type = convertChartTypes(this.config.type);\n }\n\n // overwriting options for range chart\n if(this.config.type && this.config.type.includes('-range')) {\n this.config.range = true;\n this.config.type = this.config.type.replace('-range', '');\n this.config.legend.show = false;\n this.config.stacking = 'normal';\n this.config.labels = ['Max', 'Min'];\n this.config.colors = [\n this.config.colors[0],\n this.config.colors[0],\n ];\n }\n\n // overwriting stacked when stacking added\n if (this.config.stacking) {\n this.config.stacked = true;\n }\n\n // overwriting options for sparkline chart\n if (this.config.sparkline) {\n this.config.legend.show = false;\n this.config.axis = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n this.config.grid = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n }\n\n // get DOM node by query\n if (this.config.container) {\n this.el(this.config.container);\n }\n\n if (options.legend !== undefined && !options.legend) {\n this.config.legend = {\n ...options,\n show: false\n };\n }\n\n if (options.color && options.color.pattern) {\n // to match c3 options\n this.config.colors = options.color.pattern;\n }\n\n if (this.config.legend\n && this.config.legend.tooltip\n && this.config.legend.tooltip.show === false\n && this.config.tooltip.show === undefined) {\n this.config.tooltip = { show: false };\n }\n\n this.dataset = new Dataset(this.config);\n this.view = {\n _prepared: false,\n _rendered: false,\n _artifacts: { /* state bin */ }\n };\n\n Dataviz.visuals.push(this);\n\n if (this.config.showLoadingSpinner) {\n this.prepare();\n }\n\n if (!!this.config.results) {\n this.render(this.config.results);\n }\n this.config.firstVisibilityState = document.visibilityState;\n\n if (!this.config.utils.clickToCopyToClipboard) {\n this.config.data.onselected = () => {};\n }\n\n if (options.data && options.data.onselected) {\n this.config.data.onselected = (d, element) => {\n const callback = options.data.onselected.bind(null, d, element);\n callback();\n\n if (this.config.utils.clickToCopyToClipboard) {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n }\n };\n }\n\n};\n\n\nDataviz.libraries = { default: {} };\nif (typeof window !== 'undefined') {\n Dataviz.libraries.default = libraries(Dataviz);\n}\nDataviz.visuals = [];\n\nDataviz.register = function (name, actions) {\n Dataviz.libraries[name] = Dataviz.libraries[name] || {};\n each(actions, function(method, key){\n Dataviz.libraries[name][key] = method;\n });\n};\n\nDataviz.find = function(target){\n if (!arguments.length) return Dataviz.visuals;\n const el = target.nodeName ? target : document.querySelector(target);\n let match = null;\n each(Dataviz.visuals, function(visual){\n if (el == visual.config.container){\n match = visual;\n return false;\n }\n });\n return match;\n};\n\n\n // Prototype\n // ------------\n\nDataviz.prototype.attributes = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n const view = this.config;\n each(obj, function(prop, key){\n // Handle deprecated property names\n if (key === 'chartType') {\n key = 'type';\n }\n view[key] = prop;\n });\n return this;\n};\n\nDataviz.prototype.call = function(fn){\n fn.call(this);\n return this;\n};\n\nDataviz.prototype.chartOptions = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n this.config = extendDeep(this.config, obj);\n return this;\n};\n\nDataviz.prototype.colors = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.colors;\n this.config.colors = (arr instanceof Array ? arr : []);\n return this;\n};\n\nDataviz.prototype.colorMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })');\n }\n const datavizInstance = this;\n if (!arguments.length) return this.config.colorMapping;\n if (obj === null) {\n this.config.colorMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n datavizInstance.config.colorMapping[key] = (value ? value : null);\n });\n }\n return this;\n};\n\nDataviz.prototype.data = data;\n\nDataviz.prototype.dateFormat = function(val){\n if (this.config.showDeprecationWarnings) {\n console.log('.dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.dateFormat;\n if (typeof val === 'string' || typeof val === 'function') {\n this.config.dateFormat = val;\n }\n else {\n this.config.dateFormat = undefined;\n }\n return this;\n};\n\nDataviz.prototype.destroy = function(){\n const library = this.library();\n const type = this.config.type;\n const element = this.el();\n\n // Call destroy method if present\n if (Dataviz.libraries[library]\n && Dataviz.libraries[library][type]){\n Dataviz.libraries[library][type].destroy.call(this);\n }\n\n // Clear rendered artifacts, state bin\n if (element) {\n element.innerHTML = '';\n }\n this.view._prepared = false;\n this.view._rendered = false;\n this.view._artifacts = {};\n return this;\n};\n\nDataviz.prototype.el = function(target){\n const datavizInstance = this;\n if (!arguments.length) return this.config.containerElement;\n domReady(function(){\n if (target && target !== null) {\n if (target.nodeName) {\n datavizInstance.config.containerElement = target;\n }\n else if (document.querySelector) {\n datavizInstance.config.containerElement = document.querySelector(target);\n }\n }\n else {\n datavizInstance.config.containerElement = undefined;\n }\n });\n return this;\n};\n\nDataviz.prototype.height = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.height() is deprecated - use CSS classes');\n }\n return this;\n};\n\n// IMPORTANT: Must be run before data parsing\nDataviz.prototype.indexBy = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.indexBy;\n this.config.indexBy = (str ? String(str) : 'timeframe.start');\n return this;\n};\n\nDataviz.prototype.labels = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })');\n }\n\n if (!arguments.length) return this.config.labels;\n this.config.labels = (arr instanceof Array ? arr : []);\n\n setLabels(this);\n\n return this;\n};\n\nfunction setLabels(datavizInstance){\n // Write labels\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.updateColumn(0, function(value, index){\n if (datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n else {\n datavizInstance.dataset.updateRow(0, function(value, index){\n if (index > 0 && datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.labelMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.labelMapping;\n if (obj === null) {\n this.config.labelMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n this.config.labelMapping[key] = (value ? value : null);\n }.bind(this));\n }\n\n mapLabels(this);\n\n return this;\n};\n\nfunction mapLabelsExec({ datavizInstance, value }){\n if (datavizInstance.config.labelMappingRegExp){\n let valueAfterMatching = value;\n datavizInstance.config.labelMappingRegExp.forEach(regExpAndLabel => {\n if (regExpAndLabel.length > 1) {\n let regExpObj = regExpAndLabel[0];\n if (regExpObj.test(value)){\n valueAfterMatching = regExpAndLabel[1];\n }\n }\n });\n return stripHtmlTags(valueAfterMatching);\n }\n if (datavizInstance.config.labelMapping[value]) {\n return stripHtmlTags(String(datavizInstance.config.labelMapping[value]));\n }\n return stripHtmlTags(value);\n}\n\nfunction mapLabels(datavizInstance){\n // Write labels\n if (!datavizInstance.config.labelMappingDimension) {\n // if not defined use deprecated auto-detecting\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.config.labelMappingDimension = 'row';\n } else {\n datavizInstance.config.labelMappingDimension = 'column';\n }\n }\n\n if (datavizInstance.config.labelMappingDimension === 'row'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateColumn(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n\n if (datavizInstance.config.labelMappingDimension === 'column'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateRow(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.library = function(str){\n if (!arguments.length) return this.config['library'];\n this.config['library'] = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.message = function(){\n if (this.view._rendered) {\n this.destroy();\n }\n if (this.el()) {\n this.el().innerHTML = '';\n const message = Dataviz.libraries.default.message;\n if (message.render) {\n message.render.apply(this, arguments);\n }\n }\n return this;\n};\n\nDataviz.prototype.notes = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.notes;\n this.config.notes = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.prepare = function(){\n const datavizInstance = this;\n\n if (!this.el()) {\n throw `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n return;\n }\n\n domReady(function(){\n if (datavizInstance.view._rendered) {\n datavizInstance.destroy();\n }\n if (datavizInstance.el()) {\n datavizInstance.el().innerHTML = '';\n const loader = Dataviz.libraries.default.spinner;\n if (loader.render) {\n loader.render.call(datavizInstance);\n }\n datavizInstance.view._prepared = true;\n }\n });\n\n return this;\n};\n\nDataviz.prototype.render = function(results = undefined){\n const datavizInstance = this;\n\n if (!!results) {\n const firstResult = results[0] || results;\n if (\n firstResult.query\n && firstResult.query.interval\n && firstResult.query.timeframe\n && typeof firstResult.query.timeframe === 'string'\n && firstResult.query.timeframe.includes('this_')\n && this.config.partialIntervalIndicator\n && this.config.partialIntervalIndicator.show === undefined\n )\n {\n this.config.partialIntervalIndicator.show = true;\n }\n\n if (Array.isArray(results)) {\n const timeframes = results.map(resultItem => resultItem.query.timeframe);\n timeframes.forEach(resultTimeframe => {\n let foundDifferent = timeframes.find(timeframeItem =>\n JSON.stringify(timeframeItem) !== JSON.stringify(resultTimeframe)\n );\n if (foundDifferent){\n const msg = 'Timeframes of the queries should be the same';\n console.error(msg);\n throw msg;\n }\n });\n // first result is important to prepare X on the chart\n return datavizInstance\n .data(results[0])\n .call(() => {\n const input = results[0];\n this.dataset.deleteColumn(1);\n for (let result of results) {\n let label = `${input.query.event_collection} ${input.query.analysis_type}`;\n let ds2 = Dataset.parser('interval')(result);\n datavizInstance.dataset.appendColumn(label, ds2.selectColumn(1).slice(1));\n }\n })\n .render();\n }\n\n return datavizInstance.data(results).render();\n }\n if (\n (!!this.config.labelMapping && Object.keys(this.config.labelMapping).length > 0)\n ||\n (!!this.config.labelMappingRegExp && this.config.labelMappingRegExp.length > 0)\n ){\n mapLabels(datavizInstance);\n }\n if (!!this.config.labels && Object.keys(this.config.labels).length > 0){\n setLabels(datavizInstance);\n }\n if (!!this.config.sortGroups) {\n sortGroups(datavizInstance);\n }\n if (!!this.config.sortIntervals) {\n sortIntervals(datavizInstance);\n }\n\n const loader = Dataviz.libraries.default.spinner;\n const library = this.config.library;\n const type = this.config.type;\n const containerElement = this.el();\n\n if (!containerElement || containerElement === undefined) {\n const msg = `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n console.error(msg);\n throw msg;\n return;\n }\n\n let returnValue = datavizInstance;\n\n if (datavizInstance.config.renderAsPromise) {\n returnValue = new Promise((resolve, reject) => {\n const customCallback = this.config.onrendered;\n datavizInstance.config.onrendered = () => {\n if (customCallback) {\n customCallback();\n }\n resolve(datavizInstance);\n }\n });\n }\n\n domReady(function(){\n const shouldRenderExecutionMetadata = datavizInstance.execution_metadata\n && datavizInstance.config.ui\n && datavizInstance.config.ui.executionMetadata;\n const shouldRenderDownloadBtn = datavizInstance.config.ui\n && datavizInstance.config.ui.buttons\n && datavizInstance.config.ui.buttons.download\n && datavizInstance.config.ui.buttons.download.type;\n if (datavizInstance.view._prepared && loader.destroy) {\n loader.destroy.apply(datavizInstance, arguments);\n }\n containerElement.innerHTML = '';\n\n if (Dataviz.libraries[library] === 'undefined'){\n // Error: Unregistered library\n const msg = `Incorrect library`;\n datavizInstance.message(msg);\n throw msg;\n return;\n }\n else {\n if (typeof Dataviz.libraries[library][type] === 'undefined') {\n const msg = `Incorrect chart type`;\n const mappedMsg = this.config.errorMapping[msg] || msg;\n datavizInstance.message(mappedMsg);\n throw msg;\n return;\n }\n else {\n buildDomWrapper(containerElement,\n datavizInstance.config\n );\n if (shouldRenderDownloadBtn) {\n renderDownloadButton({\n element: containerElement,\n data: datavizInstance.dataset.matrix,\n type: datavizInstance.config.ui.buttons.download.type,\n label: datavizInstance.config.ui.buttons.download.label,\n })\n }\n if (shouldRenderExecutionMetadata) {\n renderExecutionMetadata({\n element: containerElement,\n data: datavizInstance.execution_metadata,\n })\n }\n const { renderOnVisible } = datavizInstance.config;\n if(renderOnVisible){\n if(typeof IntersectionObserver !== 'undefined'){\n const chartVisibleCallback = (events, observer) => {\n events.forEach(el => {\n if(el.isIntersecting){\n if(!datavizInstance.view._rendered){\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n })\n }\n const observer = new IntersectionObserver(chartVisibleCallback);\n observer.observe(containerElement);\n return;\n }\n }\n if(datavizInstance.config.firstVisibilityState === 'hidden'){\n if(typeof document !== 'undefined') {\n let hidden, visibilityChange;\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n const handleVisibilityChange = () => {\n if(!document[hidden] && datavizInstance.view._artifacts.c3) {\n datavizInstance.view._artifacts.c3.load(datavizInstance.dataset.matrix);\n }\n }\n if(typeof document.addEventListener !== \"undefined\" ||\n hidden !== undefined){\n document.addEventListener(visibilityChange, handleVisibilityChange, {\n once: true\n });\n }\n }\n }\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n });\n\n return returnValue;\n};\n\nDataviz.prototype.sortGroups = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortGroups;\n this.config.sortGroups = (str ? String(str) : null);\n\n sortGroups(this, str);\n\n return this;\n};\n\nfunction sortGroups(datavizInstance){\n // Sort groups\n if (datavizInstance.config.sortGroups && datavizInstance.data().length > 1) {\n if (isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.sortColumns(datavizInstance.config.sortGroups, datavizInstance.dataset.getColumnSum);\n }\n else {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortGroups, datavizInstance.dataset.getRowSum);\n }\n }\n}\n\nDataviz.prototype.sortIntervals = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortIntervals;\n this.config.sortIntervals = (str ? String(str) : null);\n\n sortIntervals(this);\n\n return this;\n};\n\nfunction sortIntervals(datavizInstance){\n if (datavizInstance.config.sortIntervals) {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortIntervals);\n }\n}\n\nDataviz.prototype.stacked = function(bool){\n if (this.config.showDeprecationWarnings) {\n console.log('.stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.stacked;\n this.config.stacked = bool ? true : false;\n return this;\n};\n\nDataviz.prototype.theme = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.theme;\n this.config.theme = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.title = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.title;\n this.config.title = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.type = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.type;\n this.config.type = (str ? convertChartTypes(str) : null);\n return this;\n};\n\nDataviz.prototype.update = function(){\n const library = this.config.library;\n const type = this.config.type;\n const element = this.el();\n if (library && type && element && Dataviz.libraries[library][type].update) {\n Dataviz.libraries[library][type].update.apply(this, arguments);\n }\n return this;\n};\n\nDataviz.prototype.width = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.width() is deprecated - use CSS classes');\n }\n return this;\n};\n\nDataviz.prototype.exportImage = function({ quality = 0, bgcolor = '#fff' } = {}) {\n exportImage({\n node: this.config.containerElement,\n quality,\n bgcolor,\n });\n};\n\nDataviz.prototype.exportData = function(type='json') {\n exportData({\n data: this.dataset.matrix,\n type,\n });\n};\n\n// Deprecations\nDataviz.prototype.chartType = Dataviz.prototype.type;\nDataviz.prototype.error = Dataviz.prototype.message;\nDataviz.prototype.parseRawData = Dataviz.prototype.data;\nDataviz.prototype.parseRequest = function(){\n // this.emit('error', 'This method is no longer supported. Use .data() instead: https://github.com/keen/keen-dataviz.js#data');\n return this;\n};\nDataviz.prototype.initialize = function(){\n // this.emit('error', 'This method is no longer supported, and can be omitted as it has no impact');\n return this;\n};\n\nDataviz.version = pkg.version;\n\n// Private\n\nfunction buildDomWrapper(el, options) {\n let html = '';\n let chart100percentWide = '';\n let rangeChart = '';\n if (options.legend.position === 'top' || options.legend.position === 'bottom') {\n chart100percentWide = 'c3-chart-100-percent';\n }\n if (options.range) {\n rangeChart = 'keen-dataviz-range';\n }\n let container = `
`;\n const verticalAlignment = ['top', 'middle', 'bottom'];\n const horizontalAlignment = ['left', 'center', 'right'];\n let align = 'horizontal';\n let legendItemsAlign = 'center';\n if (horizontalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n if (options.legend.position === 'left' || options.legend.position === 'right') {\n align = 'vertical';\n if (verticalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n }\n if (options.legend && options.legend.show) {\n if (options.legend.position === 'top' || options.legend.position === 'left') {\n container = `
${container}`;\n } else {\n container = `${container}
`;\n }\n }\n if(!options.react){\n html += `
`;\n }\n if (options.title && options.showTitle) {\n html += `
${options.title}
`;\n }\n if (options.subtitle) {\n html += `
${options.subtitle}
`;\n }\n html += `
${container}
`;\n if (options.notes) {\n html += `
${options.notes}
`;\n }\n if(!options.react){\n html += '
';\n }\n\n el.innerHTML = html;\n}\n\nfunction convertChartTypes(str) {\n const map = {\n areachart: 'area',\n barchart: 'horizontal-bar',\n columnchart: 'bar',\n linechart: 'line',\n piechart: 'pie',\n };\n return map[str] || str;\n}\n\nfunction testDom(fn) {\n if (/in/.test(document.readyState)) {\n setTimeout(() => {\n testDom(fn);\n }, 9);\n } else {\n fn();\n }\n}\n\nfunction domReady(fn) {\n if (typeof document !== 'undefined' || typeof window === 'undefined') {\n fn();\n return;\n }\n // Firefox 3.5 shim\n if (document.readyState == null && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', function DOMContentLoaded() {\n document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);\n document.readyState = 'complete';\n }, false);\n document.readyState = 'loading';\n }\n testDom(fn);\n}\n\nexport { Dataset } from './dataset';\n\nexport default Dataviz;\n","import { each } from '../../utils/each';\n\nexport function deleteColumn(q) {\n const self = this;\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n each(self.matrix, function(row, i){\n self.matrix[i].splice(index, 1);\n });\n }\n return self;\n}\n\nexport function deleteRow(q) {\n var index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n this.matrix.splice(index, 1);\n }\n return this;\n}\n","import { each } from '../../utils/each';\n\nexport function filterColumns(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i) {\n clone.push([]);\n });\n\n each(self.matrix[0], function(col, i){\n var selectedColumn = self.selectColumn(i);\n if (i == 0 || fn.call(self, selectedColumn, i)) {\n each(selectedColumn, function(cell, ri){\n clone[ri].push(cell);\n });\n }\n });\n\n self.data(clone);\n return self;\n}\n\nexport function filterRows(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i){\n if (i == 0 || fn.call(self, row, i)) {\n clone.push(row);\n }\n });\n\n self.data(clone);\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function insertColumn(index, str, input) {\n const self = this;\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n\n self.matrix[0].splice(index, 0, label);\n each(self.matrix, function(row, i) {\n var cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].splice(index, 0, cell);\n }\n });\n\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat( createNullList(self.matrix.length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n self.matrix[0].splice(index, 0, label);\n each(input, function(value, i){\n self.matrix[i+1].splice(index, 0, value);\n });\n\n }\n return self;\n}\n\nexport function insertRow(index, str, input) {\n const self = this;\n const newRow = [];\n const label = (str !== undefined) ? str : null;\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i) {\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.splice(index, 0, newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n self.matrix.splice(index, 0, newRow.concat(input) );\n }\n\n return self;\n}\n","import { each } from '../../utils/each';\n\nexport function selectColumn(q) {\n const result = [];\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1 && typeof this.matrix[0][index] !== 'undefined') {\n each(this.matrix, function(row, i) {\n result.push(row[index]);\n });\n }\n return result;\n}\n\nexport function selectRow(q) {\n let result = [];\n const index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1 && typeof this.matrix[index] !== 'undefined') {\n result = this.matrix[index];\n }\n return result;\n}\n","import { each } from '../../utils/each';\nimport analysesUtilMethods from '../utils/analyses';\n\nexport function sortColumns(str, comp) {\n var self = this,\n head = this.matrix[0].slice(1), // minus index\n cols = [],\n clone = [],\n fn = comp || analysesUtilMethods.getColumnLabel;\n\n // Isolate each column (except the index)\n each(head, function(cell, i) {\n cols.push(self.selectColumn(i+1).slice(0));\n });\n cols.sort(function(a,b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n each(cols, function(col, i) {\n self\n .deleteColumn(i+1)\n .insertColumn(i+1, col[0], col.slice(1));\n });\n return self;\n}\n\nexport function sortRows(str, comp) {\n var self = this,\n head = this.matrix.slice(0,1),\n body = this.matrix.slice(1),\n fn = comp || analysesUtilMethods.getRowIndex;\n body.sort(function(a, b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n self.data(head.concat(body));\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function updateColumn(q, input) {\n var self = this,\n index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data(), function(row, i){\n var cell;\n if (i > 0) {\n cell = input.call(self, row[index], i, row);\n if (typeof cell !== 'undefined') {\n self.matrix[i][index] = cell;\n }\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.data().length - 1) {\n input = input.concat( createNullList(self.data().length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[i+1][index] = value;\n });\n\n }\n\n }\n return self;\n}\n\nexport function updateRow(q, input){\n var self = this,\n index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data()[index], function(value, i){\n var col = self.selectColumn(i),\n cell = input.call(self, value, i, col);\n if (typeof cell !== 'undefined') {\n self.matrix[index][i] = cell;\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[index][i+1] = value;\n });\n }\n\n }\n return self;\n}\n","let Dataset; /* injected */\n\nimport { each } from '../../utils/each';\nimport { flatten } from '../utils/flatten';\nimport { valueAtDeepKey } from '../utils/object';\nimport { createExtractionKeys } from '../utils/create-extraction-keys';\n\nexport default function initialize(lib){\n Dataset = lib;\n return function(name){\n var options = Array.prototype.slice.call(arguments, 1);\n\n if (!parsers[name]) {\n throw 'Requested parser does not exist';\n }\n else {\n return parsers[name].apply(this, options);\n }\n };\n}\n\nfunction parseMetric(){\n return function(res){\n return new Dataset()\n .set(['Value', 'Result'], res.result)\n .type('metric');\n }\n}\n\n//var myParser = Dataset.parser('interval', 'timeframe.end');\nfunction parseInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n dataset.set(['Result', index], record.value);\n });\n return dataset;\n }\n}\n\nfunction parseGroupedMetric(){\n return function(res){\n var dataset = new Dataset()\n .type('grouped-metric');\n each(res.result, function(record, i){\n var label;\n each(record, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set(['Result', String(record[label])], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('grouped-interval', 'timeframe.end');\nfunction parseGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('grouped-interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n if (record.value.length) {\n each(record.value, function(group, j){\n var label;\n each(group, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set([ String(group[label]), index ], group.result);\n });\n }\n else {\n dataset.appendRow(index);\n }\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-metric', ['first', 'second']);\nfunction parseDoubleGroupedMetric(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-metric');\n each(res.result, function(record, i){\n var rowLabel = record[options[0][0]] + ' ' + record[options[0][1]];\n dataset.set([ 'Result', rowLabel ], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-interval', ['first', 'second'], 'timeframe.end');\nfunction parseDoubleGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-interval');\n each(res.result, function(record, i){\n var index = options[1] && options[1] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n each(record['value'], function(value, j){\n var label = value[options[0][0]] + ' ' + value[options[0][1]];\n dataset.set([ label, index ], value.result);\n });\n });\n return dataset;\n }\n}\n\nfunction parseFunnel(){\n return function(res){\n var result, steps, dataset;\n if (typeof res.steps !== 'undefined'\n && typeof res.result !== 'undefined'\n && res.result instanceof Array) {\n // Ad-hoc funnel response\n result = res.result;\n steps = res.steps;\n }\n else if (typeof res.result.steps !== 'undefined'\n && typeof res.result.result !== 'undefined'\n && res.result.result instanceof Array) {\n // Saved funnel response\n result = res.result.result;\n steps = res.result.steps;\n }\n dataset = new Dataset().type('funnel');\n dataset.appendColumn('Step Value');\n each(result, function(value, i){\n if (typeof steps !== 'undefined' && steps[i]) {\n dataset.appendRow(String(steps[i].event_collection), [value]);\n }\n });\n return dataset;\n }\n}\n\nfunction parseList(){\n return function(res){\n var dataset = new Dataset()\n .type('list');\n each(res.result, function(value, i){\n dataset.set( [ 'Result', String(i+1) ], value );\n });\n return dataset;\n }\n}\n\nfunction parseExtraction(){\n let config = this.config;\n return function(res){\n const datasetExtraction = new Dataset()\n .type('extraction');\n\n const datasetKeys = createExtractionKeys(res.result);\n let names = Array.from(datasetKeys);\n\n const tableConfig = config && config.table;\n if (tableConfig && tableConfig.schema === 'dynamic') {\n const results = res.result;\n const keys = {};\n results.forEach(resultItem => {\n const resultKeys = Object.keys(flatten(resultItem));\n if (resultKeys && resultKeys.length) {\n resultKeys.forEach(keyName => {\n if (!keys[keyName]) {\n keys[keyName] = true;\n }\n });\n }\n });\n names = Object.keys(keys);\n }\n\n let nameI = 0;\n names.forEach(value => {\n datasetExtraction.set([ value, '0' ], value);\n nameI++;\n });\n\n if (Dataset) {\n if (config\n && config.table\n && config.table.columns) {\n names = config.table.columns;\n }\n }\n\n for (let i=0; i {\n Object.keys(flatten(result)).map((key) => {\n keys.add(key);\n });\n });\n\n return keys;\n}\n","import Dataset from './dataset';\nimport { extend } from './utils/extend';\nimport { stripHtmlTags } from './utils/strip-html-tags';\n\nexport default function (data) {\n if (!arguments.length) return this.dataset.data();\n if (data instanceof Dataset) {\n this.dataset = data;\n return this;\n }\n return parseResponse.call(this, data);\n};\n\nfunction parseResponse(response) {\n var dataset,\n indexBy,\n meta,\n parser,\n parserArgs = [],\n query,\n selectedParser,\n title,\n type;\n\n indexBy = this.config.indexBy;\n meta = response.metadata || {};\n query = (typeof response.query !== 'undefined') ? response.query : {};\n\n // Ensure all required params are present\n query = extend({\n analysis_type: null,\n event_collection: null,\n filters: [],\n group_by: null,\n interval: null,\n timeframe: null,\n timezone: null\n }, query);\n\n if (query.analysis_type === 'funnel') {\n parser = 'funnel';\n }\n else if (query.analysis_type === 'extraction'){\n parser = 'extraction';\n }\n else if (query.analysis_type === 'select_unique') {\n if (!query.group_by && !query.interval) {\n parser = 'list';\n }\n // else { Not supported }\n }\n else if (query.analysis_type) {\n if (!query.group_by && !query.interval) {\n parser = 'metric';\n }\n else if (query.group_by && !query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-metric';\n parserArgs.push(query.group_by);\n }\n else {\n parser = 'grouped-metric';\n }\n }\n else if (query.interval && !query.group_by) {\n parser = 'interval';\n parserArgs.push(indexBy);\n }\n else if (query.group_by && query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-interval';\n parserArgs.push(query.group_by);\n parserArgs.push(indexBy);\n }\n else {\n parser = 'grouped-interval';\n parserArgs.push(indexBy);\n }\n }\n }\n\n if (!parser) {\n\n // Metric\n // -------------------------------\n if (typeof response.result === 'number'){\n parser = 'metric';\n }\n\n // Everything else\n // -------------------------------\n if (response.result instanceof Array && response.result.length > 0){\n\n // Interval w/ single value\n // -------------------------------\n if (response.result[0].timeframe && (typeof response.result[0].value == 'number' || response.result[0].value == null)) {\n parser = 'interval';\n parserArgs.push(indexBy)\n }\n\n // Static GroupBy\n // -------------------------------\n if (typeof response.result[0].result == 'number'){\n parser = 'grouped-metric';\n }\n\n // x, y, value for heatmap\n if (this.config.type === 'heatmap' && Object.keys(response.result[0] === 3 && typeof response.result[0].result === 'number')) {\n parser = 'heatmap-axis';\n }\n\n // Grouped Interval\n // -------------------------------\n if (response.result[0].value instanceof Array){\n parser = 'grouped-interval';\n parserArgs.push(indexBy)\n }\n\n // Funnel\n // -------------------------------\n if (typeof response.result[0] === 'number'\n && typeof response.steps !== 'undefined'){\n parser = 'funnel';\n // Move steps into query object\n query.steps = response.steps;\n }\n\n // Select Unique\n // -------------------------------\n if ((typeof response.result[0] === 'string' || typeof response.result[0] == 'number') && typeof response.steps === 'undefined'){\n parser = 'list';\n }\n\n // Extraction\n // -------------------------------\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n // Set title from saved query body, or create a default title\n if (this.config.title === undefined) {\n if (meta.display_name) {\n title = meta.display_name;\n }\n else {\n title = getDefaultTitle(query);\n }\n this.config.title = title;\n }\n\n // Set type from saved query body, or use a default type\n if (!this.config.type) {\n if (meta.visualization && meta.visualization.chart_type) {\n type = meta.visualization.chart_type;\n }\n else {\n type = getDefaultType(parser);\n }\n this.config.type = type;\n }\n\n // Define the appropriate parser\n selectedParser = Dataset.parser.apply(this, [parser].concat(parserArgs));\n\n // Parse the response with augmented query body\n dataset = selectedParser(extend(response, { 'query': query }));\n\n // Set true dates for 'interval' data\n if (parser.indexOf('interval') > -1) {\n dataset.updateColumn(0, function(value, i){\n return new Date(value);\n });\n }\n\n dataset.updateRow(0, function(value, i){\n return stripHtmlTags(value);\n });\n\n this.dataset = dataset;\n\n if (response.execution_metadata) {\n this.execution_metadata = response.execution_metadata;\n }\n\n return this;\n}\n\nfunction getDefaultTitle(query) {\n var analysis = query.analysis_type ? query.analysis_type.replace('_', ' ') : '',\n title;\n\n title = analysis.replace( /\\b./g, function(a){\n return a.toUpperCase();\n });\n\n if (query.event_collection) {\n title += ' - ' + query.event_collection;\n }\n return title;\n}\n\nfunction getDefaultType(parser) {\n let type;\n switch (parser) {\n case 'metric':\n type = 'metric';\n break;\n case 'interval':\n type = 'area';\n break;\n case 'grouped-metric':\n case 'double-grouped-metric':\n type = 'bar';\n break;\n case 'grouped-interval':\n case 'double-grouped-interval':\n type = 'line';\n break;\n case 'funnel':\n type = 'horizontal-bar';\n break;\n case 'list':\n case 'extraction':\n default:\n type = 'table';\n }\n return type;\n}\n","import c3 from 'c3';\n\nimport { each } from '../utils/each';\nimport { extend } from '../utils/extend';\nimport { extendDeep } from '../utils/extend-deep';\nimport isDateString from '../utils/assert-date-string';\nimport c3DefaultDateFormat from './c3/extensions/default-date-format';\nimport c3PaginatingLegend from './c3/extensions/paginating-legend';\nimport c3TooltipContents from './c3/extensions/tooltip-contents';\n\nimport calculateRange from '../dataset/utils/calculate-range';\nimport { calculateSumForPercents, calculatePercents } from '../dataset/utils/calculate-percents';\n\nimport message from './default/message';\nimport metric from './default/metric';\nimport table from './default/table';\nimport spinner from './default/spinner';\nimport Funnel from './default/funnel';\nimport Funnel3d from './default/funnel-3d';\nimport HorizontalFunnel from './default/horizontal-funnel';\nimport HorizontalFunnel3d from './default/horizontal-funnel-3d';\nimport MetricCombo from './default/metric-combo';\nimport Heatmap from './default/heatmap';\nimport Choropleth from './default/choropleth';\n\nexport default function(lib) {\n let timer;\n bindResizeListener(function(){\n if (timer) {\n clearTimeout(timer);\n }\n const delay = (lib.visuals.length > 12) ? 1000 : 250;\n timer = setTimeout(function(){\n each(lib.visuals, function(chart){\n const c3Chart = chart.view._artifacts.c3;\n if (c3Chart) {\n const parentWidth = c3Chart.element.parentNode.parentNode.offsetWidth;\n let width = parentWidth;\n if (chart.config.legend && chart.config.legend.show && (chart.config.legend.position === 'left' || chart.config.legend.position === 'right')) {\n const nextSiblingWidth = c3Chart.element.nextSibling ? c3Chart.element.nextSibling.offsetWidth : 0;\n const prevSiblingWidth = c3Chart.element.previousSibling ? c3Chart.element.previousSibling.offsetWidth : 0;\n width = parentWidth - prevSiblingWidth - nextSiblingWidth;\n }\n\n c3Chart.resize({\n width,\n });\n\n }\n });\n }, delay);\n });\n\n return defineC3();\n};\n\nfunction defineC3(){\n const types = {\n message,\n metric,\n table,\n spinner,\n 'funnel': new Funnel,\n 'funnel-3d': new Funnel3d,\n 'horizontal-funnel': new HorizontalFunnel,\n 'horizontal-funnel-3d': new HorizontalFunnel3d,\n 'metric-combo': new MetricCombo,\n 'heatmap': new Heatmap,\n 'choropleth': new Choropleth\n };\n\n const c3Types = [\n // Standard types\n 'area',\n 'area-spline',\n 'area-step',\n 'bar',\n 'donut',\n 'gauge',\n 'line',\n 'pie',\n 'step',\n 'spline',\n\n // Horizontal variant types\n 'horizontal-area',\n 'horizontal-area-spline',\n 'horizontal-area-step',\n 'horizontal-bar',\n 'horizontal-line',\n 'horizontal-step',\n 'horizontal-spline',\n ];\n\n const getPaddings = (element, paddingName) => {\n return parseInt(window.getComputedStyle(element)[`padding${paddingName}`].replace('px', ''));\n }\n\n function getDefaultOptions(){\n const ENFORCED_OPTIONS = {\n bindto: this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'),\n color: {\n pattern: this.config.colors\n },\n data: {\n colors: { ...this.config.colorMapping },\n columns: [],\n type: this.config.type.replace('horizontal-', '')\n },\n };\n\n const renderingElement = this.el();\n\n let height = renderingElement.offsetHeight;\n\n height -= (getPaddings(renderingElement, 'Top') + getPaddings(renderingElement, 'Bottom'));\n\n if (this.config.showTitle) {\n const titleElement = this.el().querySelector('.keen-dataviz-title');\n if (titleElement) {\n height -= titleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.subtitle) {\n const subtitleElement = this.el().querySelector('.keen-dataviz-subtitle');\n if (subtitleElement) {\n height -= subtitleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.notes) {\n const notesElement = this.el().querySelector('.keen-dataviz-notes');\n if (notesElement) {\n height -= notesElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n let width = this.el().querySelector('.c3-chart').offsetWidth\n - (getPaddings(renderingElement, 'Left') + getPaddings(renderingElement, 'Right'));\n if (width < 0) {\n width = 0;\n }\n\n const DEFAULT_OPTIONS = {\n size: {\n width,\n height:\n height > 0 ?\n height\n : undefined,\n }\n };\n\n const extendedConfig = extendDeep({}, DEFAULT_OPTIONS, this.config, ENFORCED_OPTIONS);\n\n return extendedConfig;\n }\n\n each(c3Types, function(type, index) {\n types[type] = {\n render: function(){\n const options = getDefaultOptions.call(this);\n\n // 100% for charts\n const sumArray = calculateSumForPercents(this.dataset.matrix);\n let oldMatrix = [];\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' || type === 'area-step' || type === 'area-spline')) {\n oldMatrix = this.dataset.matrix;\n this.dataset.matrix = [this.dataset.matrix[0], ...calculatePercents(this.dataset.matrix, sumArray)];\n if(!options.sparkline){\n options.axis = {\n y: {\n padding: {\n top: 0,\n },\n tick: {\n format: d => `${d}%`,\n },\n },\n };\n }\n }\n\n // range charts\n if (options.range) {\n this.dataset.matrix = [this.dataset.matrix[0], ...calculateRange(this.dataset.matrix)];\n }\n\n if (!!this.config.clearOnRender && options.data.columns.length && this.dataset && this.dataset.meta) {\n const datasetMeta = this.dataset.meta || {};\n const { type = '' } = datasetMeta;\n let spliceFrom = 0;\n const intervalTypes = ['interval'];\n if (intervalTypes.includes(type)) {\n spliceFrom = 1;\n }\n options.data.columns.splice(spliceFrom);\n }\n\n if (this.data()[0].length === 1 || this.data().length === 1) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n let removeLegend = false;\n\n if (type === 'gauge') {\n // Accommodate a neat bug:\n options.legend.show = false;\n options.data.columns = [[\n this.config.title || this.data()[1][0],\n this.data()[1][1]\n ]];\n removeLegend = true;\n }\n else if (type === 'pie' || type === 'donut') {\n options.data.columns = this.data().slice(1);\n }\n else {\n\n // Apply formatting for horizontal variant types\n if (type.indexOf('horizontal-') > -1) {\n options.axis.rotated = type.indexOf('horizontal-') > -1;\n }\n\n if (isDateString(this.data()[1][0])) {\n // TIMESERIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'timeseries';\n options.axis.x.tick = options.axis.x.tick || {\n format: this.config.dateFormat || c3DefaultDateFormat(this.data()[1][0], this.data()[2] ? this.data()[2][0] : this.data()[1][0]),\n culling: { max: 5 }\n };\n\n options.data.columns[0] = [];\n each(this.dataset.selectColumn(0), function(cell, i){\n if (i > 0) {\n cell = new Date(cell);\n }\n options.data.columns[0][i] = cell;\n });\n options.data.columns[0][0] = 'x';\n options.data.x = 'x';\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n else {\n // CATEGORIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'category';\n options.axis.x.categories = this.dataset.selectColumn(0).slice(1);\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n\n if (this.data()[0].length === 2) {\n options.legend.show = false;\n removeLegend = true;\n }\n\n each(this.data()[0], function(cell, i){\n if (i > 0) {\n options.data.columns.push(this.dataset.selectColumn(i));\n }\n }.bind(this));\n }\n\n if (removeLegend){\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n legendElement.remove();\n options.size.width = this.el().querySelector('.c3-chart').offsetWidth;\n }\n options.legend.show = false;\n }\n\n const chartTypesWithPartialIntervalIndicator = ['area', 'area-spline', 'area-step', 'line', 'spline', 'step'];\n\n if (options.partialIntervalIndicator\n && options.partialIntervalIndicator.show\n && chartTypesWithPartialIntervalIndicator.indexOf(options.type) > -1\n ) {\n const results = options.data.columns && options.data.columns[0];\n if (results && results.length > 1) {\n const partialResultsRegion = {\n axis: 'x',\n start: new Date(results[results.length - 2]),\n class: options.partialIntervalIndicator.className\n };\n options.regions = [...(options.regions || []), partialResultsRegion];\n }\n }\n \n if (\n !(options.tooltip && options.tooltip.show === false)\n &&\n (options.legend.show === true ||\n (options.legend\n && options.legend.tooltip\n && options.legend.tooltip.show)\n )) {\n \n // Apply custom tooltip\n options.tooltip = {\n contents: c3TooltipContents,\n format: {\n title: this.config.tooltip.format.title,\n value: (value, ratio, id, index) => {\n let valueFormatted = c3CustomTooltipFiltering.call(this, value, ratio, id, index);\n if (this.config.tooltip && this.config.tooltip.format && this.config.tooltip.format.value)\n {\n valueFormatted = this.config.tooltip.format.value.call(this, valueFormatted, ratio, id, index);\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = parseFloat(((valueFormatted / 100) * sumArray[index]).toFixed(2));\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = ((valueFormatted / 100) * sumArray[index]).toFixed(2);\n return parseFloat(valueFormatted);\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n }\n };\n }\n\n if (options.legend.show === true) {\n const c3options = { ...options };\n // Apply custom color handling\n c3options.data.color = c3CustomDataMapping.bind(this);\n\n c3options.legend.hide = true; // hide default c3 legend\n\n // Render artifacts\n this.view._artifacts['c3'] = c3.generate(c3options);\n\n c3PaginatingLegend.call(this, {...options, onLegendRendered: () => {\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n if (\n options.legend.position === 'top' ||\n options.legend.position === 'bottom'\n ) {\n c3options.size.height -= legendElement.offsetHeight;\n this.view._artifacts['c3'].resize({ height: c3options.size.height });\n } else {\n if (c3options.size.width === 0) {\n c3options.size.width = this.el().offsetWidth\n - getPaddings(this.el(), 'Left')\n - getPaddings(this.el(), 'Right');\n }\n c3options.size.width -= legendElement.offsetWidth;\n this.view._artifacts['c3'].resize({ width: c3options.size.width });\n }\n }\n },\n onPaginated: () => {\n this.view._artifacts['c3'].flush();\n }\n });\n }\n else {\n this.view._artifacts['c3'] = c3.generate(options);\n }\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts['c3']) {\n this.view._artifacts['c3'].destroy();\n this.view._artifacts['c3'] = null;\n }\n }\n };\n });\n\n return types;\n}\n\nfunction c3CustomDataMapping(color, d) {\n const type = this.config.type;\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if ((d.id && scope.indexOf(d.id) > -1)\n || (d && !d.id && scope.indexOf(d) > -1)) {\n return color;\n }\n else {\n if (type === 'donut' || type === 'pie') {\n return 'rgba(0,0,0,.1)';\n }\n else {\n return 'rgba(0,0,0,.07)';\n }\n }\n }\n else {\n return color;\n }\n}\n\nfunction c3CustomTooltipFiltering(value, ratio, id, index) {\n const type = this.config.type;\n\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if (scope.indexOf(id) > -1) {\n return value;\n }\n }\n else {\n return value;\n }\n}\n\nfunction bindResizeListener(fn){\n if (typeof window === 'undefined') return;\n window.onresize = window.resize = function(){};\n if (window.addEventListener) {\n window.addEventListener('resize', fn, true);\n }\n else if (window.attachEvent) {\n window.attachEvent('onresize', fn);\n }\n}\n","export default function (startDate, endDate) {\n const timeDiff = Math.abs(new Date(startDate).getTime() - new Date(endDate).getTime());\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'June',\n 'July',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n // Yearly (31536000000) + Monthly\n if (timeDiff >= 2419200000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getFullYear();\n };\n }\n // Daily\n else if (timeDiff >= 86400000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getDate();\n };\n }\n // Hourly\n else if (timeDiff >= 3600000) {\n return '%I:%M %p';\n }\n // Minutely\n else {\n return '%I:%M:%S %p';\n }\n}\n","import * as d3 from 'd3';\n\nimport isDateString from '../../../utils/assert-date-string';\n\nexport default function (options) {\n const cols = options.data.columns;\n const datavizInstance = this;\n const chart = this.view._artifacts.c3;\n let columns = [];\n const domNode = this.el().querySelector('.' + datavizInstance.config.theme + '-rendering');\n const legendConfig = datavizInstance.config.legend;\n\n const pagination = this.view._artifacts.pagination = {\n ...{\n hidden: [],\n labels: [],\n offset: 0,\n limit: Math.round((domNode.offsetHeight - 78) / 20),\n total: 0\n },\n ...legendConfig.pagination\n };\n\n if (options.legend.sort) {\n columns = options.legend.sort(cols);\n\n // update column order in the data, so tooltip will be the same order\n const columnsSorted = [];\n const dataColumnsSorted = [];\n if (cols[0][0] === 'x') {\n dataColumnsSorted.push(cols[0]);\n }\n columns.forEach(column => {\n let columnData = options.data.columns.find(item => item[0] === column);\n dataColumnsSorted.push(columnData);\n });\n options.data.columns = dataColumnsSorted;\n } else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i][0] !== 'x' && !isDateString(cols[i][1])) {\n columns.push(cols[i][0]);\n }\n }\n }\n\n const legendElement = this.el().querySelector('.keen-c3-legend');\n\n let align = 'vertical';\n if (legendConfig.position === 'top' || legendConfig.position === 'bottom') {\n align = 'horizontal';\n }\n\n const paginateHorizontalLeftElement = document.createElement('div');\n paginateHorizontalLeftElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-left');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalLeftElement);\n }\n\n const legendItemsElement = document.createElement('div');\n legendItemsElement.setAttribute('class', `keen-c3-legend-items keen-c3-legend-${align}-items`);\n legendElement.append(legendItemsElement);\n\n const paginateVerticalElement = document.createElement('div');\n paginateVerticalElement.setAttribute('class', 'keen-c3-legend-pagination keen-c3-legend-pagination-icons');\n if (align === 'vertical') {\n legendElement.append(paginateVerticalElement);\n }\n\n const paginateHorizontalRightElement = document.createElement('div');\n paginateHorizontalRightElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalRightElement);\n }\n\n paginateData();\n\n function paginateData(){\n pagination.labels = columns.slice(pagination.offset, pagination.offset + pagination.limit);\n pagination.total = columns.length;\n renderLegendComponent.call(datavizInstance, pagination.labels);\n if (pagination.total > pagination.limit) {\n renderPaginationComponent.call(datavizInstance);\n }\n if (options.onPaginated){\n options.onPaginated();\n }\n }\n\n function renderLegendComponent(){\n legendItemsElement.innerHTML = '';\n\n pagination.labels.forEach(label => {\n const labelShortened = legendConfig.label.textMaxLength ? label.slice(0, legendConfig.label.textMaxLength - 1) : label;\n const legendItem = document.createElement(\"div\");\n legendItem.innerHTML = `${labelShortened}`;\n legendItem.chartPartId = label;\n legendItem.setAttribute('class', 'legend-item');\n legendItemsElement.append(legendItem);\n\n const legendItemColorSample = document.createElement(\"span\");\n legendItemColorSample.setAttribute('class', 'legend-item-color-sample');\n legendItemColorSample.style.backgroundColor = chart.color(legendItem.chartPartId);\n legendItem.prepend(legendItemColorSample);\n\n const tooltipElement = document.createElement(\"div\");\n legendItem.addEventListener('mouseover', (event) => {\n chart.focus(legendItem.chartPartId);\n if (legendConfig.tooltip.show && legendItem.chartPartId.length > legendConfig.label.textMaxLength) {\n tooltipElement.setAttribute('class', `keen-c3-legend-label-overlay keen-c3-legend-position-${legendConfig.position}`);\n tooltipElement.innerHTML =\n `${\n options.legend.tooltip.pointer ? `
` : ``\n }${legendItem.chartPartId}`;\n legendItem.append(tooltipElement);\n }\n });\n legendItem.addEventListener('mouseout', (event) => {\n chart.revert();\n tooltipElement.remove();\n });\n legendItem.addEventListener('click', (event) => {\n let opacity = 1;\n const isHidden = pagination.hidden.indexOf(legendItem.chartPartId);\n if (isHidden < 0) {\n pagination.hidden.push(legendItem.chartPartId);\n opacity = .35;\n }\n else {\n pagination.hidden.splice(isHidden, 1);\n opacity = 1;\n }\n legendItem.style.opacity = opacity;\n chart.toggle(legendItem.chartPartId);\n });\n });\n\n if (options.onLegendRendered){\n options.onLegendRendered();\n options.onLegendRendered = null;\n }\n\n }\n\n function renderPaginationComponent(){\n paginateVerticalElement.innerHTML = '';\n paginateHorizontalLeftElement.innerHTML = '';\n paginateHorizontalRightElement.innerHTML = '';\n\n const arrowUp = document.createElement('i');\n const arrowDown = document.createElement('i');\n\n const paginate = (direction) => {\n if (direction === 'forward') {\n const diff = pagination.offset + pagination.limit;\n if (diff < pagination.total) {\n pagination.offset = diff;\n return;\n }\n pagination.offset = 0;\n return;\n }\n\n const diff = pagination.offset - pagination.limit;\n if (diff >= 0) {\n pagination.offset = diff;\n return;\n }\n\n pagination.offset = Math.floor(pagination.total/pagination.limit) * pagination.limit;\n };\n\n arrowDown.addEventListener('click', () => {\n paginate('forward');\n paginateData();\n clearSelectedText();\n });\n\n arrowUp.addEventListener('click', () => {\n paginate('backward');\n paginateData();\n clearSelectedText();\n });\n\n if (legendConfig.position === 'left' || legendConfig.position === 'right') {\n arrowUp.setAttribute('class', 'up');\n arrowDown.setAttribute('class', 'down');\n paginateVerticalElement.append(arrowDown);\n paginateVerticalElement.append(arrowUp);\n } else {\n // bottom top\n arrowUp.setAttribute('class', 'left');\n arrowDown.setAttribute('class', 'right');\n paginateHorizontalLeftElement.append(arrowUp);\n paginateHorizontalRightElement.append(arrowDown);\n }\n\n }\n\n function clearSelectedText() {\n let selection;\n if (document.selection && document.selection.empty) {\n selection = document.selection;\n selection.empty();\n }\n else if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n }\n }\n}\n","import { escapeHtml } from '../../../utils/escape-html';\n\nexport default function (d, defaultTitleFormat, defaultValueFormat, color) {\n let text;\n let title;\n // Set config options or defaults\n const nameFormat = this.config.tooltip_format_name || function (name) { return name; };\n const titleFormat = this.config.tooltip_format_title || defaultTitleFormat;\n const valueFormat = this.config.tooltip_format_value || defaultValueFormat;\n\n // Reverse list to match legend\n for (let i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n if (!text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n let name = nameFormat(d[i].name);\n let value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n let bgcolor = this.levelColor ? this.levelColor(d[i].value) : color(d[i].id);\n if (value && !isNaN(value)) {\n text += \"\";\n if (name.indexOf('__tooltip_ignore_name_field__') === -1) {\n text += \"\";\n }\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + escapeHtml(title) + \"
\" + escapeHtml(name) + \"\" + escapeHtml(value) + \"
\";\n}\n","export default function calculateRange(matrix) {\n const newValues = matrix.slice(1).map(d => d.map((e, i) => {\n if (typeof e === 'number') {\n if (i === 1) {\n return e - d[i + 1];\n }\n }\n return e;\n }));\n return newValues;\n}","export function calculateSumForPercents(matrix) {\n const sumArray = [];\n matrix.slice(1).forEach((d, i) => {\n d.forEach((e) => {\n if (typeof e === 'number') {\n if (!sumArray[i]) {\n sumArray[i] = e;\n return sumArray[i];\n }\n sumArray[i] += e;\n }\n return sumArray[i];\n });\n });\n return sumArray;\n}\n\nexport function calculatePercents(matrix, sumArray) {\n const newValues = matrix.slice(1).map((d, i) => d.map((e) => {\n if (typeof e === 'number') {\n return (e / sumArray[i]) * 100;\n }\n return e;\n }));\n return newValues;\n}\n","import { escapeHtml } from '../../utils/escape-html';\nimport renderDownloadButton from '../../utils/render-download-btn';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default {\n render: function(text){\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n const msg = document.createElement('span');\n\n const titleContainer = document.createElement('div');\n const subtitleContainer = document.createElement('div');\n const notesContainer = document.createElement('div');\n\n outer.className = this.config.theme + ' keen-dataviz-box';\n inner.className = this.config.theme + '-message';\n\n // Create title and notes for message\n titleContainer.className = this.config.theme + '-title';\n titleContainer.innerHTML = escapeHtml(this.config.title || '');\n subtitleContainer.className = this.config.theme + '-subtitle';\n subtitleContainer.innerHTML = escapeHtml(this.config.subtitle || '');\n notesContainer.className = this.config.theme + '-notes';\n notesContainer.innerHTML = escapeHtml(this.config.notes || '');\n\n msg.innerHTML = escapeHtml(text) || '';\n inner.appendChild(msg);\n\n if (this.config.title && this.config.showTitle) {\n outer.appendChild(titleContainer);\n }\n\n if (this.config.subtitle) {\n outer.appendChild(subtitleContainer);\n }\n\n outer.appendChild(inner);\n\n if (this.config.notes) {\n outer.appendChild(notesContainer);\n }\n\n if (this.config.ui\n && this.config.ui.buttons\n && this.config.ui.buttons.download\n && this.config.ui.buttons.download.type) {\n renderDownloadButton({\n element: this.el(),\n data: escapeHtml(text) || '',\n type: this.config.ui.buttons.download.type,\n label: this.config.ui.buttons.download.label,\n })\n }\n\n if (this.config.utils\n && this.config.utils.clickToCopyToClipboard) {\n titleContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n notesContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n msg.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n\n this.el().innerHTML = '';\n this.el().appendChild(outer);\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import exportImage from './export-svg';\nimport exportData from './export-data';\n\nexport default function downloadResults(obj) {\n const { event, type, data } = obj;\n event.preventDefault();\n const supportedFormats = ['json', 'csv', 'jpg', 'jpeg', 'png'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = '';\n let content = '';\n\n if (format === 'png') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n });\n return;\n }\n\n if (format === 'jpg' || format === 'jpeg') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n quality: 1,\n bgcolor: '#fff',\n });\n return;\n }\n\n if (format === 'json') {\n exportData({ type: format, data });\n }\n\n if (format === 'csv') {\n exportData({ type: format, data });\n }\n}\n","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { prettyNumber } from '../../utils/pretty-number';\nimport { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nfunction formatExtractionData(res, prop) {\n const { query, result } = res;\n const formattedResult = [];\n if (query.analysis_type !== 'extraction') throw new Error('Analysis type is not an extraction!');\n if (Array.isArray(result)) {\n result.forEach((item) => {\n const itemProp = prop.split('.').reduce((acc, val) => (acc && acc[val]) || null, item);\n const obj = {\n query,\n result: itemProp,\n };\n formattedResult.push(obj);\n });\n }\n return formattedResult;\n}\n\nexport default {\n render: function(){\n let color = this.config.colors[0];\n const theme = this.config.theme;\n const title = this.config.title;\n const subtitle = this.config.subtitle;\n const opts = this.config;\n let value = '-';\n let prevValue= '';\n let html = '';\n let prefix = '';\n let suffix = '';\n let formattedNum;\n let flexDifferenceStyle = '';\n let resultDifference = '';\n let differenceStyle = '';\n let smallerValue = '';\n const { results, previousResults, isExtraction, comparedProp } = this.config;\n if(results && previousResults){\n flexDifferenceStyle = previousResults ? ' metric-comparison' : '';\n smallerValue = previousResults && title ? '-smaller' : '';\n resultDifference = results.result - previousResults.result;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n if (this.data() && this.data()[1] && this.data()[1][1] && typeof this.data()[1][1] === 'number') {\n value = this.data()[1][1];\n }\n\n if (isExtraction && comparedProp) {\n const formattedResult = formatExtractionData(results, comparedProp);\n \n value = formattedResult[0].result;\n prevValue = formattedResult[1].result;\n\n flexDifferenceStyle = prevValue ? ' metric-comparison' : '';\n smallerValue = prevValue && title ? '-smaller' : '';\n resultDifference = value - prevValue;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n formattedNum = value;\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(value)) ) {\n formattedNum = prettyNumber(value);\n if(results && previousResults){\n resultDifference = prettyNumber(resultDifference);\n }\n }\n\n if (opts['prefix']) {\n prefix = '' + opts['prefix'] + '';\n }\n if (opts['suffix']) {\n suffix = '' + opts['suffix'] + '';\n }\n html += '
';\n html += '
';\n if (results && previousResults) {\n html += '
' + escapeHtml(resultDifference) + '
';\n }\n if (isExtraction && comparedProp) {\n if (value && prevValue) {\n html += '
' + escapeHtml(resultDifference) + '
';\n html += '' + prevValue + '';\n } else {\n html += '

No data to display

';\n }\n }\n html += '
' + prefix + escapeHtml(formattedNum) + suffix + '
';\n if (title) {\n html += '
' + escapeHtml(title) + '
';\n }\n if (subtitle) {\n html += '
' + escapeHtml(subtitle) + '
';\n }\n html += '
';\n html += '
';\n\n this.el().innerHTML = html;\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const resultClassName = `.${theme}-metric-value${smallerValue}`;\n document.querySelector(resultClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n\n if (results && previousResults) {\n const previousResultsClassName = `.${theme}-metric${differenceStyle}`;\n document.querySelector(previousResultsClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n }\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nlet currentPage;\nfunction _generateTableRows(datavizInstance, dataset) {\n let html = '';\n const defaultConfig = {\n page: 1,\n limit: 0,\n arrows: true\n };\n let customConfig = {};\n if (datavizInstance.config.table && datavizInstance.config.table.pagination) {\n customConfig = datavizInstance.config.table.pagination;\n }\n const config = {\n ...defaultConfig,\n ...customConfig\n };\n\n if (!currentPage){\n currentPage = config.page;\n }\n\n let datasetPaginated;\n let pages = 0;\n if (config.limit === 0) {\n datasetPaginated = dataset.slice(1); // remove header\n } else {\n const start = config.limit * (currentPage - 1) + 1;\n const end = start + config.limit;\n datasetPaginated = dataset.slice(start, end);\n pages = Math.ceil((dataset.length - 1) / config.limit);\n }\n\n let columnsArray = datavizInstance.config.table.columns ?\n datavizInstance.config.table.columns :\n datavizInstance.dataset.matrix[0];\n\n const colNamesToMap = {};\n const {\n mapValues,\n mapDates,\n } = datavizInstance.config.table;\n for (let key in mapValues){\n colNamesToMap[columnsArray.indexOf(key)] = key;\n }\n\n for (let row of datasetPaginated) {\n html += '';\n for (let [index, rowColValue] of row.entries()) {\n if (mapDates && rowColValue instanceof Date) {\n rowColValue = mapDates(rowColValue);\n }\n\n let rowColValueEscaped = escapeHtml(rowColValue);\n if(colNamesToMap[index]){\n html += `${mapValues[colNamesToMap[index]](rowColValueEscaped)}`;\n continue;\n }\n html += `${rowColValueEscaped}`\n }\n html += '';\n }\n\n if (pages > 1){\n html += ``;\n let pageNumber = 1;\n const prevPage = (currentPage === 1) ? 1 : (currentPage - 1);\n const nextPage = (currentPage === pages) ? pages : (currentPage + 1);\n if (config.arrows){\n html += `«`;\n }\n while (pageNumber <= pages){\n html += `${pageNumber}`;\n pageNumber++;\n }\n if (config.arrows){\n html += `»`;\n }\n html += '';\n }\n\n return html;\n}\n\nfunction _generateTableHeader(datavizInstance, dataset) {\n let html = '';\n let fieldNumber = -1;\n const tableConfig = datavizInstance.config.table;\n const columnNames =\n (tableConfig && tableConfig.columns)\n || dataset[0];\n for (let colName of columnNames) {\n let colNameEscaped = escapeHtml(colName);\n fieldNumber +=1;\n html += `${colNameEscaped}`;\n }\n return html;\n}\n\n\n const render = function() {\n const dataset = this.dataset.matrix;\n\n const el = this.el();\n const theme = this.config.theme;\n const datavizInstance = this;\n\n let html = '';\n\n const isEmpty = dataset.length === 1 && dataset[0].length === 0;\n if (isEmpty) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n // Open wrapper\n html += `
`;\n\n // Static, scrollable table\n html += ``;\n html += '';\n html += '';\n html += _generateTableHeader(datavizInstance, dataset);\n html += '';\n html += '';\n // Table data\n html += '';\n html += _generateTableRows(datavizInstance, dataset);\n html += '';\n html += '
';\n/* */\n // Close wrapper\n html += '
';\n\n // Inject HTML string\n el.querySelector(`.${theme}-rendering`).innerHTML = html;\n\n el\n .querySelectorAll(`.${theme}-rendering th`)\n .forEach((item) => {\n item.addEventListener('click', (event) => {\n let sortOrder = event.target.getAttribute('order') || 'asc';\n let fieldNumber = event.target.getAttribute('fieldNumber');\n let checker = function (a, b) {\n let sortOrderNumber = (sortOrder === 'asc') ? 1 : -1;\n\n if (typeof a[fieldNumber] === 'string') {\n let nameA = a[fieldNumber].toUpperCase(); // ignore upper and lowercase\n let nameB = b[fieldNumber].toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1 * sortOrderNumber;\n }\n if (nameA > nameB) {\n return 1* sortOrderNumber;\n }\n\n // names must be equal\n return 0;\n }\n return (a[fieldNumber] - b[fieldNumber]) * sortOrderNumber;\n };\n\n if (sortOrder === 'asc') {\n sortOrder = 'desc';\n } else {\n sortOrder = 'asc'\n }\n event.target.setAttribute('order', sortOrder);\n\n const first = this.dataset.matrix.shift();\n this.dataset.matrix.sort(checker);\n this.dataset.matrix.unshift(first);\n\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n });\n });\n\n\n const attachBtnEventListeners = () => {\n el.querySelectorAll('.btn').forEach(btn => {\n btn.addEventListener('click', (event) => {\n currentPage = parseInt(event.target.getAttribute('data-page'));\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n }, true);\n });\n };\n\n attachBtnEventListeners(datavizInstance, el, theme);\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const tableClass = `.${theme}-table-dataset`;\n document.querySelector(tableClass)\n .addEventListener('click', (e) => {\n const { nodeName, innerText } = e.target;\n if (nodeName === 'TD') {\n copyToClipboard(innerText, e);\n }\n });\n }\n };\n\n\n\nconst update = function(){\n // no special update handling\n this.render();\n };\n\nconst destroy= function(){};\n\nexport default { render, update, destroy };\n","export default {\n render: function(){\n let html = '';\n const artifacts = this.view._artifacts.spinner = {};\n\n // Build DOM element\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n this.el().innerHTML = html;\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts.spinner) {\n if (this.view._artifacts.spinner.interval) {\n clearInterval(this.view._artifacts.spinner.interval);\n }\n this.view._artifacts.spinner.radius = 0;\n try {\n delete this.view._artifacts.spinner;\n }\n catch (e) {\n this.view._artifacts.spinner = undefined;\n }\n }\n this.el().innerHTML = '';\n }\n};\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 30, left: 200 };\n let yMarginElement = 0;\n if(marginBetweenSteps){\n yMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if (countingMethod === \"relative\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth =\n (prevElemWidth * d[1]) / matrix[i][1]);\n percent = ((d[1] / matrix[i][1]) * 100).toFixed(decimals);\n }\n if (countingMethod === \"absolute\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth = (svgWidth * d[1]) / matrix[1][1]);\n percent = ((d[1] / matrix[1][1]) * 100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n \n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('x2', (d) => { return d.points[1].x + margin.left; })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('x2', polygons[polygons.length-1].points[2].x + margin.left)\n .attr('y2', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2)\n + (margin.left * 0.9);\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 16\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 12\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top;\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement - 5;\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 60, left: 200 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n const yMarginElement = elemHeight * 0.3;\n const shadowCut = (yMarginElement * 2.5);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = prevElemWidth * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = svgWidth * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[3].x,\n y: d.points[3].y\n },\n {\n x: d.points[2].x,\n y: d.points[2].y\n },\n {\n x: effect3d === 'left'\n ? d.points[2].x\n : d.points[2].x - shadowCut < svgWidth/2\n ? svgWidth/2 + 5\n : d.points[2].x - shadowCut,\n y: effect3d === 'left'\n ? d.points[2].y\n : d.points[2].y + (yMarginElement/1.5)\n },\n {\n x: effect3d === 'right'\n ? d.points[3].x\n : d.points[3].x + shadowCut > svgWidth/2\n ? svgWidth/2 - 5\n : d.points[3].x + shadowCut,\n y: effect3d === 'right'\n ? d.points[3].y\n : d.points[3].y + (yMarginElement/1.5)\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('x2', (d, i) => {\n if(i === 0){\n return d.points[1].x + margin.left;\n }\n return d.points[1].x + margin.left - shadowCut;\n })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('x2', polygons[polygons.length-1].points[2].x\n + margin.left - shadowCut )\n .attr('y2', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5 + (yMarginElement/4)\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2) + 130;\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 18\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 3\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n let xMarginElement = 0;\n if(marginBetweenSteps){\n xMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined'\n || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left - (xMarginElement/2))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/2))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight + (margin.bottom * 0.5) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', (d) => {\n if(d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) > svgHeight + margin.bottom - 40 + margin.top){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n return d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n const xMarginElement = elemWidth * 0.3;\n const shadowCut = (xMarginElement/1.5);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[0].x,\n y: d.points[0].y\n },\n {\n x: d.points[1].x,\n y: d.points[1].y\n },\n {\n x: effect3d === 'top'\n ? d.points[1].x\n : d.points[1].x - shadowCut,\n y: effect3d === 'top'\n ? d.points[1].y\n : d.points[1].y - xMarginElement < svgHeight/2\n ? svgHeight/2 + 5\n : d.points[1].y - xMarginElement\n },\n {\n x: effect3d === 'bottom'\n ? d.points[0].x\n : d.points[0].x - shadowCut,\n y: effect3d === 'bottom'\n ? d.points[0].y\n : d.points[0].y + xMarginElement > svgHeight/2\n ? svgHeight/2 - 5\n : d.points[0].y + xMarginElement\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left + (xMarginElement/4))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/4))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', svgHeight + (margin.bottom * 0.4) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', (d) => {\n if(d.points[2].y + (elemWidth/4) >\n svgHeight + margin.bottom - 40){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n if(d.points[2].y + (elemWidth/4) < d.points[1].y){\n return d.points[1].y + 20 + margin.top;\n }\n return d.points[2].y + (elemWidth/4) + 10 + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","/* eslint-env browser */\nimport c3 from 'c3';\nimport { each } from '../../utils/each';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class MetricCombo {\n render() {\n const {\n container,\n metricResults,\n title,\n showTitle,\n subtitle,\n tooltip,\n utils,\n } = this.config;\n\n const colors = ['#c3c4cc'];\n const columns = [];\n columns[0] = [];\n each(this.dataset.selectColumn(0), (c, i) => {\n let cell;\n if (i > 0) {\n cell = new Date(c);\n }\n columns[0][i] = cell;\n });\n columns[0][0] = 'x';\n\n each(this.data()[0], (c, i) => {\n if (i > 0) {\n columns.push(this.dataset.selectColumn(i));\n }\n });\n\n const prevResult = (metricResults && metricResults.previous && metricResults.previous.result)\n || 0;\n const currResult = (metricResults && metricResults.current && metricResults.current.result)\n || 0;\n const count = currResult - prevResult;\n const percentDifference = prevResult === 0 ? '-' : prettyNumber(Math.round((count / prevResult) * 100));\n let labelClass = 'keen-dataviz-metric-green';\n let iconClass = 'arrow-green';\n\n if (percentDifference < 0) {\n labelClass = 'keen-dataviz-metric-red';\n iconClass = 'arrow-red';\n }\n\n const containerTitle = (showTitle && title) ? `
${title}
` : '';\n const containerSubtitle = subtitle ? `
${subtitle}
` : '';\n const containerElement = document.querySelector(container);\n containerElement.innerHTML = `\n
\n
\n
\n ${containerTitle}\n ${containerSubtitle}\n
${percentDifference} %
\n
${prettyNumber(count)}
\n
\n
\n
\n
\n
\n
`;\n const chartRoot = containerElement.querySelector('.c3-chart');\n const chart = c3.generate({\n bindto: chartRoot,\n color: {\n pattern: colors,\n },\n title,\n legend: {\n show: false,\n },\n data: {\n x: 'x',\n columns,\n type: 'area-spline',\n selection: {\n draggable: false,\n enabled: true,\n multiple: true,\n },\n },\n point: {\n r: 0,\n focus: {\n expand: {\n r: 5,\n enabled: true,\n },\n },\n select: {\n r: 5,\n enabled: true,\n },\n },\n axis: {\n y: {\n show: false,\n },\n x: {\n show: false,\n },\n },\n grid: {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n },\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: -4,\n },\n tooltip,\n });\n\n if (utils && utils.clickToCopyToClipboard) {\n const currentCount = document.querySelector('.current-count').innerText;\n document.querySelector('.keen-dataviz-metric-combo')\n .addEventListener('click', e => copyToClipboard(currentCount, e));\n }\n }\n\n update() {\n this.destroy();\n this.render();\n }\n\n destroy() {\n const { container } = this.config;\n const containerElement = document.querySelector(container);\n const chartContainer = containerElement.querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport Rangeable from 'rangeable';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Heatmap {\n render() {\n const {\n colors,\n container,\n heatmap: { showSlider, simpleTooltip },\n } = this.config;\n const {\n matrix,\n meta,\n } = this.dataset;\n const margin = {\n top: 10,\n right: 10,\n bottom: 50,\n left: 50,\n };\n const baseWidth = 600;\n const baseHeight = 600;\n const heatmapContainer = d3.select(container);\n const containerWidth = parseInt(heatmapContainer.style('width'), 10) || baseWidth;\n const containerHeight = parseInt(heatmapContainer.style('height'), 10) || baseHeight;\n const chartContainer = this.el().querySelector('.c3-chart');\n const svgWidth = containerWidth - margin.right - margin.left;\n const svgHeight = containerHeight - margin.top - margin.bottom;\n\n const xLabel = new Set();\n const yLabel = new Set();\n\n const formatData = () => {\n const dateFormat = d3.timeFormat('%B %d');\n const timeFormat = d3.timeFormat('%H:%M');\n const arr = [];\n matrix.forEach((element) => {\n if (meta.type === 'heatmap') {\n if (typeof element[0][2] === 'number') {\n const obj = {\n x: element[0][0],\n y: element[0][1],\n value: element[0][2],\n };\n arr.push(obj);\n }\n } else {\n const timestamp = Date.parse(element[0]);\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(timestamp)) {\n const obj = {\n x: dateFormat(new Date(element[0])),\n y: timeFormat(new Date(element[0])),\n value: element[1],\n };\n arr.push(obj);\n }\n }\n });\n return arr;\n };\n\n const formattedData = formatData();\n\n formattedData.forEach((item) => {\n xLabel.add(item.x);\n yLabel.add(item.y);\n });\n\n const refValue = formattedData[0].value;\n const minRange = formattedData\n .reduce((min, curr) => (curr.value < min ? curr.value : min), refValue);\n const maxRange = formattedData\n .reduce((max, curr) => (curr.value > max ? curr.value : max), refValue);\n\n const getColor = () => {\n const defaultColor = '#00BBDE';\n const baseColor = colors[0];\n let rgb = d3.rgb(defaultColor);\n if (d3.color(baseColor)) {\n rgb = d3.rgb(baseColor);\n }\n return rgb;\n };\n\n const getColorAlpha = d3.scaleLinear()\n .domain([0, d3.max(formattedData, d => d.value)])\n .range([0, 1]);\n\n const convertRGBAtoRGB = (color, bg = [255, 255, 255]) => {\n const opacity = color[3];\n\n return [Math.floor(((1 - opacity) * bg[0]) + (opacity * color[0]) + 0.5),\n Math.floor(((1 - opacity) * bg[1]) + (opacity * color[1]) + 0.5),\n Math.floor(((1 - opacity) * bg[2]) + (opacity * color[2]) + 0.5)];\n };\n\n const getTileColor = (value) => {\n const alpha = getColorAlpha(value);\n const rgb = getColor();\n const solidColor = convertRGBAtoRGB([rgb.r, rgb.g, rgb.b, alpha]);\n const color = `rgb(${solidColor[0]}, ${solidColor[1]}, ${solidColor[2]})`;\n return color;\n };\n\n const svg = d3.select(chartContainer)\n .append('svg')\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${containerWidth} ${containerHeight}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr(\n 'transform',\n `translate(${margin.left},${margin.top})`,\n );\n\n if (showSlider) {\n // eslint-disable-next-line no-unused-vars\n const rangeableInput = d3.select(container)\n .append('input')\n .attr('type', 'range')\n .attr('class', 'keen-dataviz-slider');\n\n const handleSliderChange = (data) => {\n const rects = svg.selectAll('rect');\n const [min, max] = data;\n\n rects.each((d, i, nodes) => {\n d3.select(nodes[i])\n .style('visibility', () => ((d.value > max || d.value < min) ? 'hidden' : 'visible'));\n });\n };\n\n // eslint-disable-next-line no-unused-vars\n const rangeable = new Rangeable('.keen-dataviz-slider', {\n multiple: true,\n min: minRange,\n max: maxRange,\n value: [minRange, maxRange],\n onChange: data => handleSliderChange(data),\n });\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${getColor()};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${getColor()} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${getColor()};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement('style');\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector('script');\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const xLabelBase = 5;\n const yLabelBase = 10;\n\n const getAxisLabelRatio = (base, labelSize) => Math.floor(labelSize / base) + 1;\n const xAxis = d3.scaleBand()\n .range([0, svgWidth])\n .domain([...xLabel])\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .attr('transform', `translate(0, ${svgHeight})`)\n .call(d3.axisBottom(xAxis).tickSize(0))\n .selectAll('text')\n .attr('dy', '1em')\n .filter((d, i) => i % getAxisLabelRatio(xLabelBase, xLabel.size))\n .style('display', 'none');\n\n const yAxis = d3.scaleBand()\n .range([svgHeight, 0])\n .domain([...yLabel].sort())\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .call(d3.axisLeft(yAxis).tickSize(0))\n .selectAll('text')\n .filter((d, i) => i % getAxisLabelRatio(yLabelBase, yLabel.size))\n .style('display', 'none');\n\n const chartTooltip = d3.select(container)\n .append('div')\n .attr('class', 'keen-dataviz-tooltip')\n .style('opacity', 0)\n .style('background-color', 'white')\n .style('border', `2px solid ${getColor().toString()}`)\n .style('font-size', '14px')\n .style('padding', '2px 8px')\n .style('box-shadow', '2px 2px 4px rgba(0,0,0,0.25')\n .style('display', 'none')\n .style('position', 'fixed');\n\n const handleMouseOver = () => {\n d3.select(d3.event.target)\n .raise()\n .style('transition', 'transform 150ms ease-out')\n .style('outline', `1px solid ${getColor()}`)\n .style('transform', 'translate(0px, -4px)');\n\n chartTooltip\n .style('opacity', 1)\n .style('display', 'block');\n };\n\n const handleMouseMove = (d) => {\n let tooltipContent = `\n \n value:\n ${d.value}\n `;\n if (!simpleTooltip) {\n tooltipContent = `\n \n xAxis:\n ${d.x}\n \n \n yAxis:\n ${d.y}\n \n ${tooltipContent}\n `;\n }\n chartTooltip\n .html(`\n \n ${tooltipContent}\n
\n `)\n .style('left', `${d3.event.clientX + 10}px`)\n .style('top', `${d3.event.clientY + 10}px`);\n };\n\n const handleMouseLeave = () => {\n d3.select(d3.event.target)\n .style('outline', 'none')\n .style('transform', 'none');\n\n chartTooltip\n .style('opacity', 0)\n .style('display', 'none');\n };\n\n const handleClick = d => copyToClipboard(d.value);\n\n svg.selectAll()\n .data(formattedData, d => `${d.x}:${d.y}`)\n .enter()\n .append('rect')\n .attr('x', d => xAxis(d.x))\n .attr('y', d => yAxis(d.y))\n .attr('width', xAxis.bandwidth())\n .attr('height', yAxis.bandwidth())\n .style('fill', d => getTileColor(d.value))\n .style('cursor', 'pointer')\n .on('mouseover', handleMouseOver)\n .on('mousemove', handleMouseMove)\n .on('mouseleave', handleMouseLeave)\n .on('click', handleClick);\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = this.el().querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from \"d3\";\nimport Rangeable from \"rangeable\";\nimport { prettyNumber } from \"../../utils/pretty-number\";\nimport copyToClipboard from \"../../utils/copy-to-clipboard\";\n\nexport default class Choropleth {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n utils,\n title,\n choropleth: {\n map,\n borders: { show, size, color },\n showSlider\n }\n } = this.config;\n const opts = this.config;\n const choroplethContainer = d3.select(container);\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n const width = Number(choroplethContainer.style(\"width\").slice(0, -2));\n const height = Number(choroplethContainer.style(\"height\").slice(0, -2));\n let heightChanges = 0;\n if (title) heightChanges += 31;\n if (showSlider) heightChanges += 20;\n const chart = chartContainer\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height - heightChanges);\n\n const onlyValues = matrix.slice(1).map(el => el[1]);\n let minVal = d3.min(onlyValues);\n const maxVal = d3.max(onlyValues);\n if(minVal === maxVal) minVal = 0;\n const lightColor = d3.hsl(colors[0]).brighter(1);\n lightColor.l = 0.95;\n const darkColor = colors[0];\n const ramp = d3\n .scaleLinear()\n .domain([minVal === undefined ? 0 : minVal, maxVal === undefined ? 0 : maxVal])\n .range([lightColor, darkColor]);\n\n d3.json(\n `https://cdn.jsdelivr.net/npm/keen-dataviz-maps@1.0.0/maps/${map}.json`\n ).then(data => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 5])\n .translateExtent([[0, 0], [width, height - 50]])\n .on(\"zoom\", zoomed);\n\n let projection;\n switch (map) {\n case \"world\":\n projection = d3.geoMercator().fitSize([width, height - 50], data);\n break;\n case \"us\":\n projection = d3\n .geoAlbersUsa()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n\n default:\n projection = d3\n .geoMercator()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n }\n\n const path = d3.geoPath().projection(projection);\n\n const usData = data.features.map(el => {\n const theOne = matrix.filter(d => d[0] === el.properties.name);\n if (theOne[0])\n return {\n ...el,\n properties: { ...el.properties, result: theOne[0][1] }\n };\n return {\n ...el,\n properties: { ...el.properties, result: 0 }\n };\n });\n\n if (showSlider) {\n const handleSliderChange = data => {\n const el = chart.selectAll(`.${elementName}`);\n const [min, max] = data;\n\n el.each((d, i, nodes) => {\n d3.select(nodes[i]).style(\"visibility\", () =>\n d.properties.result > max || d.properties.result < min\n ? \"hidden\"\n : \"visible\"\n );\n });\n };\n\n chartContainer\n .style(\"display\", \"flex\")\n .style(\"flex-direction\", \"column\")\n .style(\"justify-content\", \"center\");\n\n const rangeContainer = chartContainer\n .append(\"div\")\n .style(\"width\", \"95%\")\n .style(\"margin\", \"auto\");\n rangeContainer.append(\"input\").attr(\"id\", \"rangeSlider\");\n\n const rangeable = new Rangeable(\"#rangeSlider\", {\n type: \"double\",\n tooltips: true,\n min: 0,\n max: maxVal,\n onChange: data => handleSliderChange(data)\n });\n\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${colors[0]};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${colors[0]} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${colors[0]};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement(\"style\");\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector(\"script\");\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const elementName = map === \"world\" ? \"country\" : \"state\";\n\n chart\n .selectAll(\"path\")\n .data(usData)\n .enter()\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"class\", elementName)\n .attr(\n \"id\",\n d =>\n `${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .attr(\"cursor\", \"pointer\")\n .on(\"mouseover\", handleMouseOver)\n .on(\"mousemove\", handleMouseMove)\n .on(\"mouseout\", handleMouseOut);\n\n //borders\n if (show) {\n chart\n .selectAll(`.${elementName}`)\n .style(\"stroke\", color)\n .style(\"stroke-width\", size);\n }\n\n //tooltip\n const tooltip = d3\n .select(\".c3-chart\")\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"c3-tooltip-container\")\n .style(\"display\", \"none\")\n .style(\"position\", \"fixed\");\n\n //hover handling\n function handleMouseOver(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(1.2 * maxVal))\n .style(\"stroke-width\", 1.5 * size);\n\n tooltip.style(\"opacity\", 1).style(\"display\", \"block\");\n }\n\n function handleMouseMove(d) {\n let result = d.properties.result;\n if (\n (typeof opts[\"prettyNumber\"] === \"undefined\" ||\n opts[\"prettyNumber\"] === true) &&\n !isNaN(parseInt(d.properties.result))\n ) {\n result = prettyNumber(d.properties.result);\n }\n tooltip\n .html(\n `\n \n \n \n \n \n \n \n
${d.properties.name}
${result}
\n `\n )\n .style(\"left\", `${d3.event.clientX + 10}px`)\n .style(\"top\", `${d3.event.clientY + 10}px`);\n }\n function handleMouseOut(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .style(\"stroke-width\", size);\n\n tooltip.style(\"opacity\", 0).style(\"display\", \"none\");\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll(`.${elementName}`);\n\n label.on(\"click\", handleClickToCopy);\n\n function handleClickToCopy(data) {\n const {\n properties: { result }\n } = data;\n copyToClipboard(result, d3.event);\n }\n }\n function zoomed() {\n chart\n .selectAll(`.${elementName}`)\n .attr(\"transform\", d3.event.transform);\n }\n chart.call(zoom);\n chart.call(zoom).on(\"mousedown.zoom\", null);\n });\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n chartContainer.remove();\n }\n}\n","import copyToClipboard from './copy-to-clipboard';\n\nfunction removeClassWithTimeOut(element, className = 'copied', ms = 1000) {\n setTimeout(() => {\n element.classList.remove(className);\n }, ms);\n}\n\nfunction handleCopyToClipboard(event) {\n const { target, target: { nodeName } } = event;\n\n let value;\n if (nodeName === 'DD') {\n value = target.innerText;\n if (!target.classList.contains('copied')) {\n target.classList.add('copied');\n removeClassWithTimeOut(target);\n }\n }\n if (nodeName === 'DT') {\n value = target.nextSibling.innerText;\n if (!target.nextSibling.classList.contains('copied')) {\n target.nextSibling.classList.add('copied');\n removeClassWithTimeOut(target.nextSibling);\n }\n }\n\n copyToClipboard(value);\n}\n\nexport default function renderExecutionMetadata({\n element,\n data,\n} = {}) {\n const dataList = document.createElement('dl');\n dataList.classList = 'keen-dataviz-execution-meta';\n\n if (Object.keys(data).length) {\n Object.keys(data).forEach((item) => {\n const dt = document.createElement('dt');\n dt.innerText = item.replace(/_/g, ' ');\n dt.addEventListener('click', e => handleCopyToClipboard(e));\n\n const dd = document.createElement('dd');\n dd.innerText = data[item];\n dd.addEventListener('click', e => handleCopyToClipboard(e));\n\n dataList.append(dt);\n dataList.append(dd);\n });\n } else {\n dataList.innerText = 'No execution metadata available';\n }\n\n element.append(dataList);\n}\n","import autocollector from './autocollector';\nimport modern from './modern';\nimport dracula from './dracula';\n\nexport default {\n autocollector,\n modern,\n dracula,\n};","const palette = {\n colors: [\n '#5E77FF',\n '#9C60FE',\n '#F162FE',\n '#FD65B7',\n '#FD6768',\n '#FDB86A',\n '#F2FC6C',\n '#A5FC6E',\n '#71FB85',\n '#73FBD0',\n '#76DDFA',\n '#76f4fa',\n '#bb76fa',\n '#fa76bf'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#45B2E8',\n '#D9540D',\n '#2CAB72',\n '#2C4BAB',\n '#EDDD02',\n '#E84545',\n '#E845CE',\n '#5FCEC9',\n '#E89F45',\n '#28E43F',\n '#B765C0',\n '#458AE8',\n '#AB2C2C',\n '#AB2C75',\n '#27E5FF',\n '#7168F2',\n '#FF932B',\n '#855D00',\n '#ACE845',\n '#1C91B4'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#8be9fd',\n '#50fa7b',\n '#ffb86c',\n '#ff79c6',\n '#bd93f9',\n '#ff5555',\n '#f1fa8c',\n ]\n};\n\nexport default palette;","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n return constructor.resolve(callback()).then(function() {\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","import promiseFinally from './finally';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!arr || typeof arr.length === 'undefined')\n throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(values) {\n return new Promise(function(resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n (typeof setImmediate === 'function' &&\n function(fn) {\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","import Promise from './index';\nimport promiseFinally from './finally';\n\n/** @suppress {undefinedVars} */\nvar globalNS = (function() {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n})();\n\nif (!('Promise' in globalNS)) {\n globalNS['Promise'] = Promise;\n} else if (!globalNS.Promise.prototype['finally']) {\n globalNS.Promise.prototype['finally'] = promiseFinally;\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/keen-dataviz.js b/dist/keen-dataviz.js index 3cd0e12..b8ca589 100644 --- a/dist/keen-dataviz.js +++ b/dist/keen-dataviz.js @@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 20); +/******/ return __webpack_require__(__webpack_require__.s = 21); /******/ }) /************************************************************************/ /******/ ([ @@ -32228,27 +32228,27 @@ var _append = __webpack_require__(8); var append = _interopRequireWildcard(_append); -var _delete = __webpack_require__(22); +var _delete = __webpack_require__(23); var del = _interopRequireWildcard(_delete); -var _filter = __webpack_require__(23); +var _filter = __webpack_require__(24); var filter = _interopRequireWildcard(_filter); -var _insert = __webpack_require__(24); +var _insert = __webpack_require__(25); var insert = _interopRequireWildcard(_insert); -var _select = __webpack_require__(25); +var _select = __webpack_require__(26); var select = _interopRequireWildcard(_select); -var _sort = __webpack_require__(26); +var _sort = __webpack_require__(27); var sort = _interopRequireWildcard(_sort); -var _update = __webpack_require__(27); +var _update = __webpack_require__(28); var update = _interopRequireWildcard(_update); @@ -32258,7 +32258,7 @@ var _analyses2 = _interopRequireDefault(_analyses); var _extend = __webpack_require__(5); -var _parsers = __webpack_require__(28); +var _parsers = __webpack_require__(29); var _parsers2 = _interopRequireDefault(_parsers); @@ -32454,6 +32454,40 @@ exports.default = { "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +exports.flatten = flatten; +// Pure awesomeness by Will Rayner (penguinboy) +// https://gist.github.com/penguinboy/762197 + +function flatten(ob) { + var toReturn = {}; + for (var i in ob) { + if (!ob.hasOwnProperty(i)) continue; + if (_typeof(ob[i]) == 'object' && ob[i] !== null) { + var flatObject = flatten(ob[i]); + for (var x in flatObject) { + if (!flatObject.hasOwnProperty(x)) continue; + toReturn[i + '.' + x] = flatObject[x]; + } + } else { + toReturn[i] = ob[i]; + } + } + return toReturn; +}; + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); @@ -32474,7 +32508,7 @@ function stripHtmlTags(inputString) { } /***/ }), -/* 15 */ +/* 16 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32504,7 +32538,7 @@ function extendDeep(target) { } /***/ }), -/* 16 */ +/* 17 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32515,7 +32549,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = renderDownloadButton; -var _downloadResults = __webpack_require__(40); +var _downloadResults = __webpack_require__(41); var _downloadResults2 = _interopRequireDefault(_downloadResults); @@ -32548,7 +32582,7 @@ function renderDownloadButton() { }; /***/ }), -/* 17 */ +/* 18 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32559,11 +32593,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = exportImage; -var _domToImage = __webpack_require__(41); +var _domToImage = __webpack_require__(42); var _domToImage2 = _interopRequireDefault(_domToImage); -var _fileSaver = __webpack_require__(42); +var _fileSaver = __webpack_require__(43); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -32587,7 +32621,7 @@ function exportImage(obj) { } /***/ }), -/* 18 */ +/* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32646,7 +32680,7 @@ function exportData(obj) { } /***/ }), -/* 19 */ +/* 20 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {/*! @@ -32663,7 +32697,7 @@ function exportData(obj) { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(7))) /***/ }), -/* 20 */ +/* 21 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32674,7 +32708,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.Dataset = exports.Dataviz = exports.keenGlobals = exports.extendKeenGlobalObject = undefined; -var _index = __webpack_require__(21); +var _index = __webpack_require__(22); Object.defineProperty(exports, 'Dataviz', { enumerable: true, @@ -32715,7 +32749,7 @@ exports.default = _index.Dataviz; /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(7))) /***/ }), -/* 21 */ +/* 22 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32751,11 +32785,11 @@ var _c = __webpack_require__(10); var _c2 = _interopRequireDefault(_c); -var _package = __webpack_require__(31); +var _package = __webpack_require__(32); var _package2 = _interopRequireDefault(_package); -var _data = __webpack_require__(32); +var _data = __webpack_require__(33); var _data2 = _interopRequireDefault(_data); @@ -32765,29 +32799,29 @@ var _assertDateString = __webpack_require__(11); var _assertDateString2 = _interopRequireDefault(_assertDateString); -var _stripHtmlTags = __webpack_require__(14); +var _stripHtmlTags = __webpack_require__(15); var _escapeHtml = __webpack_require__(4); -var _libraries = __webpack_require__(33); +var _libraries = __webpack_require__(34); var _libraries2 = _interopRequireDefault(_libraries); -var _extendDeep = __webpack_require__(15); +var _extendDeep = __webpack_require__(16); -var _exportSvg = __webpack_require__(17); +var _exportSvg = __webpack_require__(18); var _exportSvg2 = _interopRequireDefault(_exportSvg); -var _exportData = __webpack_require__(18); +var _exportData = __webpack_require__(19); var _exportData2 = _interopRequireDefault(_exportData); -var _renderDownloadBtn = __webpack_require__(16); +var _renderDownloadBtn = __webpack_require__(17); var _renderDownloadBtn2 = _interopRequireDefault(_renderDownloadBtn); -var _renderExecutionMetadata = __webpack_require__(53); +var _renderExecutionMetadata = __webpack_require__(54); var _renderExecutionMetadata2 = _interopRequireDefault(_renderExecutionMetadata); @@ -32795,7 +32829,7 @@ var _copyToClipboard = __webpack_require__(1); var _copyToClipboard2 = _interopRequireDefault(_copyToClipboard); -var _index = __webpack_require__(54); +var _index = __webpack_require__(55); var _index2 = _interopRequireDefault(_index); @@ -33791,7 +33825,7 @@ function domReady(fn) { exports.default = Dataviz; /***/ }), -/* 22 */ +/* 23 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -33827,7 +33861,7 @@ function deleteRow(q) { } /***/ }), -/* 23 */ +/* 24 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -33877,7 +33911,7 @@ function filterRows(fn) { } /***/ }), -/* 24 */ +/* 25 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -33979,7 +34013,7 @@ function insertRow(index, str, input) { } /***/ }), -/* 25 */ +/* 26 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34016,7 +34050,7 @@ function selectRow(q) { } /***/ }), -/* 26 */ +/* 27 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34086,7 +34120,7 @@ function sortRows(str, comp) { } /***/ }), -/* 27 */ +/* 28 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34185,7 +34219,7 @@ function updateRow(q, input) { } /***/ }), -/* 28 */ +/* 29 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34198,10 +34232,12 @@ exports.default = initialize; var _each = __webpack_require__(0); -var _flatten = __webpack_require__(29); +var _flatten = __webpack_require__(14); var _object = __webpack_require__(30); +var _createExtractionKeys = __webpack_require__(31); + var Dataset = void 0; /* injected */ function initialize(lib) { @@ -34346,8 +34382,8 @@ function parseExtraction() { return function (res) { var datasetExtraction = new Dataset().type('extraction'); - // get keys of the Object, static schema - var names = Object.keys((0, _flatten.flatten)(res.result[0])); + var datasetKeys = (0, _createExtractionKeys.createExtractionKeys)(res.result); + var names = Array.from(datasetKeys); var tableConfig = config && config.table; if (tableConfig && tableConfig.schema === 'dynamic') { @@ -34421,7 +34457,7 @@ var parsers = { }; /***/ }), -/* 29 */ +/* 30 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34430,32 +34466,13 @@ var parsers = { Object.defineProperty(exports, "__esModule", { value: true }); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.flatten = flatten; -// Pure awesomeness by Will Rayner (penguinboy) -// https://gist.github.com/penguinboy/762197 - -function flatten(ob) { - var toReturn = {}; - for (var i in ob) { - if (!ob.hasOwnProperty(i)) continue; - if (_typeof(ob[i]) == 'object' && ob[i] !== null) { - var flatObject = flatten(ob[i]); - for (var x in flatObject) { - if (!flatObject.hasOwnProperty(x)) continue; - toReturn[i + '.' + x] = flatObject[x]; - } - } else { - toReturn[i] = ob[i]; - } - } - return toReturn; -}; +exports.valueAtDeepKey = valueAtDeepKey; +function valueAtDeepKey(obj, is, value) { + if (typeof is == 'string') return valueAtDeepKey(obj, is.split('.'), value);else if (is.length == 1 && value !== undefined && obj !== null && typeof obj[is[0]] !== 'undefined') return obj[is[0]] = value;else if (is.length == 0) return obj;else if (typeof is === 'undefined' || typeof obj === 'undefined' || is === null || obj === null || typeof obj[is[0]] === 'undefined') return null;else return valueAtDeepKey(obj[is[0]], is.slice(1), value); +} /***/ }), -/* 30 */ +/* 31 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34464,19 +34481,29 @@ function flatten(ob) { Object.defineProperty(exports, "__esModule", { value: true }); -exports.valueAtDeepKey = valueAtDeepKey; -function valueAtDeepKey(obj, is, value) { - if (typeof is == 'string') return valueAtDeepKey(obj, is.split('.'), value);else if (is.length == 1 && value !== undefined && obj !== null && typeof obj[is[0]] !== 'undefined') return obj[is[0]] = value;else if (is.length == 0) return obj;else if (typeof is === 'undefined' || typeof obj === 'undefined' || is === null || obj === null || typeof obj[is[0]] === 'undefined') return null;else return valueAtDeepKey(obj[is[0]], is.slice(1), value); +exports.createExtractionKeys = createExtractionKeys; + +var _flatten = __webpack_require__(14); + +function createExtractionKeys(results) { + var keys = new Set(); + results.forEach(function (result) { + Object.keys((0, _flatten.flatten)(result)).map(function (key) { + keys.add(key); + }); + }); + + return keys; } /***/ }), -/* 31 */ +/* 32 */ /***/ (function(module) { -module.exports = {"name":"keen-dataviz","description":"Data Visualization SDK for Keen IO","license":"MIT","version":"3.14.4","main":"dist/external_d3_c3/node/keen-dataviz.js","browser":"dist/external_d3_c3/keen-dataviz.js","style":"dist/keen-dataviz.css","scripts":{"start":"concurrently --kill-others \"NODE_ENV=development webpack-dev-server\" \"npm run postcss-watch\"","postcss-watch":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o test/demo/keen-dataviz.css --watch --config postcss.config.js","build":"NODE_ENV=production webpack -p && npm run build:css && NODE_ENV=production OPTIMIZE_MINIMIZE=1 webpack -p && npm run build:css && npm run build:css:min && npm run build:external_d3_c3 && npm run build:external_d3_c3:css && npm run build:external_d3_c3:css:min && npm run build:node","build:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.css --config postcss.config.js","build:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.css --config postcss.config.js","build:external_d3_c3:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3":"NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p && NODE_ENV=production EXTERNAL_D3_C3=1 OPTIMIZE_MINIMIZE=1 webpack -p","build:node":"TARGET=node NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p","profile":"webpack --profile --json > stats.json","analyze":"webpack-bundle-analyzer stats.json /dist","version":"npm run build && git add .","postversion":"git push && git push --tags && npm publish","test":"NODE_ENV=test jest","test:watch":"NODE_ENV=test jest --watch"},"repository":{"type":"git","url":"https://github.com/keen/keen-dataviz.js.git"},"bugs":"https://github.com/keen/keen-dataviz.js/issues","author":"Keen.IO (https://keen.io/)","contributors":["Dustin Larimer (https://github.com/dustinlarimer)","Joanne Cheng (https://github.com/joannecheng)","Eric Anderson (https://github.com/aroc)","Joe Wegner (https://github.com/josephwegner)","Sara Falkoff (https://github.com/adamkasprowicz)","Dariusz Łacheta (https://github.com/dariuszlacheta)"],"homepage":"https://keen.io","keywords":["d3","c3","Analytics","Stats","Statistics","Visualization","Visualizations","Data Visualization","Chart","Charts","Charting","Svg","Dataviz","Plots","Graphs","Funnels"],"dependencies":{"c3":"^0.7.2","d3":"^5.11.0","dom-to-image":"^2.6.0","file-saver":"^2.0.1","promise-polyfill":"^8.0.0","rangeable":"^0.1.6"},"devDependencies":{"autoprefixer":"^8.2.0","babel-loader":"^7.1.4","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0","concurrently":"^3.5.1","cssnano":"^3.10.0","eslint":"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0","jest":"^22.4.3","jest-environment-jsdom-c3":"^2.0.0","nock":"^9.2.6","postcss":"^6.0.21","postcss-cli":"^5.0.0","postcss-color-function":"^4.0.1","postcss-css-variables":"^0.8.1","postcss-cssnext":"^2.4.0","postcss-import":"^8.0.2","postcss-loader":"^2.1.3","precss":"^3.1.2","regenerator-runtime":"^0.11.1","replace-in-file":"^3.4.0","style-loader":"^0.20.3","webpack":"^4.29.0","webpack-bundle-analyzer":"^3.3.2","webpack-cli":"^3.2.1","webpack-dev-server":"^3.3.1","xhr-mock":"^2.3.2"}}; +module.exports = {"name":"keen-dataviz","description":"Data Visualization SDK for Keen IO","license":"MIT","version":"3.14.5","main":"dist/external_d3_c3/node/keen-dataviz.js","browser":"dist/external_d3_c3/keen-dataviz.js","style":"dist/keen-dataviz.css","scripts":{"start":"concurrently --kill-others \"NODE_ENV=development webpack-dev-server\" \"npm run postcss-watch\"","postcss-watch":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o test/demo/keen-dataviz.css --watch --config postcss.config.js","build":"NODE_ENV=production webpack -p && npm run build:css && NODE_ENV=production OPTIMIZE_MINIMIZE=1 webpack -p && npm run build:css && npm run build:css:min && npm run build:external_d3_c3 && npm run build:external_d3_c3:css && npm run build:external_d3_c3:css:min && npm run build:node","build:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.css --config postcss.config.js","build:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz-c3.css -o dist/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3:css":"node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.css --config postcss.config.js","build:external_d3_c3:css:min":"OPTIMIZE_MINIMIZE=1 node_modules/postcss-cli/bin/postcss lib/style/keen-dataviz.css -o dist/external_d3_c3/keen-dataviz.min.css --config postcss.config.js","build:external_d3_c3":"NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p && NODE_ENV=production EXTERNAL_D3_C3=1 OPTIMIZE_MINIMIZE=1 webpack -p","build:node":"TARGET=node NODE_ENV=production EXTERNAL_D3_C3=1 webpack -p","profile":"webpack --profile --json > stats.json","analyze":"webpack-bundle-analyzer stats.json /dist","version":"npm run build && git add .","postversion":"git push && git push --tags && npm publish","test":"NODE_ENV=test jest","test:watch":"NODE_ENV=test jest --watch"},"repository":{"type":"git","url":"https://github.com/keen/keen-dataviz.js.git"},"bugs":"https://github.com/keen/keen-dataviz.js/issues","author":"Keen.IO (https://keen.io/)","contributors":["Dustin Larimer (https://github.com/dustinlarimer)","Joanne Cheng (https://github.com/joannecheng)","Eric Anderson (https://github.com/aroc)","Joe Wegner (https://github.com/josephwegner)","Sara Falkoff (https://github.com/adamkasprowicz)","Dariusz Łacheta (https://github.com/dariuszlacheta)"],"homepage":"https://keen.io","keywords":["d3","c3","Analytics","Stats","Statistics","Visualization","Visualizations","Data Visualization","Chart","Charts","Charting","Svg","Dataviz","Plots","Graphs","Funnels"],"dependencies":{"c3":"^0.7.2","d3":"^5.11.0","dom-to-image":"^2.6.0","file-saver":"^2.0.1","promise-polyfill":"^8.0.0","rangeable":"^0.1.6"},"devDependencies":{"autoprefixer":"^8.2.0","babel-loader":"^7.1.4","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0","concurrently":"^3.5.1","cssnano":"^3.10.0","eslint":"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0","jest":"^22.4.3","jest-environment-jsdom-c3":"^2.0.0","nock":"^9.2.6","postcss":"^6.0.21","postcss-cli":"^5.0.0","postcss-color-function":"^4.0.1","postcss-css-variables":"^0.8.1","postcss-cssnext":"^2.4.0","postcss-import":"^8.0.2","postcss-loader":"^2.1.3","precss":"^3.1.2","regenerator-runtime":"^0.11.1","replace-in-file":"^3.4.0","style-loader":"^0.20.3","webpack":"^4.29.0","webpack-bundle-analyzer":"^3.3.2","webpack-cli":"^3.2.1","webpack-dev-server":"^3.3.1","xhr-mock":"^2.3.2"}}; /***/ }), -/* 32 */ +/* 33 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34501,7 +34528,7 @@ var _dataset2 = _interopRequireDefault(_dataset); var _extend = __webpack_require__(5); -var _stripHtmlTags = __webpack_require__(14); +var _stripHtmlTags = __webpack_require__(15); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -34719,7 +34746,7 @@ function getDefaultType(parser) { } /***/ }), -/* 33 */ +/* 34 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34769,71 +34796,71 @@ var _each = __webpack_require__(0); var _extend = __webpack_require__(5); -var _extendDeep = __webpack_require__(15); +var _extendDeep = __webpack_require__(16); var _assertDateString = __webpack_require__(11); var _assertDateString2 = _interopRequireDefault(_assertDateString); -var _defaultDateFormat = __webpack_require__(34); +var _defaultDateFormat = __webpack_require__(35); var _defaultDateFormat2 = _interopRequireDefault(_defaultDateFormat); -var _paginatingLegend = __webpack_require__(35); +var _paginatingLegend = __webpack_require__(36); var _paginatingLegend2 = _interopRequireDefault(_paginatingLegend); -var _tooltipContents = __webpack_require__(36); +var _tooltipContents = __webpack_require__(37); var _tooltipContents2 = _interopRequireDefault(_tooltipContents); -var _calculateRange = __webpack_require__(37); +var _calculateRange = __webpack_require__(38); var _calculateRange2 = _interopRequireDefault(_calculateRange); -var _calculatePercents = __webpack_require__(38); +var _calculatePercents = __webpack_require__(39); -var _message = __webpack_require__(39); +var _message = __webpack_require__(40); var _message2 = _interopRequireDefault(_message); -var _metric = __webpack_require__(43); +var _metric = __webpack_require__(44); var _metric2 = _interopRequireDefault(_metric); -var _table = __webpack_require__(44); +var _table = __webpack_require__(45); var _table2 = _interopRequireDefault(_table); -var _spinner = __webpack_require__(45); +var _spinner = __webpack_require__(46); var _spinner2 = _interopRequireDefault(_spinner); -var _funnel = __webpack_require__(46); +var _funnel = __webpack_require__(47); var _funnel2 = _interopRequireDefault(_funnel); -var _funnel3d = __webpack_require__(47); +var _funnel3d = __webpack_require__(48); var _funnel3d2 = _interopRequireDefault(_funnel3d); -var _horizontalFunnel = __webpack_require__(48); +var _horizontalFunnel = __webpack_require__(49); var _horizontalFunnel2 = _interopRequireDefault(_horizontalFunnel); -var _horizontalFunnel3d = __webpack_require__(49); +var _horizontalFunnel3d = __webpack_require__(50); var _horizontalFunnel3d2 = _interopRequireDefault(_horizontalFunnel3d); -var _metricCombo = __webpack_require__(50); +var _metricCombo = __webpack_require__(51); var _metricCombo2 = _interopRequireDefault(_metricCombo); -var _heatmap = __webpack_require__(51); +var _heatmap = __webpack_require__(52); var _heatmap2 = _interopRequireDefault(_heatmap); -var _choropleth = __webpack_require__(52); +var _choropleth = __webpack_require__(53); var _choropleth2 = _interopRequireDefault(_choropleth); @@ -35206,7 +35233,7 @@ function bindResizeListener(fn) { } /***/ }), -/* 34 */ +/* 35 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35245,7 +35272,7 @@ exports.default = function (startDate, endDate) { }; /***/ }), -/* 35 */ +/* 36 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35469,7 +35496,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } /***/ }), -/* 36 */ +/* 37 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35516,7 +35543,7 @@ exports.default = function (d, defaultTitleFormat, defaultValueFormat, color) { var _escapeHtml = __webpack_require__(4); /***/ }), -/* 37 */ +/* 38 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35541,7 +35568,7 @@ function calculateRange(matrix) { } /***/ }), -/* 38 */ +/* 39 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35582,7 +35609,7 @@ function calculatePercents(matrix, sumArray) { } /***/ }), -/* 39 */ +/* 40 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35594,7 +35621,7 @@ Object.defineProperty(exports, "__esModule", { var _escapeHtml = __webpack_require__(4); -var _renderDownloadBtn = __webpack_require__(16); +var _renderDownloadBtn = __webpack_require__(17); var _renderDownloadBtn2 = _interopRequireDefault(_renderDownloadBtn); @@ -35676,7 +35703,7 @@ exports.default = { }; /***/ }), -/* 40 */ +/* 41 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35687,11 +35714,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = downloadResults; -var _exportSvg = __webpack_require__(17); +var _exportSvg = __webpack_require__(18); var _exportSvg2 = _interopRequireDefault(_exportSvg); -var _exportData = __webpack_require__(18); +var _exportData = __webpack_require__(19); var _exportData2 = _interopRequireDefault(_exportData); @@ -35739,7 +35766,7 @@ function downloadResults(obj) { } /***/ }), -/* 41 */ +/* 42 */ /***/ (function(module, exports, __webpack_require__) { (function (global) { @@ -36514,7 +36541,7 @@ function downloadResults(obj) { /***/ }), -/* 42 */ +/* 43 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b), @@ -36526,7 +36553,7 @@ function downloadResults(obj) { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(7))) /***/ }), -/* 43 */ +/* 44 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36684,7 +36711,7 @@ exports.default = { }; /***/ }), -/* 44 */ +/* 45 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36989,7 +37016,7 @@ var destroy = function destroy() {}; exports.default = { render: render, update: update, destroy: destroy }; /***/ }), -/* 45 */ +/* 46 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37032,7 +37059,7 @@ exports.default = { }; /***/ }), -/* 46 */ +/* 47 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37313,7 +37340,7 @@ var Funnel = function () { exports.default = Funnel; /***/ }), -/* 47 */ +/* 48 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37618,7 +37645,7 @@ var Funnel3d = function () { exports.default = Funnel3d; /***/ }), -/* 48 */ +/* 49 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37896,7 +37923,7 @@ var HorizontalFunnel = function () { exports.default = HorizontalFunnel; /***/ }), -/* 49 */ +/* 50 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -38205,7 +38232,7 @@ var HorizontalFunnel3d = function () { exports.default = HorizontalFunnel3d; /***/ }), -/* 50 */ +/* 51 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -38376,7 +38403,7 @@ var MetricCombo = function () { exports.default = MetricCombo; /***/ }), -/* 51 */ +/* 52 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -38394,7 +38421,7 @@ var _d2 = __webpack_require__(2); var d3 = _interopRequireWildcard(_d2); -var _rangeable = __webpack_require__(19); +var _rangeable = __webpack_require__(20); var _rangeable2 = _interopRequireDefault(_rangeable); @@ -38637,7 +38664,7 @@ var Heatmap = function () { exports.default = Heatmap; /***/ }), -/* 52 */ +/* 53 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -38657,7 +38684,7 @@ var _d2 = __webpack_require__(2); var d3 = _interopRequireWildcard(_d2); -var _rangeable = __webpack_require__(19); +var _rangeable = __webpack_require__(20); var _rangeable2 = _interopRequireDefault(_rangeable); @@ -38868,7 +38895,7 @@ var Choropleth = function () { exports.default = Choropleth; /***/ }), -/* 53 */ +/* 54 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -38951,7 +38978,7 @@ function renderExecutionMetadata() { } /***/ }), -/* 54 */ +/* 55 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -38961,15 +38988,15 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _autocollector = __webpack_require__(55); +var _autocollector = __webpack_require__(56); var _autocollector2 = _interopRequireDefault(_autocollector); -var _modern = __webpack_require__(56); +var _modern = __webpack_require__(57); var _modern2 = _interopRequireDefault(_modern); -var _dracula = __webpack_require__(57); +var _dracula = __webpack_require__(58); var _dracula2 = _interopRequireDefault(_dracula); @@ -38982,7 +39009,7 @@ exports.default = { }; /***/ }), -/* 55 */ +/* 56 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -38998,7 +39025,7 @@ var palette = { exports.default = palette; /***/ }), -/* 56 */ +/* 57 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -39014,7 +39041,7 @@ var palette = { exports.default = palette; /***/ }), -/* 57 */ +/* 58 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; diff --git a/dist/keen-dataviz.js.map b/dist/keen-dataviz.js.map index 9f821f4..46f4344 100644 --- a/dist/keen-dataviz.js.map +++ b/dist/keen-dataviz.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./lib/utils/each.js","webpack:///./lib/utils/copy-to-clipboard.js","webpack:///./node_modules/d3/dist/package.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/pairs.js","webpack:///./node_modules/d3-array/src/cross.js","webpack:///./node_modules/d3-array/src/descending.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-array/src/variance.js","webpack:///./node_modules/d3-array/src/deviation.js","webpack:///./node_modules/d3-array/src/extent.js","webpack:///./node_modules/d3-array/src/array.js","webpack:///./node_modules/d3-array/src/constant.js","webpack:///./node_modules/d3-array/src/identity.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/threshold/sturges.js","webpack:///./node_modules/d3-array/src/histogram.js","webpack:///./node_modules/d3-array/src/quantile.js","webpack:///./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack:///./node_modules/d3-array/src/threshold/scott.js","webpack:///./node_modules/d3-array/src/max.js","webpack:///./node_modules/d3-array/src/mean.js","webpack:///./node_modules/d3-array/src/median.js","webpack:///./node_modules/d3-array/src/merge.js","webpack:///./node_modules/d3-array/src/min.js","webpack:///./node_modules/d3-array/src/permute.js","webpack:///./node_modules/d3-array/src/scan.js","webpack:///./node_modules/d3-array/src/shuffle.js","webpack:///./node_modules/d3-array/src/sum.js","webpack:///./node_modules/d3-array/src/transpose.js","webpack:///./node_modules/d3-array/src/zip.js","webpack:///./node_modules/d3-array/src/index.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-axis/src/identity.js","webpack:///./node_modules/d3-axis/src/axis.js","webpack:///./node_modules/d3-axis/src/index.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-dispatch/src/index.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-selection/src/create.js","webpack:///./node_modules/d3-selection/src/local.js","webpack:///./node_modules/d3-selection/src/sourceEvent.js","webpack:///./node_modules/d3-selection/src/point.js","webpack:///./node_modules/d3-selection/src/mouse.js","webpack:///./node_modules/d3-selection/src/selectAll.js","webpack:///./node_modules/d3-selection/src/touch.js","webpack:///./node_modules/d3-selection/src/touches.js","webpack:///./node_modules/d3-selection/src/index.js","webpack:///./node_modules/d3-drag/src/noevent.js","webpack:///./node_modules/d3-drag/src/nodrag.js","webpack:///./node_modules/d3-drag/src/constant.js","webpack:///./node_modules/d3-drag/src/event.js","webpack:///./node_modules/d3-drag/src/drag.js","webpack:///./node_modules/d3-drag/src/index.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-color/src/math.js","webpack:///./node_modules/d3-color/src/lab.js","webpack:///./node_modules/d3-color/src/cubehelix.js","webpack:///./node_modules/d3-color/src/index.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-interpolate/src/discrete.js","webpack:///./node_modules/d3-interpolate/src/hue.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-interpolate/src/hsl.js","webpack:///./node_modules/d3-interpolate/src/lab.js","webpack:///./node_modules/d3-interpolate/src/hcl.js","webpack:///./node_modules/d3-interpolate/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/piecewise.js","webpack:///./node_modules/d3-interpolate/src/quantize.js","webpack:///./node_modules/d3-interpolate/src/index.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-timer/src/interval.js","webpack:///./node_modules/d3-timer/src/index.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-ease/src/linear.js","webpack:///./node_modules/d3-ease/src/quad.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-ease/src/poly.js","webpack:///./node_modules/d3-ease/src/sin.js","webpack:///./node_modules/d3-ease/src/exp.js","webpack:///./node_modules/d3-ease/src/circle.js","webpack:///./node_modules/d3-ease/src/bounce.js","webpack:///./node_modules/d3-ease/src/back.js","webpack:///./node_modules/d3-ease/src/elastic.js","webpack:///./node_modules/d3-ease/src/index.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-transition/src/active.js","webpack:///./node_modules/d3-transition/src/index.js","webpack:///./node_modules/d3-brush/src/constant.js","webpack:///./node_modules/d3-brush/src/event.js","webpack:///./node_modules/d3-brush/src/noevent.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-brush/src/index.js","webpack:///./node_modules/d3-chord/src/math.js","webpack:///./node_modules/d3-chord/src/chord.js","webpack:///./node_modules/d3-chord/src/array.js","webpack:///./node_modules/d3-chord/src/constant.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-path/src/index.js","webpack:///./node_modules/d3-chord/src/ribbon.js","webpack:///./node_modules/d3-chord/src/index.js","webpack:///./node_modules/d3-collection/src/map.js","webpack:///./node_modules/d3-collection/src/nest.js","webpack:///./node_modules/d3-collection/src/set.js","webpack:///./node_modules/d3-collection/src/keys.js","webpack:///./node_modules/d3-collection/src/values.js","webpack:///./node_modules/d3-collection/src/entries.js","webpack:///./node_modules/d3-collection/src/index.js","webpack:///./node_modules/d3-contour/src/array.js","webpack:///./node_modules/d3-contour/src/ascending.js","webpack:///./node_modules/d3-contour/src/area.js","webpack:///./node_modules/d3-contour/src/constant.js","webpack:///./node_modules/d3-contour/src/contains.js","webpack:///./node_modules/d3-contour/src/noop.js","webpack:///./node_modules/d3-contour/src/contours.js","webpack:///./node_modules/d3-contour/src/blur.js","webpack:///./node_modules/d3-contour/src/density.js","webpack:///./node_modules/d3-contour/src/index.js","webpack:///./node_modules/d3-dsv/src/dsv.js","webpack:///./node_modules/d3-dsv/src/csv.js","webpack:///./node_modules/d3-dsv/src/tsv.js","webpack:///./node_modules/d3-dsv/src/autoType.js","webpack:///./node_modules/d3-dsv/src/index.js","webpack:///./node_modules/d3-fetch/src/blob.js","webpack:///./node_modules/d3-fetch/src/buffer.js","webpack:///./node_modules/d3-fetch/src/text.js","webpack:///./node_modules/d3-fetch/src/dsv.js","webpack:///./node_modules/d3-fetch/src/image.js","webpack:///./node_modules/d3-fetch/src/json.js","webpack:///./node_modules/d3-fetch/src/xml.js","webpack:///./node_modules/d3-fetch/src/index.js","webpack:///./node_modules/d3-force/src/center.js","webpack:///./node_modules/d3-force/src/constant.js","webpack:///./node_modules/d3-force/src/jiggle.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-quadtree/src/index.js","webpack:///./node_modules/d3-force/src/collide.js","webpack:///./node_modules/d3-force/src/link.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-force/src/manyBody.js","webpack:///./node_modules/d3-force/src/radial.js","webpack:///./node_modules/d3-force/src/x.js","webpack:///./node_modules/d3-force/src/y.js","webpack:///./node_modules/d3-force/src/index.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-format/src/index.js","webpack:///./node_modules/d3-geo/src/adder.js","webpack:///./node_modules/d3-geo/src/math.js","webpack:///./node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3-geo/src/stream.js","webpack:///./node_modules/d3-geo/src/area.js","webpack:///./node_modules/d3-geo/src/cartesian.js","webpack:///./node_modules/d3-geo/src/bounds.js","webpack:///./node_modules/d3-geo/src/centroid.js","webpack:///./node_modules/d3-geo/src/constant.js","webpack:///./node_modules/d3-geo/src/compose.js","webpack:///./node_modules/d3-geo/src/rotation.js","webpack:///./node_modules/d3-geo/src/circle.js","webpack:///./node_modules/d3-geo/src/clip/buffer.js","webpack:///./node_modules/d3-geo/src/pointEqual.js","webpack:///./node_modules/d3-geo/src/clip/rejoin.js","webpack:///./node_modules/d3-geo/src/polygonContains.js","webpack:///./node_modules/d3-geo/src/clip/index.js","webpack:///./node_modules/d3-geo/src/clip/antimeridian.js","webpack:///./node_modules/d3-geo/src/clip/circle.js","webpack:///./node_modules/d3-geo/src/clip/line.js","webpack:///./node_modules/d3-geo/src/clip/rectangle.js","webpack:///./node_modules/d3-geo/src/clip/extent.js","webpack:///./node_modules/d3-geo/src/length.js","webpack:///./node_modules/d3-geo/src/distance.js","webpack:///./node_modules/d3-geo/src/contains.js","webpack:///./node_modules/d3-geo/src/graticule.js","webpack:///./node_modules/d3-geo/src/interpolate.js","webpack:///./node_modules/d3-geo/src/identity.js","webpack:///./node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3-geo/src/path/bounds.js","webpack:///./node_modules/d3-geo/src/path/centroid.js","webpack:///./node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3-geo/src/path/index.js","webpack:///./node_modules/d3-geo/src/transform.js","webpack:///./node_modules/d3-geo/src/projection/fit.js","webpack:///./node_modules/d3-geo/src/projection/resample.js","webpack:///./node_modules/d3-geo/src/projection/index.js","webpack:///./node_modules/d3-geo/src/projection/conic.js","webpack:///./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/albers.js","webpack:///./node_modules/d3-geo/src/projection/albersUsa.js","webpack:///./node_modules/d3-geo/src/projection/azimuthal.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/mercator.js","webpack:///./node_modules/d3-geo/src/projection/conicConformal.js","webpack:///./node_modules/d3-geo/src/projection/equirectangular.js","webpack:///./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/equalEarth.js","webpack:///./node_modules/d3-geo/src/projection/gnomonic.js","webpack:///./node_modules/d3-geo/src/projection/identity.js","webpack:///./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack:///./node_modules/d3-geo/src/projection/orthographic.js","webpack:///./node_modules/d3-geo/src/projection/stereographic.js","webpack:///./node_modules/d3-geo/src/projection/transverseMercator.js","webpack:///./node_modules/d3-geo/src/index.js","webpack:///./node_modules/d3-hierarchy/src/cluster.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack:///./node_modules/d3-hierarchy/src/array.js","webpack:///./node_modules/d3-hierarchy/src/pack/enclose.js","webpack:///./node_modules/d3-hierarchy/src/pack/siblings.js","webpack:///./node_modules/d3-hierarchy/src/accessors.js","webpack:///./node_modules/d3-hierarchy/src/constant.js","webpack:///./node_modules/d3-hierarchy/src/pack/index.js","webpack:///./node_modules/d3-hierarchy/src/treemap/round.js","webpack:///./node_modules/d3-hierarchy/src/treemap/dice.js","webpack:///./node_modules/d3-hierarchy/src/partition.js","webpack:///./node_modules/d3-hierarchy/src/stratify.js","webpack:///./node_modules/d3-hierarchy/src/tree.js","webpack:///./node_modules/d3-hierarchy/src/treemap/slice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack:///./node_modules/d3-hierarchy/src/treemap/index.js","webpack:///./node_modules/d3-hierarchy/src/treemap/binary.js","webpack:///./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack:///./node_modules/d3-hierarchy/src/index.js","webpack:///./node_modules/d3-polygon/src/area.js","webpack:///./node_modules/d3-polygon/src/centroid.js","webpack:///./node_modules/d3-polygon/src/cross.js","webpack:///./node_modules/d3-polygon/src/hull.js","webpack:///./node_modules/d3-polygon/src/contains.js","webpack:///./node_modules/d3-polygon/src/length.js","webpack:///./node_modules/d3-polygon/src/index.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-random/src/index.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/array.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/d3-scale/src/band.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-scale/src/identity.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-scale/src/log.js","webpack:///./node_modules/d3-scale/src/symlog.js","webpack:///./node_modules/d3-scale/src/pow.js","webpack:///./node_modules/d3-scale/src/quantile.js","webpack:///./node_modules/d3-scale/src/quantize.js","webpack:///./node_modules/d3-scale/src/threshold.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time/src/index.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-time-format/src/isoFormat.js","webpack:///./node_modules/d3-time-format/src/isoParse.js","webpack:///./node_modules/d3-time-format/src/index.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale/src/utcTime.js","webpack:///./node_modules/d3-scale/src/sequential.js","webpack:///./node_modules/d3-scale/src/sequentialQuantile.js","webpack:///./node_modules/d3-scale/src/diverging.js","webpack:///./node_modules/d3-scale/src/index.js","webpack:///./node_modules/d3-scale-chromatic/src/colors.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack:///./node_modules/d3-scale-chromatic/src/ramp.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack:///./node_modules/d3-scale-chromatic/src/index.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/arc.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/area.js","webpack:///./node_modules/d3-shape/src/descending.js","webpack:///./node_modules/d3-shape/src/identity.js","webpack:///./node_modules/d3-shape/src/pie.js","webpack:///./node_modules/d3-shape/src/curve/radial.js","webpack:///./node_modules/d3-shape/src/lineRadial.js","webpack:///./node_modules/d3-shape/src/areaRadial.js","webpack:///./node_modules/d3-shape/src/pointRadial.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/link/index.js","webpack:///./node_modules/d3-shape/src/symbol/circle.js","webpack:///./node_modules/d3-shape/src/symbol/cross.js","webpack:///./node_modules/d3-shape/src/symbol/diamond.js","webpack:///./node_modules/d3-shape/src/symbol/star.js","webpack:///./node_modules/d3-shape/src/symbol/square.js","webpack:///./node_modules/d3-shape/src/symbol/triangle.js","webpack:///./node_modules/d3-shape/src/symbol/wye.js","webpack:///./node_modules/d3-shape/src/symbol.js","webpack:///./node_modules/d3-shape/src/noop.js","webpack:///./node_modules/d3-shape/src/curve/basis.js","webpack:///./node_modules/d3-shape/src/curve/basisClosed.js","webpack:///./node_modules/d3-shape/src/curve/basisOpen.js","webpack:///./node_modules/d3-shape/src/curve/bundle.js","webpack:///./node_modules/d3-shape/src/curve/cardinal.js","webpack:///./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack:///./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack:///./node_modules/d3-shape/src/curve/catmullRom.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack:///./node_modules/d3-shape/src/curve/linearClosed.js","webpack:///./node_modules/d3-shape/src/curve/monotone.js","webpack:///./node_modules/d3-shape/src/curve/natural.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/d3-shape/src/offset/none.js","webpack:///./node_modules/d3-shape/src/order/none.js","webpack:///./node_modules/d3-shape/src/stack.js","webpack:///./node_modules/d3-shape/src/offset/expand.js","webpack:///./node_modules/d3-shape/src/offset/diverging.js","webpack:///./node_modules/d3-shape/src/offset/silhouette.js","webpack:///./node_modules/d3-shape/src/offset/wiggle.js","webpack:///./node_modules/d3-shape/src/order/appearance.js","webpack:///./node_modules/d3-shape/src/order/ascending.js","webpack:///./node_modules/d3-shape/src/order/descending.js","webpack:///./node_modules/d3-shape/src/order/insideOut.js","webpack:///./node_modules/d3-shape/src/order/reverse.js","webpack:///./node_modules/d3-shape/src/index.js","webpack:///./node_modules/d3-voronoi/src/constant.js","webpack:///./node_modules/d3-voronoi/src/point.js","webpack:///./node_modules/d3-voronoi/src/RedBlackTree.js","webpack:///./node_modules/d3-voronoi/src/Edge.js","webpack:///./node_modules/d3-voronoi/src/Cell.js","webpack:///./node_modules/d3-voronoi/src/Circle.js","webpack:///./node_modules/d3-voronoi/src/Beach.js","webpack:///./node_modules/d3-voronoi/src/Diagram.js","webpack:///./node_modules/d3-voronoi/src/voronoi.js","webpack:///./node_modules/d3-voronoi/src/index.js","webpack:///./node_modules/d3-zoom/src/constant.js","webpack:///./node_modules/d3-zoom/src/event.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./node_modules/d3-zoom/src/noevent.js","webpack:///./node_modules/d3-zoom/src/zoom.js","webpack:///./node_modules/d3-zoom/src/index.js","webpack:///./node_modules/d3/index.js","webpack:///./lib/utils/pretty-number.js","webpack:///./lib/utils/escape-html.js","webpack:///./lib/utils/extend.js","webpack:///./lib/utils/svg-text-wrap.js","webpack:///(webpack)/buildin/global.js","webpack:///./lib/dataset/modifiers/append.js","webpack:///./lib/dataset/utils/create-null-list.js","webpack:///./node_modules/c3/c3.js","webpack:///./lib/utils/assert-date-string.js","webpack:///./lib/dataset/index.js","webpack:///./lib/dataset/utils/analyses.js","webpack:///./lib/utils/strip-html-tags.js","webpack:///./lib/utils/extend-deep.js","webpack:///./lib/utils/render-download-btn.js","webpack:///./lib/utils/export-svg.js","webpack:///./lib/utils/export-data.js","webpack:///./node_modules/rangeable/dist/rangeable.min.js","webpack:///./lib/browser.js","webpack:///./lib/index.js","webpack:///./lib/dataset/modifiers/delete.js","webpack:///./lib/dataset/modifiers/filter.js","webpack:///./lib/dataset/modifiers/insert.js","webpack:///./lib/dataset/modifiers/select.js","webpack:///./lib/dataset/modifiers/sort.js","webpack:///./lib/dataset/modifiers/update.js","webpack:///./lib/dataset/utils/parsers.js","webpack:///./lib/dataset/utils/flatten.js","webpack:///./lib/dataset/utils/object.js","webpack:///./lib/data.js","webpack:///./lib/libraries/index.js","webpack:///./lib/libraries/c3/extensions/default-date-format.js","webpack:///./lib/libraries/c3/extensions/paginating-legend.js","webpack:///./lib/libraries/c3/extensions/tooltip-contents.js","webpack:///./lib/dataset/utils/calculate-range.js","webpack:///./lib/dataset/utils/calculate-percents.js","webpack:///./lib/libraries/default/message.js","webpack:///./lib/utils/download-results.js","webpack:///./node_modules/dom-to-image/src/dom-to-image.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./lib/libraries/default/metric.js","webpack:///./lib/libraries/default/table.js","webpack:///./lib/libraries/default/spinner.js","webpack:///./lib/libraries/default/funnel.js","webpack:///./lib/libraries/default/funnel-3d.js","webpack:///./lib/libraries/default/horizontal-funnel.js","webpack:///./lib/libraries/default/horizontal-funnel-3d.js","webpack:///./lib/libraries/default/metric-combo.js","webpack:///./lib/libraries/default/heatmap.js","webpack:///./lib/libraries/default/choropleth.js","webpack:///./lib/utils/render-execution-metadata.js","webpack:///./lib/palettes/index.js","webpack:///./lib/palettes/autocollector.js","webpack:///./lib/palettes/modern.js","webpack:///./lib/palettes/dracula.js"],"names":["each","o","cb","s","n","Array","length","call","hasOwnProperty","copyToClipboard","stickTooltip","event","tooltip","style","opacity","top","pageY","left","pageX","value","placeholder","document","createElement","body","appendChild","select","execCommand","removeChild","notification","padding","backgroundColor","fontSize","position","zIndex","transition","innerText","addEventListener","e","setTimeout","prettyNumber","input","Number","sciNo","toPrecision","prefix","suffixes","String","Math","abs","recurse","iteration","split","rhs","charAt","numNumerals","escapeHtml","matchHtmlRegExp","string","str","match","exec","escape","html","index","lastIndex","charCodeAt","substring","extend","target","i","arguments","prop","textWrap","d3","text","width","words","reverse","word","line","lineNumber","lineHeight","x","attr","y","dy","tspan","append","pop","push","join","node","getComputedTextLength","appendColumn","appendRow","self","args","prototype","slice","label","undefined","matrix","row","cell","concat","newRow","col","selectColumn","len","list","testObject","testString","getTime","isNaN","ISO_8601","test","del","filter","insert","sort","update","Dataset","config","meta","type","data","arr","set","coords","Error","colIndex","indexOf","rowIndex","colResult","rowResult","selectRow","analyses","parser","average","start","end","sum","avg","val","parseFloat","maximum","nums","max","apply","minimum","min","getColumnAverage","getRowAverage","getColumnSum","getRowSum","getColumnMaximum","getRowMaximum","getColumnMinimum","getRowMinimum","getColumnLabel","getRowIndex","stripHtmlTags","inputString","replace","extendDeep","key","renderDownloadButton","element","btnClass","isBtnRendered","parentNode","children","find","child","className","button","insertBefore","nextSibling","exportImage","obj","quality","bgcolor","domtoimage","toBlob","then","blob","exportData","generateCsvContent","csvContent","forEach","j","encodeURIComponent","supportedFormats","format","toLowerCase","includes","fileName","fileFormat","content","JSON","stringify","htmlElement","setAttribute","click","Dataviz","env","global","window","extendKeenGlobalObject","KeenDataviz","KeenDataset","Keen","keenGlobals","webpackKeenGlobals","options","c3","datavizInstance","defaultOptions","showDeprecationWarnings","showLoadingSpinner","container","containerElement","title","showTitle","subtitle","notes","theme","colors","colorMapping","ui","executionMetadata","utils","clickToCopyToClipboard","indexBy","labels","labelMapping","labelMappingRegExp","errorMapping","showErrorMessages","library","sortGroups","sortIntervals","results","stacked","dateFormat","legend","show","alignment","textMaxLength","pagination","offset","limit","pointer","axis","color","size","point","focus","expand","enabled","r","sensitivity","horizontal","order","selection","draggable","multiple","onselected","d","selectedItems","view","_artifacts","selected","reduce","prev","curr","grid","partialIntervalIndicator","timezone","table","schema","renderOnVisible","funnel","lines","resultValues","percents","countingMethod","decimals","marginBetweenElements","hover","effect3d","minimalSize","react","range","sparkline","choropleth","map","borders","showSlider","heatmap","palette","palettes","console","log","convertChartTypes","stacking","el","pattern","dataset","_prepared","_rendered","visuals","prepare","render","firstVisibilityState","visibilityState","callback","bind","libraries","default","register","name","actions","method","nodeName","querySelector","visual","attributes","fn","chartOptions","destroy","innerHTML","domReady","height","num","setLabels","updateColumn","updateRow","mapLabels","mapLabelsExec","valueAfterMatching","regExpAndLabel","regExpObj","labelMappingDimension","message","loader","spinner","firstResult","query","interval","timeframe","isArray","timeframes","resultItem","foundDifferent","timeframeItem","resultTimeframe","msg","error","deleteColumn","result","event_collection","analysis_type","ds2","Object","keys","returnValue","renderAsPromise","Promise","resolve","reject","customCallback","onrendered","shouldRenderExecutionMetadata","execution_metadata","shouldRenderDownloadBtn","buttons","download","mappedMsg","buildDomWrapper","IntersectionObserver","chartVisibleCallback","events","observer","isIntersecting","observe","hidden","visibilityChange","msHidden","webkitHidden","handleVisibilityChange","load","once","sortColumns","sortRows","bool","chartType","parseRawData","parseRequest","initialize","version","pkg","chart100percentWide","rangeChart","verticalAlignment","horizontalAlignment","align","legendItemsAlign","areachart","barchart","columnchart","linechart","piechart","testDom","readyState","DOMContentLoaded","removeEventListener","deleteRow","q","splice","filterColumns","filterRows","clone","selectedColumn","ri","insertColumn","insertRow","comp","head","cols","analysesUtilMethods","a","b","op","lib","parsers","parseMetric","res","parseInterval","record","parseGroupedMetric","parseGroupedInterval","group","parseDoubleGroupedMetric","rowLabel","parseDoubleGroupedInterval","parseFunnel","steps","parseList","parseExtraction","datasetExtraction","names","tableConfig","resultKeys","keyName","nameI","columns","iNames","parseHeatmapAxis","heatmapDataset","objKeys","metric","extraction","flatten","ob","toReturn","flatObject","valueAtDeepKey","is","parseResponse","response","parserArgs","selectedParser","metadata","filters","group_by","display_name","getDefaultTitle","visualization","chart_type","getDefaultType","Date","analysis","toUpperCase","timer","bindResizeListener","clearTimeout","delay","chart","c3Chart","parentWidth","offsetWidth","nextSiblingWidth","prevSiblingWidth","previousSibling","resize","defineC3","types","Funnel","Funnel3d","HorizontalFunnel","HorizontalFunnel3d","MetricCombo","Heatmap","Choropleth","c3Types","getPaddings","paddingName","parseInt","getComputedStyle","getDefaultOptions","ENFORCED_OPTIONS","bindto","renderingElement","offsetHeight","titleElement","subtitleElement","notesElement","DEFAULT_OPTIONS","extendedConfig","sumArray","oldMatrix","tick","clearOnRender","datasetMeta","spliceFrom","intervalTypes","removeLegend","rotated","culling","groups","categories","legendElement","remove","chartTypesWithPartialIntervalIndicator","partialResultsRegion","class","regions","contents","c3TooltipContents","ratio","id","valueFormatted","c3CustomTooltipFiltering","toFixed","c3options","c3CustomDataMapping","hide","generate","c3PaginatingLegend","onLegendRendered","onPaginated","flush","scope","onresize","attachEvent","startDate","endDate","timeDiff","months","ms","date","getMonth","getFullYear","getDate","domNode","legendConfig","round","total","columnsSorted","dataColumnsSorted","columnData","item","column","paginateHorizontalLeftElement","legendItemsElement","paginateVerticalElement","paginateHorizontalRightElement","paginateData","renderLegendComponent","renderPaginationComponent","labelShortened","legendItem","chartPartId","legendItemColorSample","prepend","tooltipElement","revert","isHidden","toggle","arrowUp","arrowDown","paginate","direction","diff","floor","clearSelectedText","empty","getSelection","removeAllRanges","defaultTitleFormat","defaultValueFormat","nameFormat","tooltip_format_name","titleFormat","tooltip_format_title","valueFormat","tooltip_format_value","CLASS","levelColor","tooltipName","calculateRange","newValues","calculateSumForPercents","calculatePercents","outer","inner","titleContainer","subtitleContainer","notesContainer","downloadResults","preventDefault","currentTarget","previousElementSibling","formatExtractionData","formattedResult","itemProp","acc","opts","prevValue","suffix","formattedNum","flexDifferenceStyle","resultDifference","differenceStyle","smallerValue","previousResults","isExtraction","comparedProp","resultClassName","previousResultsClassName","currentPage","_generateTableRows","defaultConfig","page","arrows","customConfig","datasetPaginated","pages","ceil","columnsArray","colNamesToMap","mapValues","mapDates","entries","rowColValue","rowColValueEscaped","pageNumber","prevPage","nextPage","_generateTableHeader","fieldNumber","columnNames","colName","colNameEscaped","isEmpty","querySelectorAll","sortOrder","getAttribute","checker","sortOrderNumber","nameA","nameB","first","shift","unshift","attachBtnEventListeners","btn","tableClass","artifacts","clearInterval","radius","marginBetweenSteps","margin","right","bottom","yMarginElement","funnelContainer","chartContainer","svgWidth","svgHeight","elemHeight","prevElemWidth","percent","minimalSizeStep","polygons","newPoints","points","selectAll","enter","p","handleMouseOver","polygonsHover","labelHover","thisLabel","handleMouseOut","on","handleClickToCopy","shadowCut","polygonsShadows","polygons3d","rgb","darker","xMarginElement","elemWidth","prevElemHeight","metricResults","c","prevResult","previous","currResult","current","count","percentDifference","labelClass","iconClass","containerTitle","containerSubtitle","chartRoot","currentCount","simpleTooltip","baseWidth","baseHeight","heatmapContainer","containerWidth","containerHeight","xLabel","Set","yLabel","formatData","timeFormat","timestamp","parse","formattedData","add","refValue","minRange","maxRange","getColor","defaultColor","baseColor","getColorAlpha","scaleLinear","domain","convertRGBAtoRGB","bg","getTileColor","alpha","solidColor","g","svg","rangeableInput","handleSliderChange","rects","nodes","rangeable","Rangeable","onChange","containerToString","customStyle","scriptRef","xLabelBase","yLabelBase","getAxisLabelRatio","base","labelSize","xAxis","scaleBand","axisBottom","tickSize","yAxis","axisLeft","chartTooltip","toString","raise","handleMouseMove","tooltipContent","clientX","clientY","handleMouseLeave","handleClick","bandwidth","choroplethContainer","heightChanges","onlyValues","minVal","maxVal","lightColor","hsl","brighter","l","darkColor","ramp","json","zoom","scaleExtent","translateExtent","zoomed","projection","geoMercator","fitSize","geoAlbersUsa","scale","path","geoPath","usData","features","theOne","properties","elementName","rangeContainer","tooltips","transform","renderExecutionMetadata","removeClassWithTimeOut","classList","handleCopyToClipboard","contains","dataList","dt","dd","autocollector","modern","dracula"],"mappings":"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AACAO,eAASE,IAAT,CAAcI,WAAd,CAA0BC,YAA1B;AACD,KAHD,EAGG,IAHH;AAID;AACF,C;;;;;;;;;;ACnCM,IAAI,YAAI;AACR;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,IAAI,cAAM;AACV,kBAAkB;AAClB;AACA,eAAe,+WAA+W,oBAAoB,sMAAsM,oBAAoB,sBAAsB,oBAAoB,MAAM,oBAAoB;AAChrB,uBAAuB;AACvB,oBAAoB;;;ACfZ;AACf;AACA,CAAC;;;ACFmC;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,WAAW,SAAS;AACpB;AACA;;;AChCoC;AACF;;AAElC,sBAAsB,QAAQ,CAAC,SAAS;AACjC;AACA;AACQ,sDAAW,EAAC;;;ACNZ;AACf;AACA;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA;;;ACT6B;;AAEd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,IAAI;;AAEnC,kBAAkB,SAAS;AAC3B,sCAAsC,SAAS;AAC/C;AACA;AACA;;AAEA;AACA,CAAC;;;ACpBc;AACf;AACA,CAAC;;;ACFc;AACf;AACA,CAAC;;;ACF6B;;AAEf;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AChCiC;;AAEnB;AACf,UAAU,QAAQ;AAClB;AACA,CAAC;;;ACLc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACpCD,IAAI,WAAK;;AAEF,YAAY,WAAK;AACjB,UAAU,WAAK;;;ACHP;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACFc;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACZD;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClDe;AACf;AACA,CAAC;;;ACF6B;AACA;AACI;AACJ;AACI;AACN;AACK;AACS;;AAE3B;AACf,cAAc,QAAQ;AACtB,eAAe,UAAM;AACrB,kBAAkB,OAAO;;AAEzB;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,SAAK,kCAAkC;AAClD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;;AAEA;AACA,qEAAqE,QAAQ;AAC7E;;AAEA;AACA,sEAAsE,QAAQ;AAC9E;;AAEA;AACA,4FAA4F,QAAQ,CAAC,KAAK,YAAY,QAAQ;AAC9H;;AAEA;AACA,CAAC;;;AC1E6B;;AAEf;AACf,iCAAiC,MAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACb4B;AACQ;AACN;AACI;;AAEpB;AACf,WAAW,GAAG,cAAc,MAAM,OAAO,SAAS;AAClD,uCAAuC,QAAQ,iBAAiB,QAAQ;AACxE,CAAC;;;ACRoC;;AAEtB;AACf,wCAAwC,SAAS;AACjD,CAAC;;;ACJc;AACf;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACjC6B;;AAEf;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;;AAEA;AACA,CAAC;;;ACxBmC;AACN;AACI;;AAEnB;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;;AAEA,SAAS,QAAQ,cAAc,SAAS;AACxC,CAAC;;;AC3Bc;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACpBc;AACf;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACjCc;AACf;AACA;AACA;AACA,CAAC;;;ACJmC;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,SAAS;;AAE1C;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnBc;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACbc;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnBuB;;AAET;AACf;AACA,uBAAuB,OAAG,SAAS,gBAAM,4BAA4B,SAAS;AAC9E,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACA,CAAC;;AAED,SAAS,gBAAM;AACf;AACA;;;ACdoC;;AAErB;AACf,SAAS,aAAS;AAClB,CAAC;;;ACJmE;AACnB;AACF;AACN;AACU;AACF;AACN;AACM;AACiC;AACtB;AACI;AAC3B;AACE;AACI;AACF;AACJ;AACI;AACI;AACE;AACN;AACF;AACM;AACR;AAC6B;AACjB;AACF;AACV;;;AC1B9B,IAAI,WAAK;;;ACAD;AACf;AACA,CAAC;;;ACF6B;AACI;;AAElC,IAAI,QAAG;AACP,IAAI,UAAK;AACT,IAAI,WAAM;AACV,IAAI,SAAI;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,WAAM;AACf;AACA;AACA;AACA;;AAEA,SAAS,WAAM;AACf,sDAAsD;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,SAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,QAAG,eAAe,SAAI;AAC3C,qBAAqB,SAAI,eAAe,UAAK;AAC7C,6BAA6B,QAAG,eAAe,WAAM;;AAErD;AACA;AACA,yGAAyG,YAAQ;AACjH;AACA;AACA;AACA;AACA,sCAAsC,WAAM,GAAG,WAAM;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,QAAG,sBAAsB,WAAM;;AAE9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,kFAAkF,EAAE;;AAE9H;AACA;AACA,0CAA0C,gCAAgC,6DAA6D,EAAE;AACzI;;AAEA;;AAEA;AACA,8BAA8B,SAAI,cAAc,UAAK;AACrD;AACA;;AAEA;AACA;AACA,wCAAwC,+BAA+B,EAAE;;AAEzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,UAAK,wBAAwB,SAAI;;AAEzE;AACA,0BAA0B,wBAAwB,EAAE;AACpD;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B,WAAK;AAChC;;AAEA;AACA,gEAAgE,WAAK;AACrE;;AAEA;AACA,+DAA+D,WAAK;AACpE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP,SAAS,SAAI,CAAC,QAAG;AACjB;;AAEO;AACP,SAAS,SAAI,CAAC,UAAK;AACnB;;AAEO;AACP,SAAS,SAAI,CAAC,WAAM;AACpB;;AAEO;AACP,SAAS,SAAI,CAAC,SAAI;AAClB;;;ACxKgB;;;ACLhB,YAAY;;AAEZ;AACA,8CAA8C,IAAI,OAAO;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH;AACA,kFAAkF,OAAO;AACzF;AACA,+CAA+C,OAAO;AACtD,GAAG;AACH;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;;AAEA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA,mCAAmC,4BAA4B;AAC/D;AACA;;AAEe,yDAAQ,EAAC;;;ACnFuB;;;ACAxC;;AAEQ;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACRoC;;AAEvB;AACf;AACA;AACA,SAAS,UAAU,2BAA2B,OAAO,UAAU,sBAAsB;AACrF,CAAC;;;ACNmC;AACD;;AAEnC;AACA;AACA;AACA;AACA,mBAAmB,KAAK,8CAA8C,KAAK;AAC3E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,CAAC;;;ACxBD;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;ACNiC;AACC;;AAEpB;AACf,6CAA6C,YAAQ;;AAErD,qFAAqF,OAAO;AAC5F,+GAA+G,OAAO;AACtH;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB,CAAC;;;AChBD,SAAS,iBAAK;AACd;AACA;;AAEe;AACf,4BAA4B,iBAAK;AACjC;AACA;AACA,CAAC;;;ACRiC;AACO;;AAE1B;AACf,6CAA6C,WAAW;;AAExD,yFAAyF,OAAO;AAChG,8DAA8D,OAAO;AACrE;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB,CAAC;;;AChBc;AACf;AACA;AACA;AACA,CAAC;;;ACJiC;AACD;;AAElB;AACf,2CAA2C,OAAO;;AAElD,qFAAqF,OAAO;AAC5F,4FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB,CAAC;;;ACfc;AACf;AACA,CAAC;;;ACF6B;AACI;;AAEnB;AACf,aAAa,SAAS,iCAAiC,MAAM;AAC7D,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,qDAAqD,EAAE;AACvF,uCAAuC,+CAA+C,EAAE;AACxF,qCAAqC,6CAA6C,EAAE;AACpF,wCAAwC,gDAAgD;AACxF;;;ACrBe;AACf;AACA;AACA;AACA,CAAC;;;ACJiC;AACA;AACC;;AAEnC,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA,KAAK;AACL,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,2BAA2B,eAAe,EAAE;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C,YAAQ;;AAEnD,sGAAsG,OAAO;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;AACA,CAAC;;;ACrH6B;AACI;;AAEnB;AACf,aAAa,SAAS,gCAAgC,MAAM;AAC5D,CAAC;;;ACLc;AACf;AACA;AACA;AACA,oCAAoC;AACpC;AACA,CAAC;;;ACNiC;;AAEnB;;AAEf,8JAA8J,OAAO;AACrK,wHAAwH,OAAO;AAC/H;AACA;AACA;AACA;AACA;;AAEA,QAAQ,QAAQ;AAChB;AACA;;AAEA,aAAa,SAAS;AACtB,CAAC;;;ACjBc;;AAEf,4DAA4D,SAAS;AACrE,4EAA4E,UAAU;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACZiC;;AAEnB;AACf,0BAA0B,cAAS;;AAEnC;AACA;AACA;;AAEA,sFAAsF,OAAO;AAC7F,wGAAwG,OAAO;AAC/G;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB,CAAC;;AAED,SAAS,cAAS;AAClB;AACA;;;ACvBe;AACf;AACA;AACA;AACA;AACA,CAAC;;;ACLc;AACf;AACA,wBAAwB,mBAAmB,EAAE;AAC7C;AACA,CAAC;;;ACJc;;AAEf,2DAA2D,OAAO;AAClE,wDAAwD,OAAO;AAC/D;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACVc;AACf;AACA,wBAAwB,QAAQ,EAAE;AAClC;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACFc;;AAEf,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA;AACA;;AAEA;AACA,CAAC;;;ACToC;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,SAAS;;AAE1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACxDc;AACf;AACA;AACA,0BAA0B;AAC1B,CAAC;;;ACJmC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA,SAAS,UAAW;AACpB;;;AClCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC3BD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;AC1ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACxBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACxBD;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACND;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACNgC;;AAElB;AACf,mDAAmD,OAAO;AAC1D;AACA;AACA,GAAG;AACH,CAAC;;;ACPgC;AACE;;AAEnC;AACA;AACA;;AAEe;AACf,mDAAmD,OAAO;AAC1D,uFAAuF,YAAQ;AAC/F;AACA;AACA,GAAG;AACH,CAAC;;;ACbD,SAAS,aAAM;AACf;AACA;AACA;;AAEe;AACf,mBAAmB,aAAM;AACzB,CAAC;;;ACPD;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACVc;AACf;AACA;AACA;AACA,CAAC;;;ACJD;;AAEO,IAAI,QAAK;;AAEhB;AACA,MAAM,UAAO;AACb,0BAA0B,UAAO;AACjC,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAK,CAAC;AACvB,IAAI,QAAK;AACT;AACA;AACA,KAAK;AACL,MAAM,QAAK;AACX;AACA;AACA;;AAEA,SAAS,iBAAc;AACvB;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEe;AACf,kBAAkB,iBAAc;;AAEhC;AACA;AACA,6CAA6C,OAAO;AACpD,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA,CAAC;;AAEM;AACP,eAAe,QAAK;AACpB,uBAAuB,QAAK;AAC5B,EAAE,QAAK;AACP;AACA;AACA,GAAG;AACH,IAAI,QAAK;AACT;AACA;;;AC1GoC;;AAEpC;AACA,eAAe,UAAW;AAC1B;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;ACjCuC;AACM;AACN;AACJ;A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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,QAAQ,WAAK;AACnB;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe,SAAS,WAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP,iCAAiC,WAAK;AACtC;AACA;AACA;AACA;;AAEO,SAAS,SAAG;AACnB;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,MAAM,MAAM,SAAG,EAAE,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,iCAAiC,WAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,WAAW,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AChXO;AACA;;;ACDiC;AACO;AACP;;AAExC;AACA;AACA;AACA;AACA;AACA,IAAI,MAAE;AACN,IAAI,MAAE;AACN,IAAI,MAAE,OAAO,MAAE,GAAG,MAAE;AACpB,SAAS,MAAE,GAAG,MAAE,GAAG,MAAE;;AAErB;AACA;AACA;AACA,qBAAqB,GAAG,OAAO,UAAU;AACzC;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,MAAM,WAAW,MAAM,CAAC,KAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,2CAA2C,MAAE,GAAG,MAAE;AAClD;;AAEA;AACA,aAAa,MAAE,eAAe,MAAE,QAAQ,MAAE;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;;AAEA,MAAM,WAAW,MAAM,CAAC,KAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;;AC1HuC;AACyB;AACzB;;AAExC,IAAI,WAAC;AACL,IAAI,WAAC;AACL;AACA,IAAI,WAAC;AACL,IAAI,WAAC;AACL,SAAS,WAAC,GAAG,WAAC;AACd,SAAS,WAAC,GAAG,WAAC;AACd,YAAY,WAAC,OAAO,WAAC,GAAG,WAAC;;AAEzB;AACA;AACA,qBAAqB,GAAG,OAAO,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA,WAAW,WAAC,uBAAuB,WAAC;AACpC,wCAAwC,WAAC;AACzC,kCAAkC,OAAO;AACzC;AACA;;AAEe,SAAS,mBAAS;AACjC;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,MAAM,YAAY,mBAAS,EAAE,MAAM,CAAC,KAAK;AACzC;AACA,oBAAoB,QAAQ,YAAY,QAAQ;AAChD;AACA,GAAG;AACH;AACA,oBAAoB,MAAM,YAAY,MAAM;AAC5C;AACA,GAAG;AACH;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,sBAAsB,WAAC,UAAU,WAAC;AAClC,iCAAiC,WAAC;AAClC,sBAAsB,WAAC;AACvB;AACA;AACA;AACA,CAAC;;;AC5DkD;AACE;AACJ;;;ACF1C;AACP;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AClB6B;;AAEf;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACA,CAAC;;;ACZc;AACf;AACA;AACA;AACA,CAAC;;;ACJiC;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO,SAAS,SAAG;AACnB;AACA,kFAAkF,2BAAQ;AAC1F;;AAEO;AACP;AACA,0CAA0C,2BAAQ;AAClD;AACA;;AAEe;AACf;AACA,4BAA4B,2BAAQ;AACpC;;;AC5ByC;AACb;AACY;AACD;;AAExB;AACf,cAAc,KAAK;;AAEnB;AACA,2BAA2B,SAAQ,mBAAmB,SAAQ;AAC9D;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,IAAI,EAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,cAAc,SAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,yBAAyB,SAAK;AAC9B,+BAA+B,WAAW;;;ACtDrB;;AAEb;AACf;AACA;AACA;AACA;AACA;;AAEA,aAAa,QAAQ,aAAa,SAAK;AACvC,QAAQ,QAAQ;;AAEhB;AACA,eAAe,QAAQ;AACvB;AACA;AACA,CAAC;;;AChBc;AACf;AACA;AACA;AACA;AACA,CAAC;;;ACLc;AACf;AACA;AACA;AACA,CAAC;;;ACJ2B;;AAEb;AACf,YAAY;AACZ,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,SAAK;AAClB,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACtB6B;;AAE9B;AACA;;AAEA,SAAS,WAAI;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,2BAA2B;AAC3B;AACA;AACA,wCAAwC;AACxC,2BAA2B;AAC3B;AACA,KAAK,OAAO;AACZ;AACA,cAAc,SAAS,UAAM,SAAS;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,WAAI;AACZ;AACA,4BAA4B,OAAO;AACnC;AACA,SAAS;AACT,CAAC;;;AC/D8B;AACP;AACI;AACF;AACI;AAC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A;AACA;AACA;;;ACPe;AACf;AACA,iBAAiB,OAAO;AACxB;AACA,CAAC;;;ACJ8C;AACK;AACA;AACY;AACd;AACQ;AACV;AACM;AACA;AACF;AACE;AAC6B;AACjC;AAC4E;AAC/C;AAC/B;AAC+B;AACwB;AACtD;AACF;;;ACnB/C,IAAI,WAAK;AACT;AACA,IAAI,cAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qIAAqI,mBAAmB;;AAEjJ;AACP;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP,QAAQ;AACR,IAAI,WAAK,CAAC;AACV;AACA;AACA;AACA;AACA;AACA,IAAI,WAAK;AACT;;AAEA;AACA;AACA,EAAE,WAAK;AACP;AACA;AACA,GAAG;AACH,IAAI,WAAK;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,WAAK,SAAS;AACpB;AACA,8BAA8B;AAC9B;AACA;AACA,QAAQ,cAAQ,EAAE,cAAQ,iBAAiB,cAAQ;AACnD,GAAG;AACH,SAAS,cAAQ,2BAA2B,cAAQ;AACpD,IAAI,WAAK;AACT;AACA;;;AC7G8B;;AAEf;AACf,cAAc,KAAK;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACVkC;;AAEpB;AACf,cAAc,KAAK;AACnB;AACA,wCAAwC,GAAG;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACRgB;;AAIE;;AAIC;;;ACZiB;AACG;;AAExC,cAAc,YAAQ;AACtB;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEQ;AACf;AACA;AACA;AACA,EAAE,eAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAEM,SAAS,aAAI;AACpB,iBAAiB,YAAG;AACpB,0DAA0D;AAC1D;AACA;;AAEO,SAAS,YAAG;AACnB,iBAAiB,YAAG;AACpB,0DAA0D;AAC1D;AACA;;AAEO,SAAS,YAAG;AACnB;AACA;AACA;AACA;;AAEA,SAAS,eAAM;AACf;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C,sCAAsC,WAAO;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAwD;AACxD;AACA,0DAA0D;AAC1D;AACA,IAAI,WAAO;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;;;ACxJ8D;;AAE/C;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,kDAAkD,eAAe,UAAU;AAC3E,8BAA8B,QAAQ,qBAAqB,MAAM;AACjE,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACvBoC;;AAEtB;AACf;AACA,IAAI,SAAS;AACb,GAAG;AACH,CAAC;;;ACNmC;;AAEpC;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB,2BAA2B,OAAO;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;;AAEA;AACA,gBAAgB,YAAG;AACnB,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;AACA,mBAAmB,YAAG;AACtB,2CAA2C;AAC3C,GAAG;;AAEH;AACA,WAAW,YAAG;AACd;AACA;;;AChF+B;AACqD;;AAErE;AACf;AACA,kCAAkC,UAAiB;AACnD,qBAAqB,WAAK,GAAG,OAAc;AAC3C,aAAa,WAAK,eAAe,OAAc;AAC/C,QAAQ,UAAiB;AACzB,CAAC;;;ACT8E;AACxC;AACJ;AACK;;AAExC,SAAS,eAAU;AACnB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,SAAS,uCAAuC,uBAAoB,GAAG,sBAAW;AACnG;AACA,0BAA0B,mBAAc,GAAG,iBAAY,eAAe,UAAU;AAChF,0CAA0C,iBAAY,GAAG,eAAU;AACnE,0BAA0B,mBAAc,GAAG,iBAAY;AACvD,CAAC;;;AC7EsC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA,CAAC;;;AC3CoC;;AAErC;AACA;AACA,IAAI,aAAI;AACR;AACA;;AAEA;AACA;AACA,IAAI,aAAI;AACR;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX,CAAC;;;ACtBmC;;AAEpC;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX,CAAC;;;ACtBmC;;AAEpC;AACA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEe;AACf;;AAEA;AACA;AACA,QAAQ,YAAG;AACX,CAAC;;;ACfoC;AACF;;AAEpB;AACf,2CAA2C,OAAO;;AAElD,qFAAqF,OAAO;AAC5F,4FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;ACfkC;;AAEpB;AACf;;AAEA,+JAA+J,OAAO;AACtK,wHAAwH,OAAO;AAC/H;AACA;AACA;AACA;AACA;;AAEA,QAAQ,QAAQ;AAChB;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;AClByC;;AAE1C,SAAS,QAAK;AACd;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,sBAAsB,QAAK,SAAS,aAAI,GAAG,YAAG;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;AACA,QAAQ,YAAG;AACX;AACA,CAAC;;;AC/BD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACVqC;AACH;AACM;;AAE1B;AACf;AACA;;AAEA,6CAA6C,YAAQ;;AAErD,qFAAqF,OAAO;AAC5F,+GAA+G,OAAO;AACtH;AACA;AACA;AACA,QAAQ,mBAAQ,qCAAqC,YAAG;AACxD;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;ACrBwC;AACN;AACM;;AAE1B;AACf;AACA;;AAEA,6CAA6C,WAAW;;AAExD,yFAAyF,OAAO;AAChG,8DAA8D,OAAO;AACrE;AACA,yFAAyF,YAAG,uCAAuC,OAAO;AAC1I;AACA,YAAY,mBAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;ACzBsC;;AAEvC,IAAI,mBAAS,GAAG,aAAS;;AAEV;AACf,aAAa,mBAAS;AACtB,CAAC;;;ACN8E;AAC5C;AACJ;AACI;AACK;;AAExC;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB,oDAAoD,UAAK;AACzD;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAW;AACpB;AACA;AACA;AACA;;AAEA,SAAS,mBAAa;AACtB;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAa;AACtB;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB;AACA;AACA,6EAA6E,UAAK;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;AACA,qEAAqE,iBAAW;;AAEhF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf,yCAAyC,uBAAoB,GAAG,sBAAW;AAC3E;AACA;AACA,+BAA+B,iBAAW;AAC1C;AACA,wBAAwB,mBAAa,UAAU,UAAU;AACzD;AACA;AACA,wBAAwB,mBAAa;AACrC;AACA,CAAC;;;AC/ED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACvBkC;;AAEnC,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,QAAQ,iBAAY,CAAC,UAAU;AAC/B,QAAQ,iBAAY;AACpB,CAAC;;;ACnByC;AACD;;AAE1B;AACf;AACA;AACA,YAAY,KAAK;;AAEjB,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA,sBAAsB,YAAG;AACzB,QAAQ,mBAAQ;AAChB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;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O;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD,mBAAmB,UAAU,WAAW,WAAI;AAC5C;AACA;AACA;;AAEA;AACA,CAAC;;;ACpB0B;AAC8B;AACd;AACM;;;ACHlC;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA,CAAC;;;ACJkC;;AAE5B,SAAS,qBAAa;AAC7B,EAAE,QAAK;AACP;;AAEe;AACf,EAAE,QAAK;AACP,EAAE,QAAK;AACP,CAAC;;;ACToC;AACW;AACL;AAC2B;AAC9B;AACH;AACD;AACgB;;AAEpD,iBAAiB,aAAa;AAC9B,kBAAkB,cAAc;AAChC,mBAAmB,eAAe;AAClC,mBAAmB;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAK,SAAS,QAAK;AAC9B;AACA;;AAEA,IAAI,OAAC;AACL;AACA,0BAA0B,UAAI;AAC9B,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA,IAAI,OAAC;AACL;AACA,0BAA0B,UAAI;AAC9B,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA;AACA;AACA,4DAA4D,UAAI;AAChE,uBAAuB,wCAAwC,EAAE;AACjE,wBAAwB,WAAW;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,UAAI;AACb,UAAU;AACV;;AAEA;AACA,SAAS,mBAAa;AACtB,UAAU,QAAK,aAAa,QAAK;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,sBAAgB;AACzB;AACA;;AAEA;AACA,SAAS,WAAK;AACd;AACA;AACA;;AAEA,SAAS,WAAK;AACd;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP,SAAS,WAAK,CAAC,OAAC;AAChB;;AAEO;AACP,SAAS,WAAK,CAAC,OAAC;AAChB;;AAEe;AACf,SAAS,WAAK;AACd,CAAC;;AAED,SAAS,WAAK;AACd;AACA,eAAe,mBAAa;AAC5B,kBAAkB,sBAAgB;AAClC;AACA,kBAAkB,YAAQ;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,UAAI;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAK;AAC5B,UAAU,UAAM;AAChB;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,aAAa,UAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,eAAe,EAAE;;AAEvD;;AAEA;AACA,oCAAoC,mCAAmC,EAAE;AACzE,qCAAqC,wBAAwB,EAAE;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,gDAAgD,EAAE;AAC3F,uDAAuD,gCAAgC,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAW;;AAE/B;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,SAAS;AACrB;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,UAAM;AACtB,oBAAoB,WAAK;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,gHAAgH,EAAE;AACpJ,kCAAkC,gGAAgG,EAAE;AACpI,sCAAsC,uGAAuG,EAAE;AAC/I,uCAAuC,uGAAuG,EAAE;AAChJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,WAAW,KAAK,SAAU;AAChC;AACA;;AAEA;AACA,wBAAwB,QAAK;AAC7B;;AAEA;AACA,eAAe,QAAK;AACpB,wBAAwB,QAAK,2EAA2E,QAAK;AAC7G,wBAAwB,OAAC;AACzB,wBAAwB,OAAC;AACzB,gBAAgB,WAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAK;AAClD;AACA;AACA,kBAAkB,QAAK,mBAAmB,QAAK,iCAAiC,KAAK;AACrF;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,OAAC,+BAA+B,OAAC;AACvD,sBAAsB,OAAC,wBAAwB,OAAC;AAChD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAM;AACtB;;AAEA;AACA;;AAEA,QAAQ,QAAK;AACb;AACA;AACA,KAAK;AACL,iBAAiB,UAAM,CAAC,QAAK;AAC7B;AACA;AACA;AACA;AACA;;AAEA,MAAM,MAAW,CAAC,QAAK;AACvB;;AAEA,IAAI,qBAAa;AACjB,IAAI,SAAS;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAO;AACb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,qBAAa;AACnB,UAAU,QAAK;AACf,YAAY,QAAK;AACjB;AACA,6CAA6C,oBAAoB,EAAE,OAAO;AAC1E,OAAO;AACP,QAAQ,OAAU,CAAC,QAAK;AACxB;AACA;AACA;AACA;AACA,uDAAuD;AACvD,UAAU,WAAK;AACf;AACA;;AAEA;AACA,cAAc,QAAK;AACnB,kBAAkB;AAClB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA,wCAAwC;AACxC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAO;AACb;;AAEA;AACA,cAAc,QAAK;AACnB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,gBAAgB,QAAK;AACrB;AACA;AACA;AACA,aAAa;AACb,qCAAqC;AACrC,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAO;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;ACnkBoB;;;ACLb;AACA;AACA,IAAI,OAAE;AACN,IAAI,WAAM,GAAG,OAAE;AACf,IAAI,QAAG,GAAG,OAAE;AACZ,IAAI,QAAG;;;ACLiB;AACC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB,oBAAoB;AACpB;AACA;AACA;AACA,yBAAyB,SAAK;AAC9B;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,QAAQ,QAAG,IAAI,QAAG;AAClB,wBAAwB,QAAG;;AAE3B;AACA;AACA,kBAAkB;AAClB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,gBAAgB;AAChB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB,+BAA+B;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C,QAAG;AAC7C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACxHM,IAAI,eAAK;;;ACAD;AACf;AACA;AACA;AACA,CAAC;;;ACJD,IAAI,OAAE;AACN,IAAI,QAAG,OAAO,OAAE;AAChB,IAAI,YAAO;AACX,iBAAiB,QAAG,GAAG,YAAO;;AAE9B;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA,SAAS,SAAI;AACb;AACA;;AAEA,iBAAiB,SAAI;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,YAAO;;AAE9B;AACA;AACA;AACA,iDAAiD,YAAO;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAE;AAC9B;AACA;;AAEA;AACA,8BAA8B,YAAO;AACrC;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,YAAO,8BAA8B,YAAO;AACnF;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B,QAAG,GAAG,QAAG;;AAEnC;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,YAAO;AACzB,qDAAqD,OAAE;AACvD;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,sDAAI,EAAC;;;ACjImB;;;ACAT;AACI;AACM;AACX;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,eAAK;AACpB;AACA;AACA;AACA,6CAA6C,WAAM;AACnD,2CAA2C,WAAM;AACjD,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB;AACA,6CAA6C,WAAM;AACnD,2CAA2C,WAAM;;AAEjD,qCAAqC,QAAI;;AAEzC;AACA;AACA,qCAAqC;AACrC,0CAA0C,GAAG,YAAY,GAAG;AAC5D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,0EAA0E,qBAAQ;AAClF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACtFwC;AACE;;;ACDpC,IAAI,UAAM;;AAEjB;;AAEA,gBAAgB,OAAG;AACnB;AACA;AACA,YAAY,UAAM;AAClB,GAAG;AACH;AACA,gBAAgB,UAAM;AACtB,GAAG;AACH;AACA,SAAS,UAAM;AACf;AACA,GAAG;AACH;AACA,mBAAmB,UAAM;AACzB;AACA,GAAG;AACH;AACA,mDAAmD,UAAM;AACzD,GAAG;AACH;AACA;AACA,mDAAmD,UAAM;AACzD;AACA,GAAG;AACH;AACA;AACA,mDAAmD,UAAM;AACzD;AACA,GAAG;AACH;AACA;AACA,mDAAmD,UAAM,gBAAgB,8CAA8C;AACvH;AACA,GAAG;AACH;AACA;AACA,mDAAmD,UAAM;AACzD;AACA,GAAG;AACH;AACA,mDAAmD,UAAM;AACzD;AACA,GAAG;AACH;AACA,mDAAmD,UAAM;AACzD;AACA;;AAEA,SAAS,OAAG;AACZ;;AAEA;AACA,+DAA+D,qBAAqB,EAAE;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEe,mDAAG,EAAC;;;AC1EK;;AAET;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAG;AACzB;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,aAAa,kCAAkC,EAAE,EAAE;AACjG,wDAAwD,8BAA8B,EAAE;AACxF;;AAEA;AACA,6BAA6B,iDAAiD,EAAE;AAChF,0BAA0B,2CAA2C,EAAE;AACvE,8BAA8B,uDAAuD,EAAE;AACvF,sBAAsB,cAAc,aAAa,EAAE;AACnD,+BAA+B,mCAAmC,aAAa,EAAE;AACjF,iCAAiC,oBAAoB,aAAa,EAAE;AACpE,yBAAyB,YAAY,aAAa;AAClD;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,OAAG;AACZ;;AAEA;AACA;AACA;;;ACxE6C;;AAE7C;;AAEA,YAAY,OAAG;;AAEf,gBAAgB,OAAG;AACnB;AACA;AACA;AACA;AACA,SAAS,UAAM;AACf;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,OAAG;AACZ;;AAEA;AACA,0DAA0D,gBAAgB,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEe,mDAAG,EAAC;;;ACtCJ;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,qCAAqC,0BAA0B;AAC/D;AACA,CAAC;;;ACJsC;AACF;AACA;AACE;AACI;AACE;;;ACL7C,IAAI,eAAK;;AAEF,IAAI,0BAAK,GAAG,eAAK;;;ACFT;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AC1Be,0DAAa;;;ACAuC;AACrC;AACM;AACV;AACQ;AACA;AACR;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,kBAAkB,OAAgB;AAClC;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,UAAM;AACzB,WAAW,QAAQ;AACnB,WAAW,SAAK;AAChB,KAAK;AACL,2BAA2B,aAAS;AACpC;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,QAAI;AACd;AACA,KAAK;;AAEL;AACA,mDAAmD,OAAO;AAC1D,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,iEAAiE;AACjE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAA4F,uBAAQ,CAAC,0BAAK,YAAY,uBAAQ;AAC9H;;AAEA;AACA,2DAA2D,QAAI;AAC/D;;AAEA;AACA,CAAC;;;AC1MD;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1C8C;AAChB;AACM;AACF;AACA;;AAElC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAQ;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;;AAEpF;;AAEA;AACA;AACA,iBAAiB,OAAG;AACpB,WAAW,QAAQ;AACnB,WAAW,SAAK;AAChB;AACA;;AAEA,WAAW,YAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA,sEAAsE,uBAAQ;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAA4F,uBAAQ,CAAC,0BAAK,YAAY,uBAAQ;AAC9H;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACpI8C;AACK;;;ACDpD,YAAY;AACZ,YAAY;AACZ;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA,GAAG,gBAAgB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,cAAU;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,cAAU;AAClB;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACjKuB;;AAExB,UAAU,GAAG;;AAEN;AACA;AACA;AACA;AACA;;;ACRiB;;AAExB,UAAU,GAAG;;AAEN;AACA;AACA;AACA;AACA;;;ACRQ;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE;AACpG;AACA;AACA;AACA;AACA;;;ACb2C;AAC2C;AACA;AACvC;;;ACH/C;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPD;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPD;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPoD;AAC3B;;AAE1B;AACA;AACA;AACA,WAAW,QAAI;AACf;AACA,KAAK;AACL;AACA;;AAEe,SAAS,OAAG;AAC3B;AACA,eAAe,GAAS;AACxB,SAAS,QAAI;AACb;AACA,GAAG;AACH;;AAEO,IAAI,OAAG,YAAY,QAAQ;AAC3B,IAAI,OAAG,YAAY,QAAQ;;;ACrBnB;AACf;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA,GAAG;AACH,CAAC;;;ACRD;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPyB;;AAE1B;AACA;AACA,WAAW,QAAI;AACf;AACA,KAAK;AACL;AACA;;AAEe,iEAAyB,EAAC;;AAElC,IAAI,QAAI;;AAER;;;ACdgC;AACI;AACI;AACN;AACF;AACA;AACS;;;ACNjC;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA,iDAAiD,OAAO;AACxD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnCc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA,SAAS,OAAG;AACZ,CAAC;;AAED,SAAS,OAAG;AACZ,wCAAwC;;AAExC;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD,GAAG;AACH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,IAAI,OAAG;AACP;;AAEA;AACA;;;ACnFe;AACf,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC1Cc;AACf;AACA;AACA,8CAA8C;AAC9C,GAAG;AACH;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACNyB;;AAEX;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACrEc;AACf,0FAA0F;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP,kCAAkC,OAAO;AACzC;AACA;;;AC7De;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA,gCAAgC;AAChC,GAAG;AACH;AACA,CAAC;;;ACNyB;;AAEX;AACf;AACA,2BAA2B,QAAI;AAC/B;AACA;AACA;AACA,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C;AACA;AACA;AACA,CAAC;;;ACfyB;;AAEX;AACf;AACA,iCAAiC,QAAI;AACrC;AACA;AACA;AACA;AACA,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACpBM,SAAS,UAAQ;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;ACNM,SAAS,UAAQ;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;ACNqD;AACrB;AACF;AACI;AACJ;AACmC;AACnC;AACA;AACE;AACU;AACN;AACA;;AAEtB;AACf,sCAAsC,UAAQ,kBAAkB,UAAQ;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,gBAAgB;AAC9B,+CAA+C;AAC/C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,YAAY,gDAAgD;AAC5D;AACA,mBAAmB,OAAO;AAC1B;AACA,sCAAsC,qDAAqD;AAC3F;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,GAAQ;AACxB,mBAAmB,MAAW;AAC9B,kBAAkB,SAAU;AAC5B,iBAAiB,QAAS;AAC1B,mBAAmB,sBAAW;AAC9B,iBAAiB,IAAS;AAC1B,mBAAmB,UAAW;AAC9B,sBAAsB,SAAc;AACpC,iBAAiB,QAAS;AAC1B,iBAAiB,QAAS;AAC1B,kBAAkB,KAAU;AAC5B,uBAAuB,UAAe;AACtC,cAAc,KAAM;AACpB,cAAc,KAAM;;;ACxE2B;;;ACAb;AACJ;AACO;;AAErC,SAAS,SAAC;AACV;AACA;;AAEA,SAAS,SAAC;AACV;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA,6CAA6C,qBAAQ;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC,aAAa,QAAQ,QAAQ,SAAC,EAAE,SAAC;AACjC,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,MAAM;AACnC,6BAA6B,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,CAAC;;;ACjGiC;AACJ;AACI;;AAElC,SAAS,UAAK;AACd;AACA;;AAEA,SAAS,SAAI;AACb;AACA;AACA;AACA;;AAEe;AACf,WAAW,UAAK;AAChB;AACA;AACA,iBAAiB,qBAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,gBAAgB;AACrD,uDAAuD,OAAO;AAC9D;AACA,2DAA2D,MAAM;AACjE,2DAA2D,MAAM;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAG;AACtB;;AAEA,qCAAqC,OAAO;AAC5C;AACA,yDAAyD,SAAI;AAC7D,yDAAyD,SAAI;AAC7D;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,CAAC;;;ACnHoC;AACH;AACH;;AAExB,SAAS,YAAC;AACjB;AACA;;AAEO,SAAS,YAAC;AACjB;AACA;;AAEA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAG;AAClB,gBAAgB,KAAK;AACrB,cAAc,YAAQ;;AAEtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA,OAAO;;AAEP,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,CAAC;;;ACtJiC;AACJ;AACO;AACH;;AAEnB;AACf;AACA;AACA;AACA,iBAAiB,qBAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,QAAQ,QAAQ,YAAC,EAAE,YAAC;AACxD,0BAA0B,OAAO;AACjC;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA,yBAAyB,MAAM;AAC/B,yBAAyB,MAAM;AAC/B;AACA;AAC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A,gBAAgB,eAAe;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,WAAW;;AAEzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,UAAU;;AAEpC;AACA;;AAEA;AACA;AACA,mDAAmD,cAAc;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sEAAsE;AACtE,sEAAsE;AACtE,qIAAqI;AACrI,qEAAqE;AACrE;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC,eAAe;AAClD,gDAAgD,YAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;AC7ImC;;AAEpC,IAAI,oBAAM;AACH,IAAI,oBAAM;AACV,IAAI,0BAAY;;AAEvB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc;AACf,EAAE,oBAAM,GAAG,UAAY;AACvB,EAAE,oBAAM,GAAG,oBAAM;AACjB,EAAE,0BAAY,GAAG,oBAAM;AACvB,SAAS,oBAAM;AACf;;;AClBkC;;AAEnB;AACf,sBAAsB,YAAQ;AAC9B,CAAC;;;ACJiC;;AAEnB;AACf,yDAAyD,YAAQ,qBAAqB,YAAQ;AAC9F,CAAC;;;ACJiC;;AAEnB;AACf;AACA,qBAAqB,YAAQ,QAAQ,YAAQ;AAC7C,CAAC;;;ACLoF;AACpC;AACY;AACF;AACE;AACF;;;ACL3D;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf,GAAG;AACH;AACA,IAAI,SAAG;AACP,IAAI,SAAG;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,SAAG;AACZ;AACA;AACA;AACA;AACA;;;ACvCO,IAAI,YAAO;AACX,IAAI,aAAQ;AACZ,IAAI,WAAE;AACN,IAAI,eAAM,GAAG,WAAE;AACf,gBAAgB,WAAE;AAClB,IAAI,YAAG,GAAG,WAAE;;AAEZ,IAAI,YAAO,SAAS,WAAE;AACtB,cAAc,WAAE;;AAEhB;AACA;AACA;AACA,IAAI,QAAG;AACP;AACA;AACA;AACA;AACA;AACA,IAAI,QAAG;AACP,IAAI,SAAI,6BAA6B,mCAAmC;AACxE;AACA;;AAEA;AACP,8BAA8B,WAAE;AAChC;;AAEO;AACP,iBAAiB,eAAM,aAAa,eAAM;AAC1C;;AAEO;AACP,cAAc,QAAG;AACjB;;;AClCe,SAAS,SAAI;;;ACA5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;ACpE2B;AACoC;AACtC;AACI;;AAEvB,kBAAkB,KAAK;;AAE9B,cAAc,KAAK;AACnB,IAAI,aAAQ;AACZ;AACA,IAAI,YAAO;AACX,IAAI,YAAO;AACX,IAAI,YAAO;;AAEJ;AACP,SAAS,SAAI;AACb,aAAa,SAAI;AACjB,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,+BAA+B,YAAG;AAClC,iDAAiD,SAAI;AACrD,GAAG;AACH;AACA,gBAAgB,YAAG;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,aAAQ;AACpB;;AAEA;AACA;AACA,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AClD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA,SAAS,wBAAmB;AAC5B,oCAAoC,eAAM,GAAG,YAAO,GAAG,eAAM;AAC7D,oCAAoC,eAAM,GAAG,YAAO,GAAG,eAAM;AAC7D;;;AClI2B;AACsC;;AAElD,8DAAI;AACnB,cAAc,aAAa,EAAE;AAC7B;AACA;AACA,IAAI,WAAE,GAAG,eAAM;AACf,CAAC,EAAC;;AAEF;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gCAAgC,WAAE,IAAI,WAAE;AACxC,kBAAkB,GAAG;AACrB,UAAU,GAAG,SAAS,WAAE,IAAI,YAAO,GAAG;AACtC,6DAA6D,eAAM,IAAI,eAAM;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,sCAAsC,WAAE,GAAG;AAClD,YAAY,GAAG,oBAAoB,YAAO,qBAAqB,YAAO,CAAC;AACvE,YAAY,GAAG,oBAAoB,YAAO,qBAAqB,YAAO;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,QAAG;AAC7B,SAAS,GAAG,sBAAsB,YAAO;AACzC,QAAQ,IAAI,EAAE,QAAG,oBAAoB,QAAG,UAAU,QAAG;AACrD,YAAY,QAAG,oBAAoB,QAAG,UAAU,QAAG;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,eAAM;AAC5B,kBAAkB,WAAE;AACpB;AACA,iBAAiB,WAAE;AACnB,iBAAiB,WAAE;AACnB,iBAAiB,WAAE;AACnB;AACA,kBAAkB,WAAE;AACpB,kBAAkB,WAAE;AACpB,kBAAkB,WAAE;AACpB,GAAG,UAAU,GAAG,oBAAoB,YAAO;AAC3C,mCAAmC,WAAE,IAAI,WAAE;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AC3FqH;AAC9E;AACsB;AACtB;AACZ;;AAEZ;AACf,WAAW,QAAG;AACd,kBAAkB,OAAO;AACzB;AACA,sBAAsB,GAAG,OAAO,YAAO,CAAC;;AAExC;AACA,IAAI,YAAY;AAChB;;AAEA;AACA,WAAW,QAAG,WAAW,QAAG;AAC5B;;AAEA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,WAAE,IAAI,WAAE;AACxD;AACA;AACA;AACA;AACA;AACA,yBAAyB,UAAU,oBAAoB,UAAU;AACjE,yBAAyB,YAAO;AAChC,yBAAyB,YAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,mBAAS;AACtB,aAAa,mBAAS;;AAEtB;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,cAAc;AAC9B,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,IAAI,mBAAmB;;AAEvB;AACA;AACA,YAAY,YAAY;AACxB,aAAa,YAAY;AACzB,2BAA2B,YAAY;;AAEvC;;AAEA,YAAY,IAAI;AAChB,YAAY,cAAc;AAC1B,IAAI,mBAAmB;AACvB,QAAQ,mBAAS;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,GAAG,SAAS,WAAE,IAAI,YAAO;AACzC,oCAAoC,YAAO;;AAE3C;;AAEA;AACA;AACA;AACA,sCAAsC,GAAG,mBAAmB,YAAO;AACnE;AACA,kBAAkB,WAAE;AACpB,eAAe,cAAc;AAC7B,MAAM,mBAAmB;AACzB,iBAAiB,mBAAS;AAC1B;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,WAAE;AACrC;AACA,+BAA+B;AAC/B,mCAAmC;AACnC,4BAA4B;AAC5B,gCAAgC;AAChC;AACA;;AAEA,SAAS,QAAI,gEAAgE,WAAE,WAAW,WAAE;AAC5F,CAAC;;;ACrLc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;AC1DoC;AACH;AACJ;AACI;AACH;;AAE/B;;AAEA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,WAAW,GAAG,cAAc,YAAO;AACnC,UAAU,GAAG,cAAc,YAAO;AAClC,UAAU,GAAG,cAAc,YAAO;AAClC,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,WAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,OAAO;AAChD,kHAAkH,OAAO;AACzH;AACA,yBAAyB,yEAAyE;AAClG,gBAAgB,0EAA0E;AAC1F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,SAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,MAAU;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,cAAc,SAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;ACvKwC;;AAEzB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,aAAa;AAC5E,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;;;ACnB2B;AAC+B;AACjC;AACI;;AAE9B,gBAAgB,KAAK;AACrB,IAAI,cAAO;AACX,IAAI,cAAO;AACX,IAAI,cAAO;;AAEX;AACA,UAAU,SAAI;AACd,SAAS,SAAI;AACb;AACA,WAAW,SAAI;AACf,gBAAgB,SAAI;AACpB,cAAc,SAAI;AAClB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,SAAI;AAClD;;AAEA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,EAAE,cAAO,WAAW,cAAO,GAAG,QAAG,OAAO,cAAO,GAAG,QAAG;AACrD;AACA;;AAEA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,eAAe,QAAG;AAClB,eAAe,QAAG;AAClB,cAAc,GAAG,UAAU,cAAO;AAClC,iBAAiB,QAAG;AACpB,iBAAiB,QAAG;AAC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A;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAM;AACvD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,SAAS,aAAM;AACf;AACA;AACA;AACA;AACA;;;AC1DmC;AACJ;AACD;AACI;AACI;AACF;AACA;AACF;;AAEnB;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,UAAM;AACZ;AACA;AACA;;AAEA;AACA,IAAI,UAAM,0BAA0B,SAAQ;AAC5C,WAAW,SAAQ;AACnB;;AAEA;AACA,IAAI,UAAM,0BAA0B,OAAW;AAC/C,WAAW,OAAW;AACtB;;AAEA;AACA,IAAI,UAAM,0BAA0B,WAAU;AAC9C,WAAW,WAAU;AACrB;;AAEA;AACA,IAAI,UAAM,0BAA0B,aAAY;AAChD,WAAW,aAAY;AACvB;;AAEA;AACA,kFAAkF,mBAAQ;AAC1F;;AAEA;AACA;AACA,qDAAqD,UAAU,QAAQ,WAAW;AAClF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AC5Dc;AACf;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAyB,yBAAyB,EAAE;AACpD,sBAAsB,sBAAsB,EAAE;AAC9C,yBAAyB,yBAAyB,EAAE;AACpD,uBAAuB,uBAAuB,EAAE;AAChD,4BAA4B,4BAA4B,EAAE;AAC1D,0BAA0B,0BAA0B;AACpD;;;ACzB+C;AACL;;AAE1C;AACA;AACA;AACA;AACA,EAAE,UAAS,2BAA2B,WAAY;AAClD,YAAY,WAAY;AACxB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AC9CuC;AAC+B;AAC7B;;AAEzC;AACA,qBAAqB,QAAG,MAAM,OAAO,EAAE;;AAExB;AACf,mBAAmB,iBAAQ;AAC3B,CAAC;;AAED;AACA,SAAS,WAAW;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,SAAS,iBAAQ;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,IAAI;AAClB,iBAAiB,IAAI;AACrB,oBAAoB,GAAG,CAAC,GAAG,WAAW,YAAO,IAAI,GAAG,sBAAsB,YAAO,6BAA6B,KAAK;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG;AAChB,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,sCAAsC,EAAE;AAC/F,8BAA8B,qBAAqB,sCAAsC;AACzF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,mBAAS;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;ACrGoD;AACZ;AACM;AACb;AACE;AACsB;AACf;AACD;AACqB;AAC5B;;AAElC,uBAAuB,WAAW;AAClC;AACA,0BAA0B,OAAO,MAAM,OAAO;AAC9C;AACA,CAAC;;AAED;AACA,SAAS,WAAW;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,QAAG;AACpB,iBAAiB,QAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,SAAS,qBAAU;AAClC,uCAAuC,gBAAgB,EAAE;AACzD;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,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EA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnFD,SAAS,WAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,wBAAwB,WAAK;AAC7B,CAAC;;;ACXc;AACf;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACZc;AACf;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,CAAC;;;ACTc;AACf;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACZc;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;ACRc;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;ACNc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7Be;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACRc;AACf;AACA;AACA,wBAAwB;AACxB,kBAAkB,kCAAkC;AACpD;AACA,GAAG;AACH;AACA,CAAC;;;ACRgC;AACF;AACY;AACF;AACZ;AACE;AACA;AACU;AACI;AACV;AACF;;AAElB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,eAAU;AACnB,QAAQ,cAAS;AACjB,aAAa,SAAc;AAC3B,cAAc,UAAe;AAC7B,OAAO,aAAQ;AACf,QAAQ,cAAS;AACjB,QAAQ,cAAS;AACjB,aAAa,SAAc;AAC3B,eAAe,WAAgB;AAC/B,UAAU,MAAW;AACrB,SAAS,eAAU;AACnB;AACA;;;AC9EO,IAAI,4BAAK;;AAET,SAAS,aAAO;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;ACfwC;;AAEzB;AACf,4BAA4B,aAAO,CAAC,4BAAK;;AAEzC;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,kBAAkB;AAC/B,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrHgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,aAAI;AACb;AACA;AACA;AACA;;AAEO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,aAAI,aAAa,aAAI,aAAa,aAAI;AAChD;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B,6CAA6C,aAAI;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,wCAAwC,KAAK,OAAO;;AAEvE;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEe;AACf;AACA;AACA,CAAC;;;ACrHM;AACP;AACA;;AAEO;AACP;AACA;AACA;;;ACPO;AACP;AACA;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;ACRsC;AACD;AACa;;AAEnD,SAAS,kBAAa;AACtB;AACA;;AAEe;AACf;AACA;AACA;AACA,gBAAgB,YAAY;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iCAAiC,kBAAa;AAC9C,kCAAkC,YAAY;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,QAAQ;AAChD;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,yBAAQ;AAC/E;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,OAAO;AAC/B,UAAU,WAAW;AACrB,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9Ee;AACf;AACA;AACA;AACA;AACA,CAAC;;;ACLc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACXuC;AACC;;AAE1B;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnDoC;AACiB;;AAEtD,IAAI,kBAAS;AACb,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,yCAAyC,IAAI;AAC7C;AACA,kBAAkB,kBAAS;AAC3B;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,OAAO;AACP,2BAA2B,kBAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,oCAAoC,KAAK,EAAE,aAAa,aAAa;AACzG;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;;AAEA;AACA,0CAA0C,QAAQ;AAClD;;AAEA;AACA,CAAC;;;ACxEsC;;AAEvC,SAAS,sBAAiB;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,gBAAgB;AAChB,aAAa;AACb;;AAEA,mCAAmC,IAAI;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACe;AACf,mBAAmB,sBAAiB;AACpC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AC5Oc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACXgC;AACE;;AAE5B,IAAI,YAAG;;AAEP;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA,UAAU,QAAQ;AAClB;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,OAAO;AAC9D;AACA;;AAEA;AACA,qBAAqB,8DAA8D;AACnF,kBAAkB,IAAW;AAC7B,SAAS,aAAY;AACrB;AACA;;AAEA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,EAAE,YAAG,CAAC,EAAC;;;ACjEwB;AACE;AACI;AACa;;AAEpC;AACf,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC,mBAAmB,YAAY;AAC/B,qBAAqB,YAAY;AACjC,sBAAsB,YAAY;AAClC,oBAAoB,YAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA,4EAA4E,yBAAQ;AACpF;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,yBAAQ;AAClF;;AAEA;AACA,4EAA4E,yBAAQ;AACpF;;AAEA;AACA,6EAA6E,yBAAQ;AACrF;;AAEA;AACA,2EAA2E,yBAAQ;AACnF;;AAEA;AACA,CAAC;;;AC7Fc;AACf;AACA;AACA;;AAEA,6BAA6B,OAAO;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC7CyB;AACE;;AAEb;AACf,sBAAsB,aAAK,GAAG,IAAI;AAClC,CAAC;;;ACLgC;AACE;AACW;;AAE/B;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,OAAO;AACxD,sBAAsB,IAAW;AACjC,aAAa,aAAY;AACzB;AACA;AACA,KAAK;AACL,gCAAgC,aAAa;AAC7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,EAAE,YAAG,CAAC,EAAC;;;ACnCqC;AACU;AACV;AACW;AACF;AACL;AACF;AACR;AACY;AACO;AACJ;AACE;AACQ;AACF;AACI;;;ACdnD;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACdc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnBD;AACA;AACA;AACA;AACe;AACf;AACA,CAAC;;;ACN2B;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB,uBAAuB,SAAK;AAC5B;AACA;;AAEA,gCAAgC;AAChC;;AAEe;AACf;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,QAAQ;AAC3C,qBAAqB,qCAAqC;;AAE1D;AACA,CAAC;;;AChDc;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACfc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACtB6C;AACQ;AACR;AACQ;AACJ;;;ACJnC;AACf;AACA,CAAC;;;ACF2C;;AAE7B;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;AChB0B;;AAE7B;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;AC3B0B;AACd;;AAEf;AACf;AACA,uBAAuB,UAAM;AAC7B;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACd0B;;AAE7B;AACf;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACb0B;AACR;;AAErB;AACf;AACA,0BAA0B,SAAS;AACnC;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACd0B;;AAE7B;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACZiC;AACF;AACM;AACR;AACQ;AACI;;;ACLpD;AACP;AACA;AACA,+BAA+B;AAC/B,8CAA8C;AAC9C;AACA;AACA;;AAEO;AACP;AACA;AACA,sCAAsC;AACtC,4DAA4D;AAC5D;AACA;AACA;;;AChBA,IAAI,wBAAK;;AAEF,IAAI,SAAG,GAAG,wBAAK;AACf,IAAI,wBAAK,GAAG,wBAAK;;;ACHU;AACJ;AACG;;AAE1B,gBAAgB;;AAER;AACf,cAAc,OAAG;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,OAAG;AAC5B;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,wBAAK;AAC5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,SAAS;;AAEX;AACA;;;AC5C2C;AACV;AACD;;AAEjB;AACf,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAQ,qBAAqB,yBAAyB,EAAE;AACzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO,SAAS,UAAK;AACrB;AACA;;;ACnGe;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACF+B;AACoE;AACjE;AACD;AACJ;;AAE9B;;AAEO,SAAS,mBAAQ;AACxB;AACA;;AAEA;AACA;AACA,qBAAqB,oBAAoB;AACzC,QAAQ,qBAAQ;AAChB;;AAEA;AACA;AACA;AACA,sBAAsB,oCAAoC;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,MAAM;AAClB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAAS,sBAAW;AAC3B;AACA;AACA,oBAAoB,SAAgB;AACpC;AACA;AACA;AACA,cAAc,mBAAQ;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wFAAwF,UAAiB;AACzG;;AAEA;AACA,wCAAwC,SAAG,SAAS,mBAAM,aAAa,mBAAQ;AAC/E;;AAEA;AACA,uCAAuC,wBAAK;AAC5C;;AAEA;AACA,mBAAmB,wBAAK,wBAAwB,SAAgB;AAChE;;AAEA;AACA,6DAA6D,mBAAQ,qBAAqB,mBAAQ;AAClG;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf,SAAS,sBAAW;AACpB;;;AC3HkC;AAC+E;;AAElG;AACf,aAAa,QAAQ;AACrB;AACA,cAAc,eAAe;AAC7B;AACA;AACA;AACA,4DAA4D,eAAe;AAC3E,aAAa,0BAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA,SAAS,oBAAM;AACf,CAAC;;;AC5B6C;AACU;AACvB;AACK;;AAE/B;AACP;;AAEA;AACA;AACA,WAAW,KAAK;AAChB;;AAEA;AACA;AACA,WAAW,cAAU;AACrB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,aAAa;;AAExB;AACA;AACA;AACA,aAAa,aAAa;AAC1B,KAAK;AACL;AACA;AACA,aAAa,aAAa;AAC1B;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEe,SAAS,iBAAM;AAC9B,cAAc,UAAU,CAAC,mBAAQ,EAAE,mBAAQ;;AAE3C;AACA,WAAW,IAAI,QAAQ,iBAAM;AAC7B;;AAEA,EAAE,SAAS;;AAEX;AACA;;;ACvE4B;AACO;AACL;;AAEf,SAAS,iBAAQ;AAChC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,wCAAwC,SAAG,SAAS,mBAAM;AAC1D;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,iBAAQ;AACnB;;AAEA,8BAA8B,SAAG,cAAc,mBAAM;;AAErD,SAAS,SAAS;AAClB;;;AC5Be;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;ACjB8B;AACE;AACP;AACqB;AACd;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,2BAA2B,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA,OAAO,YAAY,OAAO;AAC1B,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,KAAK;AACf;;AAEA;AACA;;AAEA;AACA;AACA,qDAAqD,oBAAM;AAC3D;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,IAAI;AACtB,0BAA0B,kCAAkC,EAAE;AAC9D,yBAAyB,iCAAiC;AAC1D,KAAK;AACL;;AAEA;AACA;;AAEe,SAAS,OAAG;AAC3B,sBAAsB,sBAAW;;AAEjC;AACA,WAAW,IAAI,QAAQ,OAAG;AAC1B;;AAEA,EAAE,SAAS;;AAEX;AACA;;;AChJmC;AACY;AACd;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEe;AACf,wBAAwB,sBAAW;;AAEnC;AACA,WAAW,IAAI;AACf;;AAEA,SAAS,SAAS;AAClB;;;AClCmC;AACsB;AACxB;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP,wBAAwB,mBAAQ,EAAE,mBAAQ;AAC1C;;AAEA;AACA,sCAAsC,mBAAQ,EAAE,mBAAQ;AACxD;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEe,SAAS,OAAG;AAC3B,qBAAqB,sBAAW;;AAEhC;AACA,WAAW,IAAI,QAAQ,OAAG;AAC1B;;AAEA,EAAE,SAAS;;AAEX;AACA;;AAEO,SAAS,QAAI;AACpB,SAAS,OAAG;AACZ;;;ACjDkE;AACpC;AACG;;AAElB,SAAS,iBAAQ;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,QAAS;AACjD;AACA;;AAEA;AACA,2CAA2C,MAAM;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA,uCAAuC,wBAAK;AAC5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,iBAAQ;AACnB;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;;ACzDgC;AACF;AACK;AACF;;AAElB,SAAS,iBAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,MAAM;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,wBAAK;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,iBAAQ;AACnB;AACA;AACA;AACA;;AAEA,SAAS,SAAS,OAAO,SAAS;AAClC;;;ACxDgC;AACF;AACG;;AAElB,SAAS,mBAAS;AACjC;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,MAAM;AAChC;;AAEA;AACA,wCAAwC,wBAAK;AAC7C;;AAEA;AACA,uCAAuC,wBAAK;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,mBAAS;AACpB;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;;ACvCA,IAAI,WAAE;AACN,IAAI,WAAE;;AAES;;AAEf;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mDAAmD;AACnD,SAAS;AACT,mDAAmD;AACnD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,MAAM,WAAE,kBAAkB,WAAE;AAC5B,aAAa,WAAE,UAAU,WAAE;AAC3B,8BAA8B,WAAE,EAAE,WAAE;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8BAA8B;AAC3D,6BAA6B,0CAA0C,EAAE;AACzE;AACA;;AAEA;AACA;;;ACnEkC;;AAElC,IAAI,uBAAW,GAAG,WAAQ;AAC1B;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA,uBAAW;AACX;AACA;AACA,uBAAuB,uBAAW;AAClC,SAAS,WAAQ;AACjB;AACA,GAAG;AACH;AA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ACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAU;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS,cAAc,SAAS;AACxE,iBAAiB,UAAM;AACvB;AACA;AACA;AACA,SAAS;AACT;AACA,wCAAwC,MAAU,cAAc,MAAU;AAC1E,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;;AAEA,YAAY,4BAA4B;AACxC;AACA;AACA,kCAAkC;;AAElC,SAAS,UAAG;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS,UAAG;AACZ;;AAEA;AACA,SAAS,UAAG;AACZ;;AAEA;AACA,SAAS,UAAG;AACZ;;AAEA;AACA,SAAS,UAAG,KAAK,OAAO,OAAO,QAAQ;AACvC;;AAEA;AACA,SAAS,UAAG;AACZ;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,UAAG;AACZ;;AAEA;AACA,S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AAqgD,EAAC;;AAEzhD,YAAY,YAAI,CAAC,UAAM;;AAEvB,cAAc,YAAI,CAAC,UAAM;;AAEzB,aAAa,YAAI,CAAC,UAAM;;;ACfyC;AACR;AACF;AACE;AACE;AACA;AACN;AACA;AACA;AACU;AACe;AACA;AACA;AACA;AACA;AACA;AACM;AACA;AACM;AACL;AACA;AACA;AACA;AACM;AACN;AACA;AACA;AACM;AACN;AACM;AACA;AACF;AACG;AACH;AACM;AACT;AACS;AAC1B;AACW;AACuC;AAClD;AACJ;AAC2F;;;AC1CpJ;AACf;AACA;AACA;AACA,CAAC;;;ACJM,IAAI,QAAG;AACP,IAAI,UAAK;AACT,IAAI,YAAG;AACP,IAAI,YAAG;AACP,IAAI,QAAG;AACP,IAAI,YAAG;AACP,IAAI,SAAI;;AAER,IAAI,gBAAO;AACX,IAAI,oBAAE;AACN,IAAI,wBAAM,GAAG,oBAAE;AACf,IAAI,qBAAG,OAAO,oBAAE;;AAEhB,SAAS,SAAI;AACpB,8BAA8B,oBAAE;AAChC;;AAEO,SAAS,SAAI;AACpB,kBAAkB,wBAAM,cAAc,wBAAM;AAC5C;;;ACnB6B;AACK;AACgE;;AAElG;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;;AAEA,SAAS,aAAS;AAClB;AACA;AACA;AACA,cAAc,gBAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAI,CAAC,YAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,qBAAqB,qBAAQ;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,wBAAM;AACvD,+CAA+C,wBAAM;AACrD,aAAa,QAAG;AAChB;;AAEA,qCAAqC,QAAI;;AAEzC;AACA;;AAEA;AACA,eAAe,gBAAO;;AAEtB;AACA,kBAAkB,qBAAG,GAAG,gBAAO;AAC/B,0BAA0B,YAAG,WAAW,YAAG;AAC3C;AACA,eAAe,gBAAO;AACtB,4BAA4B,YAAG,WAAW,YAAG;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAO,sDAAsD,SAAI;AACtF,eAAe,QAAG,CAAC,QAAG;AACtB;AACA;AACA;AACA;;AAEA;AACA,eAAe,gBAAO;AACtB,iBAAiB,SAAI,WAAW,YAAG;AACnC,iBAAiB,SAAI,WAAW,YAAG;AACnC,8BAA8B,gBAAO;AACrC;AACA,8BAA8B,gBAAO;AACrC;AACA;;AAEA,qBAAqB,YAAG;AACxB,qBAAqB,YAAG;AACxB,qBAAqB,YAAG;AACxB,qBAAqB,YAAG;;AAExB;AACA,eAAe,gBAAO;AACtB,uBAAuB,YAAG;AAC1B,uBAAuB,YAAG;AAC1B,uBAAuB,YAAG;AAC1B,uBAAuB,YAAG;AAC1B;;AAEA;AACA,iBAAiB,oBAAE,UAAU,aAAS;AACtC;AACA;AACA;AACA;AACA,uBAAuB,YAAG,CAAC,SAAI,wBAAwB,SAAI,sBAAsB,SAAI;AACrF,mBAAmB,SAAI;AACvB,gBAAgB,QAAG;AACnB,gBAAgB,QAAG;AACnB;AACA;;AAEA;AACA,kBAAkB,gBAAO;;AAEzB;AACA,qBAAqB,gBAAO;AAC5B;AACA;;AAEA;;AAEA;AACA,qDAAqD,UAAK,kBAAkB,UAAK;;AAEjF;AACA;AACA,yCAAyC,UAAK,kBAAkB,UAAK;AACrE,gCAAgC,UAAK,kCAAkC,UAAK;AAC5E,yCAAyC,UAAK,kBAAkB,UAAK;AACrE;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAO,aAAa,gBAAO;;AAE5C;AACA,qBAAqB,gBAAO;AAC5B;AACA;;AAEA;;AAEA;AACA,qDAAqD,UAAK,kBAAkB,UAAK;;AAEjF;AACA;AACA,yCAAyC,UAAK,kBAAkB,UAAK;AACrE,gCAAgC,UAAK,kCAAkC,UAAK;AAC5E,yCAAyC,UAAK,kBAAkB,UAAK;AACrE;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,0FAA0F,oBAAE;AAC5F,YAAY,YAAG,SAAS,YAAG;AAC3B;;AAEA;AACA,2EAA2E,qBAAQ;AACnF;;AAEA;AACA,2EAA2E,qBAAQ;AACnF;;AAEA;AACA,4EAA4E,qBAAQ;AACpF;;AAEA;AACA,4FAA4F,qBAAQ;AACpG;;AAEA;AACA,0EAA0E,qBAAQ;AAClF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACpQD;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;AC9BM,SAAS,OAAC;AACjB;AACA;;AAEO,SAAS,OAAC;AACjB;AACA;;;ACN6B;AACK;AACO;AACQ;;AAElC;AACf,UAAU,OAAM;AAChB,UAAU,OAAM;AAChB,gBAAgB,qBAAQ;AACxB;AACA,cAAc,YAAW;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,QAAI;;AAErD,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA,uEAAuE,qBAAQ;AAC/E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACtD4B;AACK;AACO;AACf;AACuB;;AAElC;AACf,WAAW,OAAM;AACjB;AACA,WAAW,qBAAQ;AACnB,WAAW,OAAM;AACjB,gBAAgB,qBAAQ;AACxB;AACA,cAAc,YAAW;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,QAAI;;AAErD,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,QAAI;AACf;;AAEA;AACA,kEAAkE,qBAAQ;AAC1E;;AAEA;AACA,kEAAkE,qBAAQ;AAC1E;;AAEA;AACA,qFAAqF,qBAAQ;AAC7F;;AAEA;AACA,kEAAkE,qBAAQ;AAC1E;;AAEA;AACA,kEAAkE,qBAAQ;AAC1E;;AAEA;AACA,qFAAqF,qBAAQ;AAC7F;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,qBAAQ;AAC/E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AC5Gc;AACf;AACA,CAAC;;;ACFc;AACf;AACA,CAAC;;;ACFiC;AACI;AACJ;AACP;;AAEZ;AACf,cAAc,qBAAQ;AACtB,mBAAmB,cAAU;AAC7B;AACA,mBAAmB,qBAAQ;AAC3B,iBAAiB,qBAAQ,CAAC,qBAAG;AAC7B,iBAAiB,qBAAQ;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qBAAG,YAAY,qBAAG;AACxC;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,qCAAqC,EAAE;AAC9F,sDAAsD,+BAA+B,EAAE;;AAEvF;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qEAAqE,qBAAQ;AAC7E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,qBAAQ;AAClF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,CAAC;;;AC9EkC;;AAE5B,oCAAoC,YAAW;;AAEtD;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;;AAEA;AACA;;;ACnC8D;AACpC;;AAEnB;AACP;;AAEA;AACA;;AAEA;AACA,gCAAgC,WAAW;AAC3C;;AAEA;AACA;;AAEe;AACf,oBAAoB,QAAI,SAAS,iBAAiB;AAClD,CAAC;;;AClB6D;AACpC;AACa;;AAExB;AACf,UAAU,iBAAI,SAAS,iBAAiB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ,UAAU,OAAO,EAAE;AAC5D,+BAA+B,QAAQ,UAAU,OAAO,EAAE;AAC1D,kCAAkC,QAAQ,UAAU,OAAO,EAAE;AAC7D,kCAAkC,QAAQ,UAAU,OAAO,EAAE;;AAE7D;AACA,gCAAgC,WAAW;AAC3C;;AAEA;AACA,CAAC;;;AC5Bc;AACf;AACA,CAAC;;;ACFM,IAAI,wBAAK;;;ACAa;AACE;AACI;AACe;AACT;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,SAAI;AACb;AACA;AACA,UAAU,OAAM;AAChB,UAAU,OAAM;AAChB;;AAEA;AACA,uBAAuB,wBAAK;AAC5B,qCAAqC,QAAI;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,gBAAW;AACpB,WAAW,WAAW;AACtB,WAAW,WAAW;AACtB,WAAW,WAAW;AACtB,WAAW,WAAW;AACtB;AACA;AACA;;AAEO;AACP,SAAS,SAAI;AACb;;AAEO;AACP,SAAS,SAAI;AACb;;AAEO;AACP,UAAU,SAAI,CAAC,gBAAW;AAC1B;AACA;AACA;AACA;;;ACnFgC;;AAEjB;AACf;AACA,6BAA6B,oBAAE;AAC/B;AACA,4BAA4B,qBAAG;AAC/B;AACA,CAAC,EAAC;;;ACRa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACjBF;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACb8B;;AAEhC;AACA,kBAAkB,oBAAE,sBAAsB,oBAAE;AAC5C,IAAI,OAAE,YAAY,qBAAG;AACrB,IAAI,OAAE,aAAa,qBAAG;;AAEP;AACf;AACA;AACA,YAAY,OAAE;AACd,YAAY,OAAE;AACd;AACA;AACA,mBAAmB,OAAO;AAC1B,cAAc,qBAAG;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACvBa;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACNF;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACVF,IAAI,KAAC;AACL,IAAI,KAAC;AACL,IAAI,KAAC;AACL,IAAI,KAAC,IAAI,KAAC;;AAEK;AACf;AACA,6BAA6B,KAAC;AAC9B;AACA,iBAAiB,KAAC;AAClB;AACA,iBAAiB,KAAC;AAClB;AACA;AACA;AACA;AACA;AACA,mBAAmB,KAAC,QAAQ,KAAC,OAAO,KAAC,QAAQ,KAAC;AAC9C,mBAAmB,KAAC,QAAQ,KAAC,OAAO,KAAC,QAAQ,KAAC;AAC9C,mBAAmB,KAAC,QAAQ,KAAC,OAAO,KAAC,QAAQ,KAAC;AAC9C,mBAAmB,KAAC,QAAQ,KAAC,OAAO,KAAC,QAAQ,KAAC;AAC9C,mBAAmB,KAAC,QAAQ,KAAC,OAAO,KAAC,QAAQ,KAAC;AAC9C,mBAAmB,KAAC,QAAQ,KAAC,OAAO,KAAC,QAAQ,KAAC;AAC9C;AACA;AACA,CAAC,EAAC;;;ACzB2B;AACQ;AACF;AACI;AACN;AACI;AACI;AACV;AACG;;AAE3B;AACP,EAAE,aAAM;AACR,EAAE,YAAK;AACP,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,GAAG;AACL;;AAEe;AACf,aAAa,qBAAQ,CAAC,aAAM;AAC5B,aAAa,qBAAQ;AACrB;;AAEA;AACA;AACA,qCAAqC,QAAI;AACzC;AACA;AACA;;AAEA;AACA,oEAAoE,qBAAQ;AAC5E;;AAEA;AACA,oEAAoE,qBAAQ;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AC7Cc,mEAAa;;;ACArB,SAAS,WAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc,WAAK,2BAA2B;AAC9C,uDAAuD;AACvD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,oFAAoF;AAClH,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;AClD0B;AACG;;AAE9B;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B,4FAA4F;AACtJ,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACnD6B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,oFAAoF,0EAA0E;AAC5L,8BAA8B;AAC9B,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACtC6B;;AAE9B;AACA,oBAAoB,KAAK;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4BAA4B,KAAK;AACjC;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,OAAO,EAAC;;;ACvDF,SAAS,cAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,cAAc,cAAK,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B,4BAA4B;AAC1D,8BAA8B;AAC9B,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AC5DqB;AACM;;AAE1B;AACP;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AC5D2B;;AAE1B;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AChD0B;AACI;;AAE7B,SAAS,gBAAK;AACrB;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,6CAA6C;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B;AAC9B,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,wDAAwD,QAAQ;AAChE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;ACvFwC;AACrB;AACQ;;AAEnC;AACA;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,8DAA8D,cAAc;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;ACzEoC;AACT;;AAEnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4DAA4D,YAAY;AACxE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;AC7DmB;;AAE3B;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACxBD,SAAS,aAAI;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,aAAI,OAAO,aAAI;AACzB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,cAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,cAAc,cAAK,yCAAyC;AAC5D;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,CAAC,cAAK,kDAAkD;AACtF,eAAe,cAAK,0CAA0C;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,4BAA4B,EAAE;AACxD,yBAAyB,2BAA2B,EAAE;AACtD,0BAA0B,4BAA4B,EAAE;AACxD,iDAAiD,mDAAmD;AACpG;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;ACvGA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA,aAAa,OAAO;AACpB;AACA,iBAAiB,QAAQ;AACzB;AACA,aAAa,WAAW;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;AChED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;;;ACpDe;AACf;AACA,iEAAiE,OAAO;AACxE;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,CAAC;;;ACRc;AACf;AACA;AACA;AACA,CAAC;;;ACJ6B;AACI;AACK;AACF;;AAErC;AACA;AACA;;AAEe;AACf,aAAa,qBAAQ;AACrB,cAAc,UAAS;AACvB,eAAe,WAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,iEAAiE,OAAO;AACxE;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oEAAoE,qBAAQ,CAAC,wBAAK;AAClF;;AAEA;AACA,qEAAqE,qBAAQ;AAC7E;;AAEA;AACA,mDAAmD,UAAS,iCAAiC,qBAAQ,CAAC,wBAAK;AAC3G;;AAEA;AACA,oDAAoD,WAAU;AAC9D;;AAEA;AACA,CAAC;;;ACxDyB;;AAEX;AACf;AACA,gDAAgD,OAAO;AACvD,mBAAmB,OAAO;AAC1B,sBAAsB,OAAO;AAC7B;AACA,EAAE,WAAI;AACN,CAAC;;;ACTc;AACf;AACA,mEAAmE,OAAO;AAC1E,4BAA4B,OAAO;AACnC;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,CAAC;;;ACbyB;;AAEX;AACf;AACA,0DAA0D,OAAO;AACjE,0BAA0B,OAAO;AACjC;AACA;AACA,EAAE,WAAI;AACN,CAAC;;;ACTyB;;AAEX;AACf;AACA,kCAAkC,OAAO;AACzC,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAI;AACN,CAAC;;;ACvByB;;AAEX;AACf;AACA,SAAS,UAAI,8BAA8B,4BAA4B,EAAE;AACzE,CAAC;;AAED;AACA;AACA;AACA;AACA;;;ACX0B;;AAEX;AACf,wBAAwB,aAAG;AAC3B,SAAS,UAAI,8BAA8B,0BAA0B,EAAE;AACvE,CAAC;;AAEM,SAAS,aAAG;AACnB;AACA;AACA;AACA;;;ACXoC;;AAErB;AACf,SAAS,eAAS;AAClB,CAAC;;;ACJqC;AACN;;AAEjB;AACf;AACA;AACA;AACA,wBAAwB,aAAG;AAC3B,cAAc,UAAU;AACxB;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AC1ByB;;AAEX;AACf,SAAS,UAAI;AACb,CAAC;;;ACJoC;AACE;AACA;AACF;AACqC;AACA;AACrB;AACiB;;AAElB;AACI;AACF;AACI;AACF;AACJ;AACQ;AACV;;AAEc;AACJ;AACR;AACE;AACgB;AACJ;AACR;AACgB;AACJ;AACR;AACI;AACZ;AACoC;AAClC;AACsD;;AAErE;AACoB;AACM;AACV;AACY;AACR;AACM;AACF;AACE;AACF;AACV;AACM;;;AC7C9C;AACf;AACA;AACA;AACA,CAAC;;;ACJM,SAAS,WAAC;AACjB;AACA;;AAEO,SAAS,WAAC;AACjB;AACA;;;ACNA;AACA,gBAAgB;AAChB;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gBAAgB,QAAQ;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe,iEAAY,EAAC;;;AC5OoB;;AAEzC;AACP;AACA,cAAc,aAAK;AACnB;AACA;AACA;AACA;AACA,EAAE,KAAK;AACP,EAAE,KAAK;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP,UAAU,aAAK;AACf;;AAEA;AACA,4BAA4B,aAAK;AACjC;AACA,iDAAiD,eAAO;AACxD,mDAAmD,eAAO;AAC1D,aAAa,aAAK;AAClB;AACA;AACA;;;ACvKwC;AACQ;;AAEzC;AACP,SAAS,KAAK;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP,sBAAsB,KAAK,+BAA+B,OAAO;AACjE,gBAAgB,KAAK;AACrB;AACA;AACA,iBAAiB,OAAO,uDAAuD,aAAK;AACpF,iCAAiC,4BAA4B,EAAE;AAC/D,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEO;AACP,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC,eAAe,KAAK;AACpB;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,aAAK;AACzC,wCAAwC,aAAK;AAC7C,sCAAsC,eAAO,8BAA8B,eAAO;AAClF,yCAAyC,aAAK,MAAM,gBAAgB;AACpE,oCAAoC,eAAO,gBAAgB,eAAO,gCAAgC,eAAO;AACzG,sCAAsC,eAAO,gBAAgB,eAAO,4BAA4B,eAAO;AACvG,sCAAsC,eAAO,gBAAgB,eAAO,gCAAgC,eAAO;AAC3G,sCAAsC,eAAO,gBAAgB,eAAO,4BAA4B,eAAO;AACvG;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iCAAiC,gBAAgB;AACjD,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,aAAK,MAAM,gBAAgB;AACnC,QAAQ,aAAK,MAAM,gBAAgB;AACnC,QAAQ,aAAK,MAAM,gBAAgB;AACnC,QAAQ,aAAK,MAAM,gBAAgB;AACnC;AACA;AACA;;AAEA,2CAA2C;AAC3C,iBAAiB,gBAAgB;AACjC,eAAe,KAAK;AACpB;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA;;;AC7H4C;AACA;;AAE5C;;AAEO;;AAEP;AACA,EAAE,YAAY;AACd;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,gBAAQ;;AAEpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;;AAEA;AACA,aAAa,eAAO;;AAEpB;AACA;AACA;AACA,YAAY,iBAAiB,OAAO;AACpC,KAAK;AACL;AACA,YAAY,eAAe,OAAO;AAClC;AACA;;AAEA,EAAE,eAAO;AACT;AACA;;AAEO;AACP;AACA;AACA;AACA,IAAI,eAAO;AACX;AACA,IAAI,YAAY;AAChB;AACA;AACA;;;AC7E4C;AACV;AACkB;AACN;AACH;;AAE3C;;AAEA;AACA,EAAE,YAAY;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,YAAY;AACd,EAAE,OAAO;AACT;AACA,EAAE,YAAY;AACd;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC,eAAO;AAC9C,wCAAwC,eAAO;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,YAAY;;AAEd;AACA;AACA,uCAAuC,eAAO;AAC9C,wCAAwC,eAAO;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,YAAY;;AAEd;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA,IAAI,UAAU;AACd;;AAEA;AACA;AACA,cAAc,UAAU;;AAExB,EAAE,YAAY;AACd,EAAE,YAAY;AACd;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;;AAEpB;AACA;AACA,cAAc,eAAO,gBAAgB;AACrC;AACA,gBAAgB,eAAO;AACvB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,mBAAmB,eAAO;AAC1B;AACA;AACA,SAAS,iBAAiB,eAAO;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,UAAU;AACZ;AACA,EAAE,OAAO;;AAET;;AAEA;AACA,IAAI,YAAY;AAChB;AACA,IAAI,OAAO;AACX,8BAA8B,UAAU;AACxC,IAAI,YAAY;AAChB,IAAI,YAAY;AAChB;AACA;;AAEA,cAAc;AACd,kBAAkB,UAAU;AAC5B;AACA;;AAEA;AACA,EAAE,YAAY;AACd,EAAE,YAAY;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,UAAU;AACZ,gBAAgB,UAAU;AAC1B,cAAc,UAAU;AACxB,EAAE,YAAY;AACd,EAAE,YAAY;AACd;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AChM8C;AACyB;AAClC;AACJ;AACS;;AAEnC,IAAI,eAAO;AACX,IAAI,gBAAQ;AACZ;AACA;AACA,IAAI,eAAO;AACX,IAAI,aAAK;;AAEhB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA,EAAE,aAAK;AACP;AACA,gBAAgB,gBAAY;AAC5B,EAAE,eAAO,OAAO,gBAAY;;AAE5B;AACA,aAAa,WAAW;AACxB;AACA;AACA,QAAQ,QAAQ;AAChB;AACA;AACA;AACA,KAAK;AACL,MAAM,WAAW;AACjB,KAAK;AACL;AACA;AACA;;AAEA,EAAE,iBAAiB;;AAEnB;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS;AACb,IAAI,SAAS;AACb;;AAEA,eAAe,aAAK;AACpB;;AAEA;AACA,EAAE,eAAO;AACT,EAAE,aAAK;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oDAAoD,QAAQ,iBAAiB,iBAAiB,EAAE;AAChG;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA;AACA;AACA;;;AC7IkC;AACe;AACN;;AAE5B;AACf,UAAU,WAAM;AAChB,UAAU,WAAM;AAChB;;AAEA;AACA,eAAe,OAAO;AACtB,0CAA0C,eAAO,IAAI,eAAO,6BAA6B,eAAO,IAAI,eAAO;AAC3G;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AC/C4C;;;ACA9B;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA;;;ACJO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO,IAAI,kBAAQ;;AAEnB,mBAAS;;AAEM,SAAS,mBAAS;AACjC,6DAA6D,kBAAQ;AACrE;AACA;;;AClDmC;;AAE5B,SAAS,yBAAa;AAC7B,EAAE,QAAK;AACP;;AAEe;AACf,EAAE,QAAK;AACP,EAAE,QAAK;AACP,CAAC;;;ACToC;AACW;AACD;AACuB;AAC9B;AACH;AACF;AACgB;AACC;;AAEpD;AACA,SAAS,kBAAa;AACtB,UAAU,QAAK,aAAa,QAAK;AACjC;;AAEA,SAAS,kBAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,kBAAQ;AAChC;;AAEA;AACA,UAAU,QAAK,WAAW,QAAK,0BAA0B,QAAK;AAC9D;;AAEA,SAAS,qBAAgB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,eAAe,kBAAa;AAC5B,eAAe,kBAAa;AAC5B;AACA;AACA,kBAAkB,qBAAgB;AAClC;AACA;AACA;AACA,oBAAoB,QAAe;AACnC,kBAAkB,YAAQ;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAQ;AAC/B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,+CAA+C,SAAS;AACxD;;AAEA;AACA;AACA,oEAAoE,SAAS;AAC7E;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,kCAAkC,EAAE;AAC1E,mDAAmD,gCAAgC,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,kBAAkB,4BAA4B,SAAS,SAAS,sCAAsC;AACtG;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,WAAW,KAAK,SAAS;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAK;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM,SAAS;AACf;AACA;;AAEA,IAAI,mBAAO;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,UAAM,CAAC,QAAK;AACxB,YAAY,KAAK;AACjB,aAAa,QAAK;AAClB,aAAa,QAAK;;AAElB,IAAI,MAAW,CAAC,QAAK;AACrB,IAAI,yBAAa;AACjB;AACA,IAAI,SAAS;AACb;;AAEA;AACA,MAAM,mBAAO;AACb;AACA,iBAAiB,QAAK,oBAAoB,QAAK;AAC/C;AACA;AACA,sEAAsE,KAAK;AAC3E;;AAEA;AACA;AACA,MAAM,OAAU,CAAC,QAAK;AACtB,MAAM,mBAAO;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA,qBAAqB,QAAK;AAC1B;;AAEA,IAAI,mBAAO;AACX,sBAAsB,UAAM;AAC5B,SAAS,UAAM;AACf;;AAEA;AACA;AACA,kBAAkB,QAAK;AACvB;AACA,qCAAqC,QAAK;AAC1C;;AAEA,IAAI,yBAAa;AACjB,eAAe,OAAO;AACtB,0BAA0B,SAAK;AAC/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6DAA6D,sBAAsB,EAAE;AACrF,MAAM,SAAS;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,QAAK;AACvB;;AAEA,IAAI,mBAAO;AACX;AACA;AACA,eAAe,OAAO;AACtB,0BAA0B,SAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,QAAK;AACvB;;AAEA,IAAI,yBAAa;AACjB;AACA,yCAAyC,oBAAoB,EAAE;AAC/D,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAM;AACtB;AACA;AACA;AACA;;AAEA;AACA,0EAA0E,oBAAQ;AAClF;;AAEA;AACA,sEAAsE,oBAAQ;AAC9E;;AAEA;AACA,yEAAyE,oBAAQ;AACjF;;AAEA;AACA,sEAAsE,oBAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AClayC;AACwC;;;ACDlF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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IuC,GAApB,EAAyBvC,GAAzB,EAA8B;AAC5BwC,SAAKpB,IAAL,CAAU,IAAV;AACD;AACD,SAAOoB,IAAP;AACD,C;;;;;;ACND;AACA;AACA,EAAE,KAA4D;AAC9D,EAAE,SACgD;AAClD,CAAC,oBAAoB;;AAErB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oCAAoC,KAA8B,GAAG,mBAAO,CAAC,CAAI,IAAI,SAAS;AAC9F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,kCAAkC,eAAe;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,iBAAiB;AACtC;AACA;AACA;;AAEA;AACA,iEAAiE;;AAEjE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB,QAAQ;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yFAAyF;;AAEzF;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,sBAAsB;AAClF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oEAAoE;;AAEpE;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,+CAA+C;;AAE/C;;AAEA,mBAAmB,WAAW;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,oDAAoD;AACpD;;AAEA,mDAAmD;AACnD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;;AAEhD;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA,yCAAyC;AACzC;;AAEA,oBAAoB;;AAEpB,kBAAkB;;AAElB,+EAA+E;;AAE/E;AACA;AACA;;AAEA,8BAA8B;;AAE9B,uBAAuB;;AAEvB,2BAA2B;;AAE3B,mBAAmB;;AAEnB,sCAAsC;;AAEtC;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL,oBAAoB;;AAEpB,yBAAyB;;AAEzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC,oCAAoC;;AAEpC,qCAAqC;;AAErC;AACA;AACA;AACA;;;AAGA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;;AAE9E;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL,8CAA8C;;AAE9C,yCAAyC;;AAEzC;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA,iFAAiF;;AAEjF,uBAAuB;;AAEvB;AACA,qEAAqE;;AAErE;AACA;AACA;AACA,KAAK;;;AAGL,0BAA0B;;AAE1B,0MAA0M;;AAE1M;AACA;AACA,KAAK;;;AAGL;AACA,wCAAwC;;AAExC,8BAA8B;;AAE9B,kCAAkC;;AAElC;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS,EAAE;;AAEX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA,iEAAiE;;AAEjE;AACA;AACA;AACA,kHAAkH;;AAElH,qBAAqB;;AAErB;AACA,gHAAgH;;AAEhH;AACA,yBAAyB;;AAEzB;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,2DAA2D;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6IAA6I;;AAE7I;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,4CAA4C;;AAE5C;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;;;AAGP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;;AAElE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO,EAAE;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;;AAEjF;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0EAA0E;;AAE1E;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO,EAAE;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO,EAAE;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ;;;AAGR;AACA;;AAEA;;AAEA;AACA,QAAQ;;;AAGR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,4CAA4C;;;AAG5C;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,0CAA0C;;AAE1C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,QAAQ;;;AAGR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C;;AAE/C;AACA,UAAU;AACV;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;;AAGrC,0HAA0H;AAC1H;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA,iCAAiC;;AAEjC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA,iCAAiC;;AAEjC;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;;;AAGb;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,4CAA4C,sCAAsC;;AAElF;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,IAAI;AACP;AACA;AACA;;;AAGA;AACA;AACA,uCAAuC;;AAEvC;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA,yEAAyE;AACzE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,oCAAoC;;AAEpC;AACA;AACA;AACA,KAAK;;;AAGL,+BAA+B;;AAE/B;AACA,iDAAiD;;AAEjD;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,qBAAqB,YAAY;AACjC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;;AAEA,oDAAoD,UAAU;AAC9D;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;;AAEA,sDAAsD;AACtD;;AAEA;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;;AAEA,2FAA2F;;AAE3F,wBAAwB;;AAExB;AACA;AACA,OAAO,EAAE;;AAET,qDAAqD;;AAErD;AACA;AACA;;AAEA,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH;;AAEhH;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,iEAAiE;;AAEjE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,yCAAyC;;AAEzC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,uKAAuK;AACvK;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+EAA+E,WAAW;AAC1F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,sDAAsD;AACtD,kDAAkD;AAClD;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,0CAA0C;AAC1C,sCAAsC;AACtC,wCAAwC;AACxC,kCAAkC;AAClC,0CAA0C;AAC1C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,oBAAoB;AACpB,sBAAsB;AACtB;AACA,mBAAmB;AACnB;AACA,oBAAoB;AACpB,qBAAqB;AACrB;AACA,sBAAsB;AACtB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,8CAA8C;AAC9C,sDAAsD;AACtD,oDAAoD;AACpD,oDAAoD;AACpD,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,kDAAkD;AAClD,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,SAAS,IAAI;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,6CAA6C;;AAE7C,mCAAmC;;AAEnC;;AAEA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;;;AAGA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;;AAEA,qBAAqB,oBAAoB;AACzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;;;AAGA;AACA;AACA;;AAEA,mBAAmB,oBAAoB;AACvC;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,cAAc;AACd;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;;AAEb,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;;;AAGX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,KAAK,EAAE;;AAEP;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;;AAGP;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA,OAAO;AACP,KAAK,EAAE;;AAEP;AACA,gEAAgE;;AAEhE;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,eAAe,gBAAgB;AAC/B;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;;;AAGA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA,KAAK,EAAE;;AAEP;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;;AAGP;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,wDAAwD;AACxD,KAAK;;;AAGL,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,+BAA+B;AAChD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;AACA;AACA,WAAW;AACX,SAAS;;;AAGT,mBAAmB,uBAAuB;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,+BAA+B;AAChD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;AACA;AACA,WAAW;AACX,SAAS;;;AAGT,mBAAmB,uBAAuB;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;;AAE1E;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uDAAuD;;AAEvD;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6HAA6H;;AAE7H;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;;AAE5C;AACA;;AAEA;AACA;AACA;;AAEA,+GAA+G;;AAE/G;AACA;AACA,KAAK;AACL;AACA,yQAAyQ;;AAEzQ,oDAAoD;AACpD;;AAEA,kFAAkF;;AAElF;AACA;AACA;;AAEA,+GAA+G;;AAE/G;AACA;AACA,KAAK;AACL;AACA,yQAAyQ;;AAEzQ;AACA;AACA;AACA;AACA,KAAK,sBAAsB;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,eAAe;AACxC;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wGAAwG;;AAExG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;AACP,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,qDAAqD;;AAErD,sCAAsC;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK,kBAAkB;AACvB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,mBAAmB;AACnB,oBAAoB;AACpB;AACA,kBAAkB;AAClB;AACA;AACA,wCAAwC;;AAExC;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,8cAA8c;;AAE9c;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;;;AAGZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qGAAqG;;AAErG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iIAAiI;;AAEjI;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;;AAE1D;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA,+DAA+D;;AAE/D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sCAAsC;;AAEtC,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,6GAA6G;;AAE7G;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,iBAAiB,+BAA+B;AAChD;AACA;AACA;;AAEA,mBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oIAAoI;;AAEpI,wDAAwD;;AAExD,wDAAwD;;AAExD;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA,OAAO;AACP,KAAK,EAAE;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA,iBAAiB,qBAAqB;AACtC;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL,eAAe,cAAc;AAC7B;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,QAAQ;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iEAAiE;;AAEjE,4CAA4C;;AAE5C,6FAA6F;;AAE7F,iFAAiF;;AAEjF,kFAAkF;;AAElF,kFAAkF;AAClF;;AAEA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qEAAqE;;AAErE,2DAA2D;;AAE3D;AACA;AACA,wEAAwE;;AAExE,6DAA6D;;AAE7D,6DAA6D;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;;AAEhF;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK,EAAE;;AAEP;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB,sCAAsC;;AAEtC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;;AAE9D,yKAAyK;;AAEzK;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK,sBAAsB;;AAE3B;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK,sBAAsB;;AAE3B,qFAAqF;;AAErF,0HAA0H;;AAE1H;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK,sBAAsB;;AAE3B;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK,sBAAsB;;AAE3B,qFAAqF;;AAErF,kIAAkI;;AAElI;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK,sBAAsB;;AAE3B;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK,wFAAwF;;AAE7F;AACA;;AAEA;AACA;AACA;AACA;AACA,yMAAyM;;AAEzM;AACA;AACA;;AAEA,mBAAmB,sCAAsC;AACzD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;;AAGR;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO,EAAE;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,eAAe,cAAc;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;;AAE5C;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA,6JAA6J;;AAE7J;AACA;AACA,iFAAiF;;AAEjF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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AAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oEAAoE,gBAAgB;;AAEpF;AACA;AACA,8EAA8E;AAC9E;;AAEA;;AAEA;AACA;AACA,wCAAwC,QAAQ;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,2CAA2C;AAC3C,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,YAAY;AAC3C;;AAEA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,sCAAsC;AACtC;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,yEAAyE;AACzE;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,iBAAiB;;AAEjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;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","file":"keen-dataviz.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 20);\n","export function each(o, cb, s) {\n var n;\n if (!o) {\n return 0;\n }\n s = !s ? o : s;\n if (o instanceof Array) {\n // Indexed arrays, needed for Safari\n for (n = 0; n < o.length; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n // Hashtables\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false){\n return 0;\n }\n }\n }\n }\n return 1;\n}\n","function stickTooltip(event, tooltip) {\n tooltip.style.opacity = 0;\n tooltip.style.top = `${event.pageY}px`;\n tooltip.style.left = `${event.pageX + 10}px`;\n}\n\nexport default function copyToClipboard(value, event) {\n const placeholder = document.createElement('input');\n placeholder.value = value;\n document.body.appendChild(placeholder);\n placeholder.select();\n document.execCommand('copy');\n document.body.removeChild(placeholder);\n\n if (event) {\n const notification = document.createElement('div');\n notification.style.padding = '5px 10px';\n notification.style.backgroundColor = '#ffffff';\n notification.style.fontSize = '12px';\n notification.style.position = 'absolute';\n notification.style.top = `${event.pageY}px`;\n notification.style.left = `${event.pageX + 10}px`;\n notification.style.zIndex = '999';\n notification.style.opacity = 1;\n notification.style.transition = 'opacity 1s ease';\n notification.innerText = 'copied!';\n\n document.body.appendChild(notification);\n document.addEventListener('mousemove', e => stickTooltip(e, notification));\n\n setTimeout(() => {\n notification.style.opacity = 1;\n document.body.removeChild(notification);\n }, 1000);\n }\n}\n","export var name = \"d3\";\nexport var version = \"5.11.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export {default as bisect, bisectRight, bisectLeft} from \"./bisect\";\nexport {default as ascending} from \"./ascending\";\nexport {default as bisector} from \"./bisector\";\nexport {default as cross} from \"./cross\";\nexport {default as descending} from \"./descending\";\nexport {default as deviation} from \"./deviation\";\nexport {default as extent} from \"./extent\";\nexport {default as histogram} from \"./histogram\";\nexport {default as thresholdFreedmanDiaconis} from \"./threshold/freedmanDiaconis\";\nexport {default as thresholdScott} from \"./threshold/scott\";\nexport {default as thresholdSturges} from \"./threshold/sturges\";\nexport {default as max} from \"./max\";\nexport {default as mean} from \"./mean\";\nexport {default as median} from \"./median\";\nexport {default as merge} from \"./merge\";\nexport {default as min} from \"./min\";\nexport {default as pairs} from \"./pairs\";\nexport {default as permute} from \"./permute\";\nexport {default as quantile} from \"./quantile\";\nexport {default as range} from \"./range\";\nexport {default as scan} from \"./scan\";\nexport {default as shuffle} from \"./shuffle\";\nexport {default as sum} from \"./sum\";\nexport {default as ticks, tickIncrement, tickStep} from \"./ticks\";\nexport {default as transpose} from \"./transpose\";\nexport {default as variance} from \"./variance\";\nexport {default as zip} from \"./zip\";\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","export {\n axisTop,\n axisRight,\n axisBottom,\n axisLeft\n} from \"./axis\";\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export {default as dispatch} from \"./dispatch\";\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","export {default as create} from \"./create\";\nexport {default as creator} from \"./creator\";\nexport {default as local} from \"./local\";\nexport {default as matcher} from \"./matcher\";\nexport {default as mouse} from \"./mouse\";\nexport {default as namespace} from \"./namespace\";\nexport {default as namespaces} from \"./namespaces\";\nexport {default as clientPoint} from \"./point\";\nexport {default as select} from \"./select\";\nexport {default as selectAll} from \"./selectAll\";\nexport {default as selection} from \"./selection/index\";\nexport {default as selector} from \"./selector\";\nexport {default as selectorAll} from \"./selectorAll\";\nexport {styleValue as style} from \"./selection/style\";\nexport {default as touch} from \"./touch\";\nexport {default as touches} from \"./touches\";\nexport {default as window} from \"./window\";\nexport {event, customEvent} from \"./selection/on\";\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export {default as drag} from \"./drag.js\";\nexport {default as dragDisable, yesdrag as dragEnable} from \"./nodrag.js\";\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export {default as color, rgb, hsl} from \"./color\";\nexport {default as lab, hcl, lch, gray} from \"./lab\";\nexport {default as cubehelix} from \"./cubehelix\";\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export {default as interpolate} from \"./value\";\nexport {default as interpolateArray} from \"./array\";\nexport {default as interpolateBasis} from \"./basis\";\nexport {default as interpolateBasisClosed} from \"./basisClosed\";\nexport {default as interpolateDate} from \"./date\";\nexport {default as interpolateDiscrete} from \"./discrete\";\nexport {default as interpolateHue} from \"./hue\";\nexport {default as interpolateNumber} from \"./number\";\nexport {default as interpolateObject} from \"./object\";\nexport {default as interpolateRound} from \"./round\";\nexport {default as interpolateString} from \"./string\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index\";\nexport {default as interpolateZoom} from \"./zoom\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl\";\nexport {default as interpolateLab} from \"./lab\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix\";\nexport {default as piecewise} from \"./piecewise\";\nexport {default as quantize} from \"./quantize\";\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {Timer, now} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","export {\n now,\n timer,\n timerFlush\n} from \"./timer\";\n\nexport {\n default as timeout\n} from \"./timeout\";\n\nexport {\n default as interval\n} from \"./interval\";\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i(t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i(t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\nimport transition_end from \"./end\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","export function expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nexport function expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","var tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","export {\n linear as easeLinear\n} from \"./linear\";\n\nexport {\n quadInOut as easeQuad,\n quadIn as easeQuadIn,\n quadOut as easeQuadOut,\n quadInOut as easeQuadInOut\n} from \"./quad\";\n\nexport {\n cubicInOut as easeCubic,\n cubicIn as easeCubicIn,\n cubicOut as easeCubicOut,\n cubicInOut as easeCubicInOut\n} from \"./cubic\";\n\nexport {\n polyInOut as easePoly,\n polyIn as easePolyIn,\n polyOut as easePolyOut,\n polyInOut as easePolyInOut\n} from \"./poly\";\n\nexport {\n sinInOut as easeSin,\n sinIn as easeSinIn,\n sinOut as easeSinOut,\n sinInOut as easeSinInOut\n} from \"./sin\";\n\nexport {\n expInOut as easeExp,\n expIn as easeExpIn,\n expOut as easeExpOut,\n expInOut as easeExpInOut\n} from \"./exp\";\n\nexport {\n circleInOut as easeCircle,\n circleIn as easeCircleIn,\n circleOut as easeCircleOut,\n circleInOut as easeCircleInOut\n} from \"./circle\";\n\nexport {\n bounceOut as easeBounce,\n bounceIn as easeBounceIn,\n bounceOut as easeBounceOut,\n bounceInOut as easeBounceInOut\n} from \"./bounce\";\n\nexport {\n backInOut as easeBack,\n backIn as easeBackIn,\n backOut as easeBackOut,\n backInOut as easeBackInOut\n} from \"./back\";\n\nexport {\n elasticOut as easeElastic,\n elasticIn as easeElasticIn,\n elasticOut as easeElasticOut,\n elasticInOut as easeElasticInOut\n} from \"./elastic\";\n","import {Transition, newId} from \"../transition/index\";\nimport schedule from \"../transition/schedule\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {Transition} from \"./transition/index\";\nimport {SCHEDULED} from \"./transition/schedule\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","import \"./selection/index\";\nexport {default as transition} from \"./transition/index\";\nexport {default as active} from \"./active\";\nexport {default as interrupt} from \"./interrupt\";\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(brush, \"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n return (!clean && that.__brush.emitter) || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export {\n default as brush,\n brushX,\n brushY,\n brushSelection\n} from \"./brush.js\";\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export {default as path} from \"./path\";\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export {default as chord} from \"./chord\";\nexport {default as ribbon} from \"./ribbon\";\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export {default as nest} from \"./nest\";\nexport {default as set} from \"./set\";\nexport {default as map} from \"./map\";\nexport {default as keys} from \"./keys\";\nexport {default as values} from \"./values\";\nexport {default as entries} from \"./entries\";\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export {default as contours} from \"./contours\";\nexport {default as contourDensity} from \"./density\";\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/.test(value)) value = new Date(value);\n else continue;\n object[key] = value;\n }\n return object;\n}\n","export {default as dsvFormat} from \"./dsv\";\nexport {csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows} from \"./csv\";\nexport {tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows} from \"./tsv\";\nexport {default as autoType} from \"./autoType\";\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export {default as blob} from \"./blob\";\nexport {default as buffer} from \"./buffer\";\nexport {default as dsv, csv, tsv} from \"./dsv\";\nexport {default as image} from \"./image\";\nexport {default as json} from \"./json\";\nexport {default as text} from \"./text\";\nexport {default as xml, html, svg} from \"./xml\";\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export {default as quadtree} from \"./quadtree\";\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","export {default as forceCenter} from \"./center\";\nexport {default as forceCollide} from \"./collide\";\nexport {default as forceLink} from \"./link\";\nexport {default as forceManyBody} from \"./manyBody\";\nexport {default as forceRadial} from \"./radial\";\nexport {default as forceSimulation} from \"./simulation\";\nexport {default as forceX} from \"./x\";\nexport {default as forceY} from \"./y\";\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale\";\nexport {default as formatLocale} from \"./locale\";\nexport {default as formatSpecifier} from \"./formatSpecifier\";\nexport {default as precisionFixed} from \"./precisionFixed\";\nexport {default as precisionPrefix} from \"./precisionPrefix\";\nexport {default as precisionRound} from \"./precisionRound\";\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipRejoin from \"./rejoin\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","import clipRectangle from \"./rectangle\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains\";\nimport {default as distance} from \"./distance\";\nimport {epsilon2, radians} from \"./math\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, // clip extent\n postclip = identity,\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n },\n postclip: function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n },\n clipExtent: function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n },\n fitWidth: function(width, object) {\n return fitWidth(projection, width, object);\n },\n fitHeight: function(height, object) {\n return fitHeight(projection, height, object);\n }\n };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","export {default as geoArea} from \"./area\";\nexport {default as geoBounds} from \"./bounds\";\nexport {default as geoCentroid} from \"./centroid\";\nexport {default as geoCircle} from \"./circle\";\nexport {default as geoClipAntimeridian} from \"./clip/antimeridian\";\nexport {default as geoClipCircle} from \"./clip/circle\";\nexport {default as geoClipExtent} from \"./clip/extent\"; // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\nexport {default as geoClipRectangle} from \"./clip/rectangle\";\nexport {default as geoContains} from \"./contains\";\nexport {default as geoDistance} from \"./distance\";\nexport {default as geoGraticule, graticule10 as geoGraticule10} from \"./graticule\";\nexport {default as geoInterpolate} from \"./interpolate\";\nexport {default as geoLength} from \"./length\";\nexport {default as geoPath} from \"./path/index\";\nexport {default as geoAlbers} from \"./projection/albers\";\nexport {default as geoAlbersUsa} from \"./projection/albersUsa\";\nexport {default as geoAzimuthalEqualArea, azimuthalEqualAreaRaw as geoAzimuthalEqualAreaRaw} from \"./projection/azimuthalEqualArea\";\nexport {default as geoAzimuthalEquidistant, azimuthalEquidistantRaw as geoAzimuthalEquidistantRaw} from \"./projection/azimuthalEquidistant\";\nexport {default as geoConicConformal, conicConformalRaw as geoConicConformalRaw} from \"./projection/conicConformal\";\nexport {default as geoConicEqualArea, conicEqualAreaRaw as geoConicEqualAreaRaw} from \"./projection/conicEqualArea\";\nexport {default as geoConicEquidistant, conicEquidistantRaw as geoConicEquidistantRaw} from \"./projection/conicEquidistant\";\nexport {default as geoEqualEarth, equalEarthRaw as geoEqualEarthRaw} from \"./projection/equalEarth\";\nexport {default as geoEquirectangular, equirectangularRaw as geoEquirectangularRaw} from \"./projection/equirectangular\";\nexport {default as geoGnomonic, gnomonicRaw as geoGnomonicRaw} from \"./projection/gnomonic\";\nexport {default as geoIdentity} from \"./projection/identity\";\nexport {default as geoProjection, projectionMutator as geoProjectionMutator} from \"./projection/index\";\nexport {default as geoMercator, mercatorRaw as geoMercatorRaw} from \"./projection/mercator\";\nexport {default as geoNaturalEarth1, naturalEarth1Raw as geoNaturalEarth1Raw} from \"./projection/naturalEarth1\";\nexport {default as geoOrthographic, orthographicRaw as geoOrthographicRaw} from \"./projection/orthographic\";\nexport {default as geoStereographic, stereographicRaw as geoStereographicRaw} from \"./projection/stereographic\";\nexport {default as geoTransverseMercator, transverseMercatorRaw as geoTransverseMercatorRaw} from \"./projection/transverseMercator\";\nexport {default as geoRotation} from \"./rotation\";\nexport {default as geoStream} from \"./stream\";\nexport {default as geoTransform} from \"./transform\";\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count\";\nimport node_each from \"./each\";\nimport node_eachBefore from \"./eachBefore\";\nimport node_eachAfter from \"./eachAfter\";\nimport node_sum from \"./sum\";\nimport node_sort from \"./sort\";\nimport node_path from \"./path\";\nimport node_ancestors from \"./ancestors\";\nimport node_descendants from \"./descendants\";\nimport node_leaves from \"./leaves\";\nimport node_links from \"./links\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings\";\nimport {optional} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round\";\nimport treemapDice from \"./treemap/dice\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors\";\nimport {Node, computeHeight} from \"./hierarchy/index\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round\";\nimport squarify from \"./squarify\";\nimport {required} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice\";\nimport slice from \"./slice\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\nimport {phi, squarifyRatio} from \"./squarify\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export {default as cluster} from \"./cluster\";\nexport {default as hierarchy} from \"./hierarchy/index\";\nexport {default as pack} from \"./pack/index\";\nexport {default as packSiblings} from \"./pack/siblings\";\nexport {default as packEnclose} from \"./pack/enclose\";\nexport {default as partition} from \"./partition\";\nexport {default as stratify} from \"./stratify\";\nexport {default as tree} from \"./tree\";\nexport {default as treemap} from \"./treemap/index\";\nexport {default as treemapBinary} from \"./treemap/binary\";\nexport {default as treemapDice} from \"./treemap/dice\";\nexport {default as treemapSlice} from \"./treemap/slice\";\nexport {default as treemapSliceDice} from \"./treemap/sliceDice\";\nexport {default as treemapSquarify} from \"./treemap/squarify\";\nexport {default as treemapResquarify} from \"./treemap/resquarify\";\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export {default as polygonArea} from \"./area\";\nexport {default as polygonCentroid} from \"./centroid\";\nexport {default as polygonHull} from \"./hull\";\nexport {default as polygonContains} from \"./contains\";\nexport {default as polygonLength} from \"./length\";\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export {default as randomUniform} from \"./uniform\";\nexport {default as randomNormal} from \"./normal\";\nexport {default as randomLogNormal} from \"./logNormal\";\nexport {default as randomBates} from \"./bates\";\nexport {default as randomIrwinHall} from \"./irwinHall\";\nexport {default as randomExponential} from \"./exponential\";\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","export {\n default as timeInterval\n} from \"./interval\";\n\nexport {\n default as timeMillisecond,\n milliseconds as timeMilliseconds,\n default as utcMillisecond,\n milliseconds as utcMilliseconds\n} from \"./millisecond\";\n\nexport {\n default as timeSecond,\n seconds as timeSeconds,\n default as utcSecond,\n seconds as utcSeconds\n} from \"./second\";\n\nexport {\n default as timeMinute,\n minutes as timeMinutes\n} from \"./minute\";\n\nexport {\n default as timeHour,\n hours as timeHours\n} from \"./hour\";\n\nexport {\n default as timeDay,\n days as timeDays\n} from \"./day\";\n\nexport {\n sunday as timeWeek,\n sundays as timeWeeks,\n sunday as timeSunday,\n sundays as timeSundays,\n monday as timeMonday,\n mondays as timeMondays,\n tuesday as timeTuesday,\n tuesdays as timeTuesdays,\n wednesday as timeWednesday,\n wednesdays as timeWednesdays,\n thursday as timeThursday,\n thursdays as timeThursdays,\n friday as timeFriday,\n fridays as timeFridays,\n saturday as timeSaturday,\n saturdays as timeSaturdays\n} from \"./week\";\n\nexport {\n default as timeMonth,\n months as timeMonths\n} from \"./month\";\n\nexport {\n default as timeYear,\n years as timeYears\n} from \"./year\";\n\nexport {\n default as utcMinute,\n utcMinutes as utcMinutes\n} from \"./utcMinute\";\n\nexport {\n default as utcHour,\n utcHours as utcHours\n} from \"./utcHour\";\n\nexport {\n default as utcDay,\n utcDays as utcDays\n} from \"./utcDay\";\n\nexport {\n utcSunday as utcWeek,\n utcSundays as utcWeeks,\n utcSunday as utcSunday,\n utcSundays as utcSundays,\n utcMonday as utcMonday,\n utcMondays as utcMondays,\n utcTuesday as utcTuesday,\n utcTuesdays as utcTuesdays,\n utcWednesday as utcWednesday,\n utcWednesdays as utcWednesdays,\n utcThursday as utcThursday,\n utcThursdays as utcThursdays,\n utcFriday as utcFriday,\n utcFridays as utcFridays,\n utcSaturday as utcSaturday,\n utcSaturdays as utcSaturdays\n} from \"./utcWeek\";\n\nexport {\n default as utcMonth,\n utcMonths as utcMonths\n} from \"./utcMonth\";\n\nexport {\n default as utcYear,\n utcYears as utcYears\n} from \"./utcYear\";\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","export {default as timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse} from \"./defaultLocale\";\nexport {default as timeFormatLocale} from \"./locale\";\nexport {default as isoFormat} from \"./isoFormat\";\nexport {default as isoParse} from \"./isoParse\";\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export {\n default as scaleBand,\n point as scalePoint\n} from \"./band\";\n\nexport {\n default as scaleIdentity\n} from \"./identity\";\n\nexport {\n default as scaleLinear\n} from \"./linear\";\n\nexport {\n default as scaleLog\n} from \"./log\";\n\nexport {\n default as scaleSymlog\n} from \"./symlog\";\n\nexport {\n default as scaleOrdinal,\n implicit as scaleImplicit\n} from \"./ordinal\";\n\nexport {\n default as scalePow,\n sqrt as scaleSqrt\n} from \"./pow\";\n\nexport {\n default as scaleQuantile\n} from \"./quantile\";\n\nexport {\n default as scaleQuantize\n} from \"./quantize\";\n\nexport {\n default as scaleThreshold\n} from \"./threshold\";\n\nexport {\n default as scaleTime\n} from \"./time\";\n\nexport {\n default as scaleUtc\n} from \"./utcTime\";\n\nexport {\n default as scaleSequential,\n sequentialLog as scaleSequentialLog,\n sequentialPow as scaleSequentialPow,\n sequentialSqrt as scaleSequentialSqrt,\n sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential\";\n\nexport {\n default as scaleSequentialQuantile\n} from \"./sequentialQuantile\";\n\nexport {\n default as scaleDiverging,\n divergingLog as scaleDivergingLog,\n divergingPow as scaleDivergingPow,\n divergingSqrt as scaleDivergingSqrt,\n divergingSymlog as scaleDivergingSymlog\n} from \"./diverging\";\n\nexport {\n default as tickFormat\n} from \"./tickFormat\";\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","export {default as schemeCategory10} from \"./categorical/category10.js\";\nexport {default as schemeAccent} from \"./categorical/Accent.js\";\nexport {default as schemeDark2} from \"./categorical/Dark2.js\";\nexport {default as schemePaired} from \"./categorical/Paired.js\";\nexport {default as schemePastel1} from \"./categorical/Pastel1.js\";\nexport {default as schemePastel2} from \"./categorical/Pastel2.js\";\nexport {default as schemeSet1} from \"./categorical/Set1.js\";\nexport {default as schemeSet2} from \"./categorical/Set2.js\";\nexport {default as schemeSet3} from \"./categorical/Set3.js\";\nexport {default as schemeTableau10} from \"./categorical/Tableau10.js\";\nexport {default as interpolateBrBG, scheme as schemeBrBG} from \"./diverging/BrBG.js\";\nexport {default as interpolatePRGn, scheme as schemePRGn} from \"./diverging/PRGn.js\";\nexport {default as interpolatePiYG, scheme as schemePiYG} from \"./diverging/PiYG.js\";\nexport {default as interpolatePuOr, scheme as schemePuOr} from \"./diverging/PuOr.js\";\nexport {default as interpolateRdBu, scheme as schemeRdBu} from \"./diverging/RdBu.js\";\nexport {default as interpolateRdGy, scheme as schemeRdGy} from \"./diverging/RdGy.js\";\nexport {default as interpolateRdYlBu, scheme as schemeRdYlBu} from \"./diverging/RdYlBu.js\";\nexport {default as interpolateRdYlGn, scheme as schemeRdYlGn} from \"./diverging/RdYlGn.js\";\nexport {default as interpolateSpectral, scheme as schemeSpectral} from \"./diverging/Spectral.js\";\nexport {default as interpolateBuGn, scheme as schemeBuGn} from \"./sequential-multi/BuGn.js\";\nexport {default as interpolateBuPu, scheme as schemeBuPu} from \"./sequential-multi/BuPu.js\";\nexport {default as interpolateGnBu, scheme as schemeGnBu} from \"./sequential-multi/GnBu.js\";\nexport {default as interpolateOrRd, scheme as schemeOrRd} from \"./sequential-multi/OrRd.js\";\nexport {default as interpolatePuBuGn, scheme as schemePuBuGn} from \"./sequential-multi/PuBuGn.js\";\nexport {default as interpolatePuBu, scheme as schemePuBu} from \"./sequential-multi/PuBu.js\";\nexport {default as interpolatePuRd, scheme as schemePuRd} from \"./sequential-multi/PuRd.js\";\nexport {default as interpolateRdPu, scheme as schemeRdPu} from \"./sequential-multi/RdPu.js\";\nexport {default as interpolateYlGnBu, scheme as schemeYlGnBu} from \"./sequential-multi/YlGnBu.js\";\nexport {default as interpolateYlGn, scheme as schemeYlGn} from \"./sequential-multi/YlGn.js\";\nexport {default as interpolateYlOrBr, scheme as schemeYlOrBr} from \"./sequential-multi/YlOrBr.js\";\nexport {default as interpolateYlOrRd, scheme as schemeYlOrRd} from \"./sequential-multi/YlOrRd.js\";\nexport {default as interpolateBlues, scheme as schemeBlues} from \"./sequential-single/Blues.js\";\nexport {default as interpolateGreens, scheme as schemeGreens} from \"./sequential-single/Greens.js\";\nexport {default as interpolateGreys, scheme as schemeGreys} from \"./sequential-single/Greys.js\";\nexport {default as interpolatePurples, scheme as schemePurples} from \"./sequential-single/Purples.js\";\nexport {default as interpolateReds, scheme as schemeReds} from \"./sequential-single/Reds.js\";\nexport {default as interpolateOranges, scheme as schemeOranges} from \"./sequential-single/Oranges.js\";\nexport {default as interpolateCividis} from \"./sequential-multi/cividis.js\";\nexport {default as interpolateCubehelixDefault} from \"./sequential-multi/cubehelix.js\";\nexport {default as interpolateRainbow, warm as interpolateWarm, cool as interpolateCool} from \"./sequential-multi/rainbow.js\";\nexport {default as interpolateSinebow} from \"./sequential-multi/sinebow.js\";\nexport {default as interpolateTurbo} from \"./sequential-multi/turbo.js\";\nexport {default as interpolateViridis, magma as interpolateMagma, inferno as interpolateInferno, plasma as interpolatePlasma} from \"./sequential-multi/viridis.js\";\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport line from \"./line\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant\";\nimport descending from \"./descending\";\nimport identity from \"./identity\";\nimport {tau} from \"./math\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial\";\nimport line from \"./line\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial\";\nimport area from \"./area\";\nimport {lineRadial} from \"./lineRadial\"\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array\";\nimport constant from \"../constant\";\nimport {x as pointX, y as pointY} from \"../point\";\nimport pointRadial from \"../pointRadial\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle\";\nimport cross from \"./symbol/cross\";\nimport diamond from \"./symbol/diamond\";\nimport star from \"./symbol/star\";\nimport square from \"./symbol/square\";\nimport triangle from \"./symbol/triangle\";\nimport wye from \"./symbol/wye\";\nimport constant from \"./constant\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop\";\nimport {point} from \"./basis\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport offsetNone from \"./offset/none\";\nimport orderNone from \"./order/none\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = yp;\n }\n }\n }\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance\";\nimport {sum} from \"./ascending\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","export {default as arc} from \"./arc\";\nexport {default as area} from \"./area\";\nexport {default as line} from \"./line\";\nexport {default as pie} from \"./pie\";\nexport {default as areaRadial, default as radialArea} from \"./areaRadial\"; // Note: radialArea is deprecated!\nexport {default as lineRadial, default as radialLine} from \"./lineRadial\"; // Note: radialLine is deprecated!\nexport {default as pointRadial} from \"./pointRadial\";\nexport {linkHorizontal, linkVertical, linkRadial} from \"./link/index\";\n\nexport {default as symbol, symbols} from \"./symbol\";\nexport {default as symbolCircle} from \"./symbol/circle\";\nexport {default as symbolCross} from \"./symbol/cross\";\nexport {default as symbolDiamond} from \"./symbol/diamond\";\nexport {default as symbolSquare} from \"./symbol/square\";\nexport {default as symbolStar} from \"./symbol/star\";\nexport {default as symbolTriangle} from \"./symbol/triangle\";\nexport {default as symbolWye} from \"./symbol/wye\";\n\nexport {default as curveBasisClosed} from \"./curve/basisClosed\";\nexport {default as curveBasisOpen} from \"./curve/basisOpen\";\nexport {default as curveBasis} from \"./curve/basis\";\nexport {default as curveBundle} from \"./curve/bundle\";\nexport {default as curveCardinalClosed} from \"./curve/cardinalClosed\";\nexport {default as curveCardinalOpen} from \"./curve/cardinalOpen\";\nexport {default as curveCardinal} from \"./curve/cardinal\";\nexport {default as curveCatmullRomClosed} from \"./curve/catmullRomClosed\";\nexport {default as curveCatmullRomOpen} from \"./curve/catmullRomOpen\";\nexport {default as curveCatmullRom} from \"./curve/catmullRom\";\nexport {default as curveLinearClosed} from \"./curve/linearClosed\";\nexport {default as curveLinear} from \"./curve/linear\";\nexport {monotoneX as curveMonotoneX, monotoneY as curveMonotoneY} from \"./curve/monotone\";\nexport {default as curveNatural} from \"./curve/natural\";\nexport {default as curveStep, stepAfter as curveStepAfter, stepBefore as curveStepBefore} from \"./curve/step\";\n\nexport {default as stack} from \"./stack\";\nexport {default as stackOffsetExpand} from \"./offset/expand\";\nexport {default as stackOffsetDiverging} from \"./offset/diverging\";\nexport {default as stackOffsetNone} from \"./offset/none\";\nexport {default as stackOffsetSilhouette} from \"./offset/silhouette\";\nexport {default as stackOffsetWiggle} from \"./offset/wiggle\";\nexport {default as stackOrderAppearance} from \"./order/appearance\";\nexport {default as stackOrderAscending} from \"./order/ascending\";\nexport {default as stackOrderDescending} from \"./order/descending\";\nexport {default as stackOrderInsideOut} from \"./order/insideOut\";\nexport {default as stackOrderNone} from \"./order/none\";\nexport {default as stackOrderReverse} from \"./order/reverse\";\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export {default as voronoi} from \"./voronoi\";\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","export {default as zoom} from \"./zoom.js\";\nexport {default as zoomTransform, identity as zoomIdentity} from \"./transform.js\";\n","export {version} from \"./dist/package.js\";\nexport * from \"d3-array\";\nexport * from \"d3-axis\";\nexport * from \"d3-brush\";\nexport * from \"d3-chord\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-contour\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-fetch\";\nexport * from \"d3-force\";\nexport * from \"d3-format\";\nexport * from \"d3-geo\";\nexport * from \"d3-hierarchy\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-path\";\nexport * from \"d3-polygon\";\nexport * from \"d3-quadtree\";\nexport * from \"d3-random\";\nexport * from \"d3-scale\";\nexport * from \"d3-scale-chromatic\";\nexport * from \"d3-selection\";\nexport * from \"d3-shape\";\nexport * from \"d3-time\";\nexport * from \"d3-time-format\";\nexport * from \"d3-timer\";\nexport * from \"d3-transition\";\nexport * from \"d3-voronoi\";\nexport * from \"d3-zoom\";\n","export function prettyNumber(input) {\n // If it has 3 or fewer sig figs already, just return the number.\n var input = Number(input),\n sciNo = input.toPrecision(3),\n prefix = '',\n suffixes = ['', 'k', 'M', 'B', 'T'];\n\n if (Number(sciNo) == input && String(input).length <= 4) {\n return String(input);\n }\n\n if (Math.abs(input) >= 1000000000000000) {\n return sciNo;\n }\n\n if (input >= 1 || input <= -1) {\n if (input < 0){\n //Pull off the negative side and stash that.\n input = -input;\n prefix = '-';\n }\n return prefix + recurse(input, 0);\n }\n else {\n return input.toPrecision(3);\n }\n\n function recurse(input, iteration) {\n var input = String(input);\n var split = input.split('.');\n // If there's a dot\n if (split.length > 1) {\n // Keep the left hand side only\n input = split[0];\n var rhs = split[1];\n // If the left-hand side is too short, pad until it has 3 digits\n if (input.length == 2 && rhs.length > 0) {\n // Pad with right-hand side if possible\n if (rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n else if (input.length == 1 && rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n // Pad with right-hand side if possible\n if (rhs.length > 1) {\n input += rhs.charAt(1);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n }\n var numNumerals = input.length;\n // if it has a period, then numNumerals is 1 smaller than the string length:\n if (input.split('.').length > 1) {\n numNumerals--;\n }\n if (numNumerals <= 3) {\n return String(input) + suffixes[iteration];\n }\n else {\n return recurse(Number(input) / 1000, iteration + 1);\n }\n }\n}\n","const matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nexport function escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n for (var prop in arguments[i]){\n target[prop] = arguments[i][prop];\n }\n }\n return target;\n}\n","import * as d3 from 'd3';\n\nexport function textWrap(text, width) {\n text.each(function () {\n let text = d3.select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.1, // ems\n x = text.attr(\"x\"),\n y = text.attr(\"y\"),\n dy = 0, //parseFloat(text.attr(\"dy\")),\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\");\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n .text(word);\n }\n }\n });\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import createNullList from '../utils/create-null-list';\nimport { each } from '../../utils/each';\n\nexport function appendColumn(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n self.matrix[0].push(label);\n each(self.matrix, function(row, i) {\n let cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].push(cell);\n }\n });\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat(createNullList(self.matrix.length - 1 - input.length));\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String(self.matrix.length));\n }\n });\n }\n\n self.matrix[0].push(label);\n each(input, function(value, i){\n self.matrix[i+1][self.matrix[0].length-1] = value;\n });\n\n }\n\n return self;\n}\n\nexport function appendRow(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n const newRow = [];\n\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i){\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.push(newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length));\n }\n });\n }\n\n self.matrix.push(newRow.concat(input));\n }\n\n return self;\n}\n","export default function (len) {\n const list = [];\n for (let i = 0; i < len; i++) {\n list.push(null);\n }\n return list;\n}\n","/* @license C3.js v0.7.2 | (c) C3 Team and other contributors | http://c3js.org/ */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.c3 = factory());\n}(this, function () { 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function ChartInternal(api) {\n var $$ = this;\n $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n $$.api = api;\n $$.config = $$.getDefaultConfig();\n $$.data = {};\n $$.cache = {};\n $$.axes = {};\n }\n\n /**\n * The Chart class\n *\n * The methods of this class is the public APIs of the chart object.\n */\n\n function Chart(config) {\n this.internal = new ChartInternal(this);\n this.internal.loadConfig(config);\n this.internal.beforeInit(config);\n this.internal.init();\n this.internal.afterInit(config); // bind \"this\" to nested API\n\n (function bindThis(fn, target, argThis) {\n Object.keys(fn).forEach(function (key) {\n target[key] = fn[key].bind(argThis);\n\n if (Object.keys(fn[key]).length > 0) {\n bindThis(fn[key], target[key], argThis);\n }\n });\n })(Chart.prototype, this, this);\n }\n\n function AxisInternal(component, params) {\n var internal = this;\n internal.component = component;\n internal.params = params || {};\n internal.d3 = component.d3;\n internal.scale = internal.d3.scaleLinear();\n internal.range;\n internal.orient = \"bottom\";\n internal.innerTickSize = 6;\n internal.outerTickSize = this.params.withOuterTick ? 6 : 0;\n internal.tickPadding = 3;\n internal.tickValues = null;\n internal.tickFormat;\n internal.tickArguments;\n internal.tickOffset = 0;\n internal.tickCulling = true;\n internal.tickCentered;\n internal.tickTextCharSize;\n internal.tickTextRotate = internal.params.tickTextRotate;\n internal.tickLength;\n internal.axis = internal.generateAxis();\n }\n\n AxisInternal.prototype.axisX = function (selection, x, tickOffset) {\n selection.attr(\"transform\", function (d) {\n return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n });\n };\n\n AxisInternal.prototype.axisY = function (selection, y) {\n selection.attr(\"transform\", function (d) {\n return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n });\n };\n\n AxisInternal.prototype.scaleExtent = function (domain) {\n var start = domain[0],\n stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n };\n\n AxisInternal.prototype.generateTicks = function (scale) {\n var internal = this;\n var i,\n domain,\n ticks = [];\n\n if (scale.ticks) {\n return scale.ticks.apply(scale, internal.tickArguments);\n }\n\n domain = scale.domain();\n\n for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n ticks.push(i);\n }\n\n if (ticks.length > 0 && ticks[0] > 0) {\n ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n }\n\n return ticks;\n };\n\n AxisInternal.prototype.copyScale = function () {\n var internal = this;\n var newScale = internal.scale.copy(),\n domain;\n\n if (internal.params.isCategory) {\n domain = internal.scale.domain();\n newScale.domain([domain[0], domain[1] - 1]);\n }\n\n return newScale;\n };\n\n AxisInternal.prototype.textFormatted = function (v) {\n var internal = this,\n formatted = internal.tickFormat ? internal.tickFormat(v) : v;\n return typeof formatted !== 'undefined' ? formatted : '';\n };\n\n AxisInternal.prototype.updateRange = function () {\n var internal = this;\n internal.range = internal.scale.rangeExtent ? internal.scale.rangeExtent() : internal.scaleExtent(internal.scale.range());\n return internal.range;\n };\n\n AxisInternal.prototype.updateTickTextCharSize = function (tick) {\n var internal = this;\n\n if (internal.tickTextCharSize) {\n return internal.tickTextCharSize;\n }\n\n var size = {\n h: 11.5,\n w: 5.5\n };\n tick.select('text').text(function (d) {\n return internal.textFormatted(d);\n }).each(function (d) {\n var box = this.getBoundingClientRect(),\n text = internal.textFormatted(d),\n h = box.height,\n w = text ? box.width / text.length : undefined;\n\n if (h && w) {\n size.h = h;\n size.w = w;\n }\n }).text('');\n internal.tickTextCharSize = size;\n return size;\n };\n\n AxisInternal.prototype.isVertical = function () {\n return this.orient === 'left' || this.orient === 'right';\n };\n\n AxisInternal.prototype.tspanData = function (d, i, scale) {\n var internal = this;\n var splitted = internal.params.tickMultiline ? internal.splitTickText(d, scale) : [].concat(internal.textFormatted(d));\n\n if (internal.params.tickMultiline && internal.params.tickMultilineMax > 0) {\n splitted = internal.ellipsify(splitted, internal.params.tickMultilineMax);\n }\n\n return splitted.map(function (s) {\n return {\n index: i,\n splitted: s,\n length: splitted.length\n };\n });\n };\n\n AxisInternal.prototype.splitTickText = function (d, scale) {\n var internal = this,\n tickText = internal.textFormatted(d),\n maxWidth = internal.params.tickWidth,\n subtext,\n spaceIndex,\n textWidth,\n splitted = [];\n\n if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n return tickText;\n }\n\n if (!maxWidth || maxWidth <= 0) {\n maxWidth = internal.isVertical() ? 95 : internal.params.isCategory ? Math.ceil(scale(1) - scale(0)) - 12 : 110;\n }\n\n function split(splitted, text) {\n spaceIndex = undefined;\n\n for (var i = 1; i < text.length; i++) {\n if (text.charAt(i) === ' ') {\n spaceIndex = i;\n }\n\n subtext = text.substr(0, i + 1);\n textWidth = internal.tickTextCharSize.w * subtext.length; // if text width gets over tick width, split by space index or crrent index\n\n if (maxWidth < textWidth) {\n return split(splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), text.slice(spaceIndex ? spaceIndex + 1 : i));\n }\n }\n\n return splitted.concat(text);\n }\n\n return split(splitted, tickText + \"\");\n };\n\n AxisInternal.prototype.ellipsify = function (splitted, max) {\n if (splitted.length <= max) {\n return splitted;\n }\n\n var ellipsified = splitted.slice(0, max);\n var remaining = 3;\n\n for (var i = max - 1; i >= 0; i--) {\n var available = ellipsified[i].length;\n ellipsified[i] = ellipsified[i].substr(0, available - remaining).padEnd(available, '.');\n remaining -= available;\n\n if (remaining <= 0) {\n break;\n }\n }\n\n return ellipsified;\n };\n\n AxisInternal.prototype.updateTickLength = function () {\n var internal = this;\n internal.tickLength = Math.max(internal.innerTickSize, 0) + internal.tickPadding;\n };\n\n AxisInternal.prototype.lineY2 = function (d) {\n var internal = this,\n tickPosition = internal.scale(d) + (internal.tickCentered ? 0 : internal.tickOffset);\n return internal.range[0] < tickPosition && tickPosition < internal.range[1] ? internal.innerTickSize : 0;\n };\n\n AxisInternal.prototype.textY = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1) : internal.tickLength;\n };\n\n AxisInternal.prototype.textTransform = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? \"rotate(\" + rotate + \")\" : \"\";\n };\n\n AxisInternal.prototype.textTextAnchor = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? rotate > 0 ? \"start\" : \"end\" : \"middle\";\n };\n\n AxisInternal.prototype.tspanDx = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 8 * Math.sin(Math.PI * (rotate / 180)) : 0;\n };\n\n AxisInternal.prototype.tspanDy = function (d, i) {\n var internal = this,\n dy = internal.tickTextCharSize.h;\n\n if (i === 0) {\n if (internal.isVertical()) {\n dy = -((d.length - 1) * (internal.tickTextCharSize.h / 2) - 3);\n } else {\n dy = \".71em\";\n }\n }\n\n return dy;\n };\n\n AxisInternal.prototype.generateAxis = function () {\n var internal = this,\n d3 = internal.d3,\n params = internal.params;\n\n function axis(g, transition) {\n var self;\n g.each(function () {\n var g = axis.g = d3.select(this);\n var scale0 = this.__chart__ || internal.scale,\n scale1 = this.__chart__ = internal.copyScale();\n var ticksValues = internal.tickValues ? internal.tickValues : internal.generateTicks(scale1),\n ticks = g.selectAll(\".tick\").data(ticksValues, scale1),\n tickEnter = ticks.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n tickExit = ticks.exit().remove(),\n tickUpdate = ticks.merge(tickEnter),\n tickTransform,\n tickX,\n tickY;\n\n if (params.isCategory) {\n internal.tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n tickX = internal.tickCentered ? 0 : internal.tickOffset;\n tickY = internal.tickCentered ? internal.tickOffset : 0;\n } else {\n internal.tickOffset = tickX = 0;\n }\n\n internal.updateRange();\n internal.updateTickLength();\n internal.updateTickTextCharSize(g.select('.tick'));\n var lineUpdate = tickUpdate.select(\"line\").merge(tickEnter.append(\"line\")),\n textUpdate = tickUpdate.select(\"text\").merge(tickEnter.append(\"text\"));\n var tspans = tickUpdate.selectAll('text').selectAll('tspan').data(function (d, i) {\n return internal.tspanData(d, i, scale1);\n }),\n tspanEnter = tspans.enter().append('tspan'),\n tspanUpdate = tspanEnter.merge(tspans).text(function (d) {\n return d.splitted;\n });\n tspans.exit().remove();\n var path = g.selectAll(\".domain\").data([0]),\n pathUpdate = path.enter().append(\"path\").merge(path).attr(\"class\", \"domain\"); // TODO: each attr should be one function and change its behavior by internal.orient, probably\n\n switch (internal.orient) {\n case \"bottom\":\n {\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return internal.textY(d, i);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + internal.outerTickSize);\n break;\n }\n\n case \"top\":\n {\n // TODO: rotated tick text\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return -1 * internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return -1 * internal.textY(d, i) - (params.isCategory ? 2 : internal.tickLength - 2);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + -internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + -internal.outerTickSize);\n break;\n }\n\n case \"left\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", -internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", -internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"end\");\n tspanUpdate.attr('x', -internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + -internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + -internal.outerTickSize);\n break;\n }\n\n case \"right\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"start\");\n tspanUpdate.attr('x', internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + internal.outerTickSize);\n break;\n }\n }\n\n if (scale1.rangeBand) {\n var x = scale1,\n dx = x.rangeBand() / 2;\n\n scale0 = scale1 = function scale1(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, internal.tickOffset);\n }\n\n tickEnter.call(tickTransform, scale0, internal.tickOffset);\n self = (transition ? tickUpdate.transition(transition) : tickUpdate).style('opacity', 1).call(tickTransform, scale1, internal.tickOffset);\n });\n return self;\n }\n\n axis.scale = function (x) {\n if (!arguments.length) {\n return internal.scale;\n }\n\n internal.scale = x;\n return axis;\n };\n\n axis.orient = function (x) {\n if (!arguments.length) {\n return internal.orient;\n }\n\n internal.orient = x in {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n } ? x + \"\" : \"bottom\";\n return axis;\n };\n\n axis.tickFormat = function (format) {\n if (!arguments.length) {\n return internal.tickFormat;\n }\n\n internal.tickFormat = format;\n return axis;\n };\n\n axis.tickCentered = function (isCentered) {\n if (!arguments.length) {\n return internal.tickCentered;\n }\n\n internal.tickCentered = isCentered;\n return axis;\n };\n\n axis.tickOffset = function () {\n return internal.tickOffset;\n };\n\n axis.tickInterval = function () {\n var interval, length;\n\n if (params.isCategory) {\n interval = internal.tickOffset * 2;\n } else {\n length = axis.g.select('path.domain').node().getTotalLength() - internal.outerTickSize * 2;\n interval = length / axis.g.selectAll('line').size();\n }\n\n return interval === Infinity ? 0 : interval;\n };\n\n axis.ticks = function () {\n if (!arguments.length) {\n return internal.tickArguments;\n }\n\n internal.tickArguments = arguments;\n return axis;\n };\n\n axis.tickCulling = function (culling) {\n if (!arguments.length) {\n return internal.tickCulling;\n }\n\n internal.tickCulling = culling;\n return axis;\n };\n\n axis.tickValues = function (x) {\n if (typeof x === 'function') {\n internal.tickValues = function () {\n return x(internal.scale.domain());\n };\n } else {\n if (!arguments.length) {\n return internal.tickValues;\n }\n\n internal.tickValues = x;\n }\n\n return axis;\n };\n\n return axis;\n };\n\n var CLASS = {\n target: 'c3-target',\n chart: 'c3-chart',\n chartLine: 'c3-chart-line',\n chartLines: 'c3-chart-lines',\n chartBar: 'c3-chart-bar',\n chartBars: 'c3-chart-bars',\n chartText: 'c3-chart-text',\n chartTexts: 'c3-chart-texts',\n chartArc: 'c3-chart-arc',\n chartArcs: 'c3-chart-arcs',\n chartArcsTitle: 'c3-chart-arcs-title',\n chartArcsBackground: 'c3-chart-arcs-background',\n chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n selectedCircle: 'c3-selected-circle',\n selectedCircles: 'c3-selected-circles',\n eventRect: 'c3-event-rect',\n eventRects: 'c3-event-rects',\n eventRectsSingle: 'c3-event-rects-single',\n eventRectsMultiple: 'c3-event-rects-multiple',\n zoomRect: 'c3-zoom-rect',\n brush: 'c3-brush',\n dragZoom: 'c3-drag-zoom',\n focused: 'c3-focused',\n defocused: 'c3-defocused',\n region: 'c3-region',\n regions: 'c3-regions',\n title: 'c3-title',\n tooltipContainer: 'c3-tooltip-container',\n tooltip: 'c3-tooltip',\n tooltipName: 'c3-tooltip-name',\n shape: 'c3-shape',\n shapes: 'c3-shapes',\n line: 'c3-line',\n lines: 'c3-lines',\n bar: 'c3-bar',\n bars: 'c3-bars',\n circle: 'c3-circle',\n circles: 'c3-circles',\n arc: 'c3-arc',\n arcLabelLine: 'c3-arc-label-line',\n arcs: 'c3-arcs',\n area: 'c3-area',\n areas: 'c3-areas',\n empty: 'c3-empty',\n text: 'c3-text',\n texts: 'c3-texts',\n gaugeValue: 'c3-gauge-value',\n grid: 'c3-grid',\n gridLines: 'c3-grid-lines',\n xgrid: 'c3-xgrid',\n xgrids: 'c3-xgrids',\n xgridLine: 'c3-xgrid-line',\n xgridLines: 'c3-xgrid-lines',\n xgridFocus: 'c3-xgrid-focus',\n ygrid: 'c3-ygrid',\n ygrids: 'c3-ygrids',\n ygridLine: 'c3-ygrid-line',\n ygridLines: 'c3-ygrid-lines',\n colorScale: 'c3-colorscale',\n stanfordElements: 'c3-stanford-elements',\n stanfordLine: 'c3-stanford-line',\n stanfordLines: 'c3-stanford-lines',\n stanfordRegion: 'c3-stanford-region',\n stanfordRegions: 'c3-stanford-regions',\n stanfordText: 'c3-stanford-text',\n stanfordTexts: 'c3-stanford-texts',\n axis: 'c3-axis',\n axisX: 'c3-axis-x',\n axisXLabel: 'c3-axis-x-label',\n axisY: 'c3-axis-y',\n axisYLabel: 'c3-axis-y-label',\n axisY2: 'c3-axis-y2',\n axisY2Label: 'c3-axis-y2-label',\n legendBackground: 'c3-legend-background',\n legendItem: 'c3-legend-item',\n legendItemEvent: 'c3-legend-item-event',\n legendItemTile: 'c3-legend-item-tile',\n legendItemHidden: 'c3-legend-item-hidden',\n legendItemFocused: 'c3-legend-item-focused',\n dragarea: 'c3-dragarea',\n EXPANDED: '_expanded_',\n SELECTED: '_selected_',\n INCLUDED: '_included_'\n };\n\n var asHalfPixel = function asHalfPixel(n) {\n return Math.ceil(n) + 0.5;\n };\n var ceil10 = function ceil10(v) {\n return Math.ceil(v / 10) * 10;\n };\n var diffDomain = function diffDomain(d) {\n return d[1] - d[0];\n };\n var getOption = function getOption(options, key, defaultValue) {\n return isDefined(options[key]) ? options[key] : defaultValue;\n };\n var getPathBox = function getPathBox(path) {\n var box = path.getBoundingClientRect(),\n items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n minX = items[0].x,\n minY = Math.min(items[0].y, items[1].y);\n return {\n x: minX,\n y: minY,\n width: box.width,\n height: box.height\n };\n };\n var hasValue = function hasValue(dict, value) {\n var found = false;\n Object.keys(dict).forEach(function (key) {\n if (dict[key] === value) {\n found = true;\n }\n });\n return found;\n };\n var isArray = function isArray(o) {\n return Array.isArray(o);\n };\n var isDefined = function isDefined(v) {\n return typeof v !== 'undefined';\n };\n var isEmpty = function isEmpty(o) {\n return typeof o === 'undefined' || o === null || isString(o) && o.length === 0 || _typeof(o) === 'object' && Object.keys(o).length === 0;\n };\n var isFunction = function isFunction(o) {\n return typeof o === 'function';\n };\n var isString = function isString(o) {\n return typeof o === 'string';\n };\n var isUndefined = function isUndefined(v) {\n return typeof v === 'undefined';\n };\n var isValue = function isValue(v) {\n return v || v === 0;\n };\n var notEmpty = function notEmpty(o) {\n return !isEmpty(o);\n };\n var sanitise = function sanitise(str) {\n return typeof str === 'string' ? str.replace(//g, '>') : str;\n };\n\n var Axis = function Axis(owner) {\n _classCallCheck(this, Axis);\n\n this.owner = owner;\n this.d3 = owner.d3;\n this.internal = AxisInternal;\n };\n\n Axis.prototype.init = function init() {\n var $$ = this.owner,\n config = $$.config,\n main = $$.main;\n $$.axes.x = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisX).attr(\"clip-path\", config.axis_x_inner ? \"\" : $$.clipPathForXAxis).attr(\"transform\", $$.getTranslate('x')).style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n $$.axes.x.append(\"text\").attr(\"class\", CLASS.axisXLabel).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n $$.axes.y = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY).attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis).attr(\"transform\", $$.getTranslate('y')).style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n $$.axes.y.append(\"text\").attr(\"class\", CLASS.axisYLabel).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n $$.axes.y2 = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2) // clip-path?\n .attr(\"transform\", $$.getTranslate('y2')).style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n $$.axes.y2.append(\"text\").attr(\"class\", CLASS.axisY2Label).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n };\n\n Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n isCategory: $$.isCategorized(),\n withOuterTick: withOuterTick,\n tickMultiline: config.axis_x_tick_multiline,\n tickMultilineMax: config.axis_x_tick_multiline ? Number(config.axis_x_tick_multilineMax) : 0,\n tickWidth: config.axis_x_tick_width,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n withoutTransition: withoutTransition\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient);\n\n if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n tickValues = tickValues.map(function (v) {\n return $$.parseDate(v);\n });\n } // Set tick\n\n\n axis.tickFormat(tickFormat).tickValues(tickValues);\n\n if ($$.isCategorized()) {\n axis.tickCentered(config.axis_x_tick_centered);\n\n if (isEmpty(config.axis_x_tick_culling)) {\n config.axis_x_tick_culling = false;\n }\n }\n\n return axis;\n };\n\n Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n var $$ = this.owner,\n config = $$.config,\n tickValues;\n\n if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n }\n\n if (axis) {\n axis.tickValues(tickValues);\n } else {\n $$.xAxis.tickValues(tickValues);\n $$.subXAxis.tickValues(tickValues);\n }\n\n return tickValues;\n };\n\n Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n withOuterTick: withOuterTick,\n withoutTransition: withoutTransition,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat);\n\n if ($$.isTimeSeriesY()) {\n axis.ticks(config.axis_y_tick_time_type, config.axis_y_tick_time_interval);\n } else {\n axis.tickValues(tickValues);\n }\n\n return axis;\n };\n\n Axis.prototype.getId = function getId(id) {\n var config = this.owner.config;\n return id in config.data_axes ? config.data_axes[id] : 'y';\n };\n\n Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {\n // #2251 previously set any negative values to a whole number,\n // however both should be truncated according to the users format specification\n var $$ = this.owner,\n config = $$.config;\n var format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) {\n return v;\n };\n\n if (config.axis_x_tick_format) {\n if (isFunction(config.axis_x_tick_format)) {\n format = config.axis_x_tick_format;\n } else if ($$.isTimeSeries()) {\n format = function format(date) {\n return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n };\n }\n }\n\n return isFunction(format) ? function (v) {\n return format.call($$, v);\n } : format;\n };\n\n Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {\n return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n };\n\n Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n };\n\n Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n };\n\n Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n };\n\n Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n var $$ = this.owner,\n config = $$.config,\n option;\n\n if (axisId === 'y') {\n option = config.axis_y_label;\n } else if (axisId === 'y2') {\n option = config.axis_y2_label;\n } else if (axisId === 'x') {\n option = config.axis_x_label;\n }\n\n return option;\n };\n\n Axis.prototype.getLabelText = function getLabelText(axisId) {\n var option = this.getLabelOptionByAxisId(axisId);\n return isString(option) ? option : option ? option.text : null;\n };\n\n Axis.prototype.setLabelText = function setLabelText(axisId, text) {\n var $$ = this.owner,\n config = $$.config,\n option = this.getLabelOptionByAxisId(axisId);\n\n if (isString(option)) {\n if (axisId === 'y') {\n config.axis_y_label = text;\n } else if (axisId === 'y2') {\n config.axis_y2_label = text;\n } else if (axisId === 'x') {\n config.axis_x_label = text;\n }\n } else if (option) {\n option.text = text;\n }\n };\n\n Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n var option = this.getLabelOptionByAxisId(axisId),\n position = option && _typeof(option) === 'object' && option.position ? option.position : defaultPosition;\n return {\n isInner: position.indexOf('inner') >= 0,\n isOuter: position.indexOf('outer') >= 0,\n isLeft: position.indexOf('left') >= 0,\n isCenter: position.indexOf('center') >= 0,\n isRight: position.indexOf('right') >= 0,\n isTop: position.indexOf('top') >= 0,\n isMiddle: position.indexOf('middle') >= 0,\n isBottom: position.indexOf('bottom') >= 0\n };\n };\n\n Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {\n return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n };\n\n Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {\n return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n\n Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n\n Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {\n return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n };\n\n Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {\n return this.getLabelText('x');\n };\n\n Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {\n return this.getLabelText('y');\n };\n\n Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {\n return this.getLabelText('y2');\n };\n\n Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n var $$ = this.owner;\n\n if (forHorizontal) {\n return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n } else {\n return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n }\n };\n\n Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n } else {\n return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n }\n };\n\n Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n } else {\n return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n }\n };\n\n Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {\n return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {\n return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {\n var $$ = this.owner,\n config = $$.config,\n position = this.getXAxisLabelPosition();\n\n if (config.axis_rotated) {\n return position.isInner ? \"1.2em\" : -25 - ($$.config.axis_x_inner ? 0 : this.getMaxTickWidth('x'));\n } else {\n return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n }\n };\n\n Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {\n var $$ = this.owner,\n position = this.getYAxisLabelPosition();\n\n if ($$.config.axis_rotated) {\n return position.isInner ? \"-0.5em\" : \"3em\";\n } else {\n return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : this.getMaxTickWidth('y') + 10);\n }\n };\n\n Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {\n var $$ = this.owner,\n position = this.getY2AxisLabelPosition();\n\n if ($$.config.axis_rotated) {\n return position.isInner ? \"1.2em\" : \"-2.2em\";\n } else {\n return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : this.getMaxTickWidth('y2') + 15);\n }\n };\n\n Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n var $$ = this.owner,\n config = $$.config,\n maxWidth = 0,\n targetsToShow,\n scale,\n axis,\n dummy,\n svg;\n\n if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n return $$.currentMaxTickWidths[id];\n }\n\n if ($$.svg) {\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n\n if (id === 'y') {\n scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n } else if (id === 'y2') {\n scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n } else {\n scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n this.updateXAxisTickValues(targetsToShow, axis);\n }\n\n dummy = $$.d3.select('body').append('div').classed('c3', true);\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), svg.append('g').call(axis).each(function () {\n $$.d3.select(this).selectAll('text').each(function () {\n var box = this.getBoundingClientRect();\n\n if (maxWidth < box.width) {\n maxWidth = box.width;\n }\n });\n dummy.remove();\n });\n }\n\n $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n return $$.currentMaxTickWidths[id];\n };\n\n Axis.prototype.updateLabels = function updateLabels(withTransition) {\n var $$ = this.owner;\n var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n (withTransition ? axisXLabel.transition() : axisXLabel).attr(\"x\", this.xForXAxisLabel.bind(this)).attr(\"dx\", this.dxForXAxisLabel.bind(this)).attr(\"dy\", this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this));\n (withTransition ? axisYLabel.transition() : axisYLabel).attr(\"x\", this.xForYAxisLabel.bind(this)).attr(\"dx\", this.dxForYAxisLabel.bind(this)).attr(\"dy\", this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this));\n (withTransition ? axisY2Label.transition() : axisY2Label).attr(\"x\", this.xForY2AxisLabel.bind(this)).attr(\"dx\", this.dxForY2AxisLabel.bind(this)).attr(\"dy\", this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this));\n };\n\n Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n var p = typeof padding === 'number' ? padding : padding[key];\n\n if (!isValue(p)) {\n return defaultValue;\n }\n\n if (padding.unit === 'ratio') {\n return padding[key] * domainLength;\n } // assume padding is pixels if unit is not specified\n\n\n return this.convertPixelsToAxisPadding(p, domainLength);\n };\n\n Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n var $$ = this.owner,\n length = $$.config.axis_rotated ? $$.width : $$.height;\n return domainLength * (pixels / length);\n };\n\n Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n var tickValues = values,\n targetCount,\n start,\n end,\n count,\n interval,\n i,\n tickValue;\n\n if (tickCount) {\n targetCount = isFunction(tickCount) ? tickCount() : tickCount; // compute ticks according to tickCount\n\n if (targetCount === 1) {\n tickValues = [values[0]];\n } else if (targetCount === 2) {\n tickValues = [values[0], values[values.length - 1]];\n } else if (targetCount > 2) {\n count = targetCount - 2;\n start = values[0];\n end = values[values.length - 1];\n interval = (end - start) / (count + 1); // re-construct unique values\n\n tickValues = [start];\n\n for (i = 0; i < count; i++) {\n tickValue = +start + interval * (i + 1);\n tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n }\n\n tickValues.push(end);\n }\n }\n\n if (!forTimeSeries) {\n tickValues = tickValues.sort(function (a, b) {\n return a - b;\n });\n }\n\n return tickValues;\n };\n\n Axis.prototype.generateTransitions = function generateTransitions(duration) {\n var $$ = this.owner,\n axes = $$.axes;\n return {\n axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n };\n };\n\n Axis.prototype.redraw = function redraw(duration, isHidden) {\n var $$ = this.owner,\n transition = duration ? $$.d3.transition().duration(duration) : null;\n $$.axes.x.style(\"opacity\", isHidden ? 0 : 1).call($$.xAxis, transition);\n $$.axes.y.style(\"opacity\", isHidden ? 0 : 1).call($$.yAxis, transition);\n $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1).call($$.y2Axis, transition);\n $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1).call($$.subXAxis, transition);\n };\n\n var c3 = {\n version: \"0.7.2\",\n chart: {\n fn: Chart.prototype,\n internal: {\n fn: ChartInternal.prototype,\n axis: {\n fn: Axis.prototype,\n internal: {\n fn: AxisInternal.prototype\n }\n }\n }\n },\n generate: function generate(config) {\n return new Chart(config);\n }\n };\n\n ChartInternal.prototype.beforeInit = function () {// can do something\n };\n\n ChartInternal.prototype.afterInit = function () {// can do something\n };\n\n ChartInternal.prototype.init = function () {\n var $$ = this,\n config = $$.config;\n $$.initParams();\n\n if (config.data_url) {\n $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n } else if (config.data_json) {\n $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n } else if (config.data_rows) {\n $$.initWithData($$.convertRowsToData(config.data_rows));\n } else if (config.data_columns) {\n $$.initWithData($$.convertColumnsToData(config.data_columns));\n } else {\n throw Error('url or json or rows or columns is required.');\n }\n };\n\n ChartInternal.prototype.initParams = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config; // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n\n $$.clipId = \"c3-\" + +new Date() + '-clip';\n $$.clipIdForXAxis = $$.clipId + '-xaxis';\n $$.clipIdForYAxis = $$.clipId + '-yaxis';\n $$.clipIdForGrid = $$.clipId + '-grid';\n $$.clipIdForSubchart = $$.clipId + '-subchart';\n $$.clipPath = $$.getClipPath($$.clipId);\n $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis);\n $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid);\n $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart);\n $$.dragStart = null;\n $$.dragging = false;\n $$.flowing = false;\n $$.cancelClick = false;\n $$.mouseover = false;\n $$.transiting = false;\n $$.color = $$.generateColor();\n $$.levelColor = $$.generateLevelColor();\n $$.dataTimeParse = (config.data_xLocaltime ? d3.timeParse : d3.utcParse)($$.config.data_xFormat);\n $$.axisTimeFormat = config.axis_x_localtime ? d3.timeFormat : d3.utcFormat;\n\n $$.defaultAxisTimeFormat = function (date) {\n if (date.getMilliseconds()) {\n return d3.timeFormat(\".%L\")(date);\n }\n\n if (date.getSeconds()) {\n return d3.timeFormat(\":%S\")(date);\n }\n\n if (date.getMinutes()) {\n return d3.timeFormat(\"%I:%M\")(date);\n }\n\n if (date.getHours()) {\n return d3.timeFormat(\"%I %p\")(date);\n }\n\n if (date.getDay() && date.getDate() !== 1) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n if (date.getDate() !== 1) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n if (date.getMonth()) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n return d3.timeFormat(\"%Y/%-m/%-d\")(date);\n };\n\n $$.hiddenTargetIds = [];\n $$.hiddenLegendIds = [];\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n $$.xOrient = config.axis_rotated ? config.axis_x_inner ? \"right\" : \"left\" : config.axis_x_inner ? \"top\" : \"bottom\";\n $$.yOrient = config.axis_rotated ? config.axis_y_inner ? \"top\" : \"bottom\" : config.axis_y_inner ? \"right\" : \"left\";\n $$.y2Orient = config.axis_rotated ? config.axis_y2_inner ? \"bottom\" : \"top\" : config.axis_y2_inner ? \"left\" : \"right\";\n $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n $$.isLegendRight = config.legend_position === 'right';\n $$.isLegendInset = config.legend_position === 'inset';\n $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n $$.legendStep = 0;\n $$.legendItemWidth = 0;\n $$.legendItemHeight = 0;\n $$.currentMaxTickWidths = {\n x: 0,\n y: 0,\n y2: 0\n };\n $$.rotated_padding_left = 30;\n $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n $$.rotated_padding_top = 5;\n $$.withoutFadeIn = {};\n $$.intervalForObserveInserted = undefined;\n $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n };\n\n ChartInternal.prototype.initChartElements = function () {\n if (this.initBar) {\n this.initBar();\n }\n\n if (this.initLine) {\n this.initLine();\n }\n\n if (this.initArc) {\n this.initArc();\n }\n\n if (this.initGauge) {\n this.initGauge();\n }\n\n if (this.initText) {\n this.initText();\n }\n };\n\n ChartInternal.prototype.initWithData = function (data) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n var defs,\n main,\n binding = true;\n $$.axis = new Axis($$);\n\n if (!config.bindto) {\n $$.selectChart = d3.selectAll([]);\n } else if (typeof config.bindto.node === 'function') {\n $$.selectChart = config.bindto;\n } else {\n $$.selectChart = d3.select(config.bindto);\n }\n\n if ($$.selectChart.empty()) {\n $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n $$.observeInserted($$.selectChart);\n binding = false;\n }\n\n $$.selectChart.html(\"\").classed(\"c3\", true); // Init data as targets\n\n $$.data.xs = {};\n $$.data.targets = $$.convertDataToTargets(data);\n\n if (config.data_filter) {\n $$.data.targets = $$.data.targets.filter(config.data_filter);\n } // Set targets to hide if needed\n\n\n if (config.data_hide) {\n $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n }\n\n if (config.legend_hide) {\n $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n }\n\n if ($$.isStanfordGraphType()) {\n $$.initStanfordData();\n } // Init sizes and scales\n\n\n $$.updateSizes();\n $$.updateScales(); // Set domains for each scale\n\n $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n $$.subX.domain($$.x.domain());\n $$.subY.domain($$.y.domain());\n $$.subY2.domain($$.y2.domain()); // Save original x domain for zoom update\n\n $$.orgXDomain = $$.x.domain();\n /*-- Basic Elements --*/\n // Define svgs\n\n $$.svg = $$.selectChart.append(\"svg\").style(\"overflow\", \"hidden\").on('mouseenter', function () {\n return config.onmouseover.call($$);\n }).on('mouseleave', function () {\n return config.onmouseout.call($$);\n });\n\n if ($$.config.svg_classname) {\n $$.svg.attr('class', $$.config.svg_classname);\n } // Define defs\n\n\n defs = $$.svg.append(\"defs\");\n $$.clipChart = $$.appendClip(defs, $$.clipId);\n $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n $$.updateSvgSize(); // Define regions\n\n main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n if ($$.initPie) {\n $$.initPie();\n }\n\n if ($$.initDragZoom) {\n $$.initDragZoom();\n }\n\n if ($$.initSubchart) {\n $$.initSubchart();\n }\n\n if ($$.initTooltip) {\n $$.initTooltip();\n }\n\n if ($$.initLegend) {\n $$.initLegend();\n }\n\n if ($$.initTitle) {\n $$.initTitle();\n }\n\n if ($$.initZoom) {\n $$.initZoom();\n }\n\n if ($$.isStanfordGraphType()) {\n $$.drawColorScale();\n } // Update selection based on size and scale\n // TODO: currently this must be called after initLegend because of update of sizes, but it should be done in initSubchart.\n\n\n if ($$.initSubchartBrush) {\n $$.initSubchartBrush();\n }\n /*-- Main Region --*/\n // text when empty\n\n\n main.append(\"text\").attr(\"class\", CLASS.text + ' ' + CLASS.empty).attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n // Regions\n\n $$.initRegion(); // Grids\n\n $$.initGrid(); // Define g for chart area\n\n main.append('g').attr(\"clip-path\", $$.clipPath).attr('class', CLASS.chart); // Grid lines\n\n if (config.grid_lines_front) {\n $$.initGridLines();\n }\n\n $$.initStanfordElements(); // Cover whole with rects for events\n\n $$.initEventRect(); // Define g for chart\n\n $$.initChartElements(); // Add Axis\n\n $$.axis.init(); // Set targets\n\n $$.updateTargets($$.data.targets); // Set default extent if defined\n\n if (config.axis_x_selection) {\n $$.brush.selectionAsValue($$.getDefaultSelection());\n } // Draw with targets\n\n\n if (binding) {\n $$.updateDimension();\n $$.config.oninit.call($$);\n $$.redraw({\n withTransition: false,\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransitionForAxis: false\n });\n } // Bind to resize event\n\n\n $$.bindResize(); // Bind to window focus event\n\n $$.bindWindowFocus(); // export element of the chart\n\n $$.api.element = $$.selectChart.node();\n };\n\n ChartInternal.prototype.smoothLines = function (el, type) {\n var $$ = this;\n\n if (type === 'grid') {\n el.each(function () {\n var g = $$.d3.select(this),\n x1 = g.attr('x1'),\n x2 = g.attr('x2'),\n y1 = g.attr('y1'),\n y2 = g.attr('y2');\n g.attr({\n 'x1': Math.ceil(x1),\n 'x2': Math.ceil(x2),\n 'y1': Math.ceil(y1),\n 'y2': Math.ceil(y2)\n });\n });\n }\n };\n\n ChartInternal.prototype.updateSizes = function () {\n var $$ = this,\n config = $$.config;\n var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n hasArc = $$.hasArcType(),\n xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n subchartHeight = config.subchart_show && !hasArc ? config.subchart_size_height + xAxisHeight : 0;\n $$.currentWidth = $$.getCurrentWidth();\n $$.currentHeight = $$.getCurrentHeight(); // for main\n\n $$.margin = config.axis_rotated ? {\n top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n } : {\n top: 4 + $$.getCurrentPaddingTop(),\n // for top tick text\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n }; // for subchart\n\n $$.margin2 = config.axis_rotated ? {\n top: $$.margin.top,\n right: NaN,\n bottom: 20 + legendHeightForBottom,\n left: $$.rotated_padding_left\n } : {\n top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n right: NaN,\n bottom: xAxisHeight + legendHeightForBottom,\n left: $$.margin.left\n }; // for legend\n\n $$.margin3 = {\n top: 0,\n right: NaN,\n bottom: 0,\n left: 0\n };\n\n if ($$.updateSizeForLegend) {\n $$.updateSizeForLegend(legendHeight, legendWidth);\n }\n\n $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n\n if ($$.width < 0) {\n $$.width = 0;\n }\n\n if ($$.height < 0) {\n $$.height = 0;\n }\n\n $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n\n if ($$.width2 < 0) {\n $$.width2 = 0;\n }\n\n if ($$.height2 < 0) {\n $$.height2 = 0;\n } // for arc\n\n\n $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n\n if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n }\n\n if ($$.updateRadius) {\n $$.updateRadius();\n }\n\n if ($$.isLegendRight && hasArc) {\n $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n }\n };\n\n ChartInternal.prototype.updateTargets = function (targets) {\n var $$ = this;\n /*-- Main --*/\n //-- Text --//\n\n $$.updateTargetsForText(targets); //-- Bar --//\n\n $$.updateTargetsForBar(targets); //-- Line --//\n\n $$.updateTargetsForLine(targets); //-- Arc --//\n\n if ($$.hasArcType() && $$.updateTargetsForArc) {\n $$.updateTargetsForArc(targets);\n }\n /*-- Sub --*/\n\n\n if ($$.updateTargetsForSubchart) {\n $$.updateTargetsForSubchart(targets);\n } // Fade-in each chart\n\n\n $$.showTargets();\n };\n\n ChartInternal.prototype.showTargets = function () {\n var $$ = this;\n $$.svg.selectAll('.' + CLASS.target).filter(function (d) {\n return $$.isTargetToShow(d.id);\n }).transition().duration($$.config.transition_duration).style(\"opacity\", 1);\n };\n\n ChartInternal.prototype.redraw = function (options, transitions) {\n var $$ = this,\n main = $$.main,\n d3 = $$.d3,\n config = $$.config;\n var areaIndices = $$.getShapeIndices($$.isAreaType),\n barIndices = $$.getShapeIndices($$.isBarType),\n lineIndices = $$.getShapeIndices($$.isLineType);\n var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension, withUpdateXAxis;\n var hideAxis = $$.hasArcType();\n var drawArea, drawBar, drawLine, xForText, yForText;\n var duration, durationForExit, durationForAxis;\n var transitionsToWait, waitForDraw, flow, transition;\n var targetsToShow = $$.filterTargetsToShow($$.data.targets),\n tickValues,\n i,\n intervalForCulling,\n xDomainForZoom;\n var xv = $$.xv.bind($$),\n cx,\n cy;\n options = options || {};\n withY = getOption(options, \"withY\", true);\n withSubchart = getOption(options, \"withSubchart\", true);\n withTransition = getOption(options, \"withTransition\", true);\n withTransform = getOption(options, \"withTransform\", false);\n withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n withLegend = getOption(options, \"withLegend\", false);\n withEventRect = getOption(options, \"withEventRect\", true);\n withDimension = getOption(options, \"withDimension\", true);\n withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n duration = withTransition ? config.transition_duration : 0;\n durationForExit = withTransitionForExit ? duration : 0;\n durationForAxis = withTransitionForAxis ? duration : 0;\n transitions = transitions || $$.axis.generateTransitions(durationForAxis); // update legend and transform each g\n\n if (withLegend && config.legend_show) {\n $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n } else if (withDimension) {\n // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n // no need to update axis in it because they will be updated in redraw()\n $$.updateDimension(true);\n } // MEMO: needed for grids calculation\n\n\n if ($$.isCategorized() && targetsToShow.length === 0) {\n $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n }\n\n if (targetsToShow.length) {\n $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n\n if (!config.axis_x_tick_values) {\n tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n }\n } else {\n $$.xAxis.tickValues([]);\n $$.subXAxis.tickValues([]);\n }\n\n if (config.zoom_rescale && !options.flow) {\n xDomainForZoom = $$.x.orgDomain();\n }\n\n $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n }\n\n if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n } // axes\n\n\n $$.axis.redraw(durationForAxis, hideAxis); // Update axis label\n\n $$.axis.updateLabels(withTransition); // show/hide if manual culling needed\n\n if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n if (config.axis_x_tick_culling && tickValues) {\n for (i = 1; i < tickValues.length; i++) {\n if (tickValues.length / i < config.axis_x_tick_culling_max) {\n intervalForCulling = i;\n break;\n }\n }\n\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n var index = tickValues.indexOf(e);\n\n if (index >= 0) {\n d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n }\n });\n } else {\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n }\n } // setup drawer - MEMO: these must be called after axis updated\n\n\n drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false); // update circleY based on updated parameters\n\n $$.updateCircleY(); // generate circle x/y functions depending on updated params\n\n cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$); // Update sub domain\n\n if (withY) {\n $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n } // xgrid focus\n\n\n $$.updateXgridFocus(); // Data empty label positioning and text.\n\n main.select(\"text.\" + CLASS.text + '.' + CLASS.empty).attr(\"x\", $$.width / 2).attr(\"y\", $$.height / 2).text(config.data_empty_label_text).transition().style('opacity', targetsToShow.length ? 0 : 1); // event rect\n\n if (withEventRect) {\n $$.redrawEventRect();\n } // grid\n\n\n $$.updateGrid(duration);\n $$.updateStanfordElements(duration); // rect for regions\n\n $$.updateRegion(duration); // bars\n\n $$.updateBar(durationForExit); // lines, areas and circles\n\n $$.updateLine(durationForExit);\n $$.updateArea(durationForExit);\n $$.updateCircle(cx, cy); // text\n\n if ($$.hasDataLabel()) {\n $$.updateText(xForText, yForText, durationForExit);\n } // title\n\n\n if ($$.redrawTitle) {\n $$.redrawTitle();\n } // arc\n\n\n if ($$.redrawArc) {\n $$.redrawArc(duration, durationForExit, withTransform);\n } // subchart\n\n\n if ($$.redrawSubchart) {\n $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n }\n\n if ($$.isStanfordGraphType()) {\n $$.drawColorScale();\n } // circles for select\n\n\n main.selectAll('.' + CLASS.selectedCircles).filter($$.isBarType.bind($$)).selectAll('circle').remove();\n\n if (options.flow) {\n flow = $$.generateFlow({\n targets: targetsToShow,\n flow: options.flow,\n duration: options.flow.duration,\n drawBar: drawBar,\n drawLine: drawLine,\n drawArea: drawArea,\n cx: cx,\n cy: cy,\n xv: xv,\n xForText: xForText,\n yForText: yForText\n });\n }\n\n if ($$.isTabVisible()) {\n // Only use transition if tab visible. See #938.\n if (duration) {\n // transition should be derived from one transition\n transition = d3.transition().duration(duration);\n transitionsToWait = [];\n [$$.redrawBar(drawBar, true, transition), $$.redrawLine(drawLine, true, transition), $$.redrawArea(drawArea, true, transition), $$.redrawCircle(cx, cy, true, transition), $$.redrawText(xForText, yForText, options.flow, true, transition), $$.redrawRegion(true, transition), $$.redrawGrid(true, transition)].forEach(function (transitions) {\n transitions.forEach(function (transition) {\n transitionsToWait.push(transition);\n });\n }); // Wait for end of transitions to call flow and onrendered callback\n\n waitForDraw = $$.generateWait();\n transitionsToWait.forEach(function (t) {\n waitForDraw.add(t);\n });\n waitForDraw(function () {\n if (flow) {\n flow();\n }\n\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n });\n } else {\n $$.redrawBar(drawBar);\n $$.redrawLine(drawLine);\n $$.redrawArea(drawArea);\n $$.redrawCircle(cx, cy);\n $$.redrawText(xForText, yForText, options.flow);\n $$.redrawRegion();\n $$.redrawGrid();\n\n if (flow) {\n flow();\n }\n\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n }\n } // update fadein condition\n\n\n $$.mapToIds($$.data.targets).forEach(function (id) {\n $$.withoutFadeIn[id] = true;\n });\n };\n\n ChartInternal.prototype.updateAndRedraw = function (options) {\n var $$ = this,\n config = $$.config,\n transitions;\n options = options || {}; // same with redraw\n\n options.withTransition = getOption(options, \"withTransition\", true);\n options.withTransform = getOption(options, \"withTransform\", false);\n options.withLegend = getOption(options, \"withLegend\", false); // NOT same with redraw\n\n options.withUpdateXDomain = getOption(options, \"withUpdateXDomain\", true);\n options.withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", true);\n options.withTransitionForExit = false;\n options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition); // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n\n $$.updateSizes(); // MEMO: called in updateLegend in redraw if withLegend\n\n if (!(options.withLegend && config.legend_show)) {\n transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0); // Update scales\n\n $$.updateScales();\n $$.updateSvgSize(); // Update g positions\n\n $$.transformAll(options.withTransitionForTransform, transitions);\n } // Draw with new sizes & scales\n\n\n $$.redraw(options, transitions);\n };\n\n ChartInternal.prototype.redrawWithoutRescale = function () {\n this.redraw({\n withY: false,\n withSubchart: false,\n withEventRect: false,\n withTransitionForAxis: false\n });\n };\n\n ChartInternal.prototype.isTimeSeries = function () {\n return this.config.axis_x_type === 'timeseries';\n };\n\n ChartInternal.prototype.isCategorized = function () {\n return this.config.axis_x_type.indexOf('categor') >= 0;\n };\n\n ChartInternal.prototype.isCustomX = function () {\n var $$ = this,\n config = $$.config;\n return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n };\n\n ChartInternal.prototype.isTimeSeriesY = function () {\n return this.config.axis_y_type === 'timeseries';\n };\n\n ChartInternal.prototype.getTranslate = function (target) {\n var $$ = this,\n config = $$.config,\n x,\n y;\n\n if (target === 'main') {\n x = asHalfPixel($$.margin.left);\n y = asHalfPixel($$.margin.top);\n } else if (target === 'context') {\n x = asHalfPixel($$.margin2.left);\n y = asHalfPixel($$.margin2.top);\n } else if (target === 'legend') {\n x = $$.margin3.left;\n y = $$.margin3.top;\n } else if (target === 'x') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height;\n } else if (target === 'y') {\n x = 0;\n y = config.axis_rotated ? $$.height : 0;\n } else if (target === 'y2') {\n x = config.axis_rotated ? 0 : $$.width;\n y = config.axis_rotated ? 1 : 0;\n } else if (target === 'subx') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height2;\n } else if (target === 'arc') {\n x = $$.arcWidth / 2;\n y = $$.arcHeight / 2 - ($$.hasType('gauge') ? 6 : 0); // to prevent wrong display of min and max label\n }\n\n return \"translate(\" + x + \",\" + y + \")\";\n };\n\n ChartInternal.prototype.initialOpacity = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n };\n\n ChartInternal.prototype.initialOpacityForCircle = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n };\n\n ChartInternal.prototype.opacityForCircle = function (d) {\n var isPointShouldBeShown = isFunction(this.config.point_show) ? this.config.point_show(d) : this.config.point_show;\n var opacity = isPointShouldBeShown || this.isStanfordType(d) ? 1 : 0;\n return isValue(d.value) ? this.isScatterType(d) ? 0.5 : opacity : 0;\n };\n\n ChartInternal.prototype.opacityForText = function () {\n return this.hasDataLabel() ? 1 : 0;\n };\n\n ChartInternal.prototype.xx = function (d) {\n return d ? this.x(d.x) : null;\n };\n\n ChartInternal.prototype.xvCustom = function (d, xyValue) {\n var $$ = this,\n value = xyValue ? d[xyValue] : d.value;\n\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n\n return Math.ceil($$.x(value));\n };\n\n ChartInternal.prototype.yvCustom = function (d, xyValue) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y,\n value = xyValue ? d[xyValue] : d.value;\n return Math.ceil(yScale(value));\n };\n\n ChartInternal.prototype.xv = function (d) {\n var $$ = this,\n value = d.value;\n\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n\n return Math.ceil($$.x(value));\n };\n\n ChartInternal.prototype.yv = function (d) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n return Math.ceil(yScale(d.value));\n };\n\n ChartInternal.prototype.subxx = function (d) {\n return d ? this.subX(d.x) : null;\n };\n\n ChartInternal.prototype.transformMain = function (withTransition, transitions) {\n var $$ = this,\n xAxis,\n yAxis,\n y2Axis;\n\n if (transitions && transitions.axisX) {\n xAxis = transitions.axisX;\n } else {\n xAxis = $$.main.select('.' + CLASS.axisX);\n\n if (withTransition) {\n xAxis = xAxis.transition();\n }\n }\n\n if (transitions && transitions.axisY) {\n yAxis = transitions.axisY;\n } else {\n yAxis = $$.main.select('.' + CLASS.axisY);\n\n if (withTransition) {\n yAxis = yAxis.transition();\n }\n }\n\n if (transitions && transitions.axisY2) {\n y2Axis = transitions.axisY2;\n } else {\n y2Axis = $$.main.select('.' + CLASS.axisY2);\n\n if (withTransition) {\n y2Axis = y2Axis.transition();\n }\n }\n\n (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n xAxis.attr(\"transform\", $$.getTranslate('x'));\n yAxis.attr(\"transform\", $$.getTranslate('y'));\n y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n };\n\n ChartInternal.prototype.transformAll = function (withTransition, transitions) {\n var $$ = this;\n $$.transformMain(withTransition, transitions);\n\n if ($$.config.subchart_show) {\n $$.transformContext(withTransition, transitions);\n }\n\n if ($$.legend) {\n $$.transformLegend(withTransition);\n }\n };\n\n ChartInternal.prototype.updateSvgSize = function () {\n var $$ = this,\n brush = $$.svg.select(\".c3-brush .overlay\");\n $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect').attr('width', $$.width).attr('height', $$.height);\n $$.svg.select('#' + $$.clipIdForXAxis).select('rect').attr('x', $$.getXAxisClipX.bind($$)).attr('y', $$.getXAxisClipY.bind($$)).attr('width', $$.getXAxisClipWidth.bind($$)).attr('height', $$.getXAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForYAxis).select('rect').attr('x', $$.getYAxisClipX.bind($$)).attr('y', $$.getYAxisClipY.bind($$)).attr('width', $$.getYAxisClipWidth.bind($$)).attr('height', $$.getYAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForSubchart).select('rect').attr('width', $$.width).attr('height', brush.size() ? brush.attr('height') : 0); // MEMO: parent div's height will be bigger than svg when \n\n $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n };\n\n ChartInternal.prototype.updateDimension = function (withoutAxis) {\n var $$ = this;\n\n if (!withoutAxis) {\n if ($$.config.axis_rotated) {\n $$.axes.x.call($$.xAxis);\n $$.axes.subx.call($$.subXAxis);\n } else {\n $$.axes.y.call($$.yAxis);\n $$.axes.y2.call($$.y2Axis);\n }\n }\n\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n $$.transformAll(false);\n };\n\n ChartInternal.prototype.observeInserted = function (selection) {\n var $$ = this,\n observer;\n\n if (typeof MutationObserver === 'undefined') {\n window.console.error(\"MutationObserver not defined.\");\n return;\n }\n\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'childList' && mutation.previousSibling) {\n observer.disconnect(); // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n\n $$.intervalForObserveInserted = window.setInterval(function () {\n // parentNode will NOT be null when completed\n if (selection.node().parentNode) {\n window.clearInterval($$.intervalForObserveInserted);\n $$.updateDimension();\n\n if ($$.brush) {\n $$.brush.update();\n }\n\n $$.config.oninit.call($$);\n $$.redraw({\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n selection.transition().style('opacity', 1);\n }\n }, 10);\n }\n });\n });\n observer.observe(selection.node(), {\n attributes: true,\n childList: true,\n characterData: true\n });\n };\n /**\n * Binds handlers to the window resize event.\n */\n\n\n ChartInternal.prototype.bindResize = function () {\n var $$ = this,\n config = $$.config;\n $$.resizeFunction = $$.generateResize(); // need to call .remove\n\n $$.resizeFunction.add(function () {\n config.onresize.call($$);\n });\n\n if (config.resize_auto) {\n $$.resizeFunction.add(function () {\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n $$.resizeTimeout = window.setTimeout(function () {\n delete $$.resizeTimeout;\n $$.updateAndRedraw({\n withUpdateXDomain: false,\n withUpdateOrgXDomain: false,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n\n if ($$.brush) {\n $$.brush.update();\n }\n }, 100);\n });\n }\n\n $$.resizeFunction.add(function () {\n config.onresized.call($$);\n });\n\n $$.resizeIfElementDisplayed = function () {\n // if element not displayed skip it\n if ($$.api == null || !$$.api.element.offsetParent) {\n return;\n }\n\n $$.resizeFunction();\n };\n\n if (window.attachEvent) {\n window.attachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.addEventListener) {\n window.addEventListener('resize', $$.resizeIfElementDisplayed, false);\n } else {\n // fallback to this, if this is a very old browser\n var wrapper = window.onresize;\n\n if (!wrapper) {\n // create a wrapper that will call all charts\n wrapper = $$.generateResize();\n } else if (!wrapper.add || !wrapper.remove) {\n // there is already a handler registered, make sure we call it too\n wrapper = $$.generateResize();\n wrapper.add(window.onresize);\n } // add this graph to the wrapper, we will be removed if the user calls destroy\n\n\n wrapper.add($$.resizeFunction);\n\n window.onresize = function () {\n // if element not displayed skip it\n if (!$$.api.element.offsetParent) {\n return;\n }\n\n wrapper();\n };\n }\n };\n /**\n * Binds handlers to the window focus event.\n */\n\n\n ChartInternal.prototype.bindWindowFocus = function () {\n var _this = this;\n\n if (this.windowFocusHandler) {\n // The handler is already set\n return;\n }\n\n this.windowFocusHandler = function () {\n _this.redraw();\n };\n\n window.addEventListener('focus', this.windowFocusHandler);\n };\n /**\n * Unbinds from the window focus event.\n */\n\n\n ChartInternal.prototype.unbindWindowFocus = function () {\n window.removeEventListener('focus', this.windowFocusHandler);\n delete this.windowFocusHandler;\n };\n\n ChartInternal.prototype.generateResize = function () {\n var resizeFunctions = [];\n\n function callResizeFunctions() {\n resizeFunctions.forEach(function (f) {\n f();\n });\n }\n\n callResizeFunctions.add = function (f) {\n resizeFunctions.push(f);\n };\n\n callResizeFunctions.remove = function (f) {\n for (var i = 0; i < resizeFunctions.length; i++) {\n if (resizeFunctions[i] === f) {\n resizeFunctions.splice(i, 1);\n break;\n }\n }\n };\n\n return callResizeFunctions;\n };\n\n ChartInternal.prototype.endall = function (transition, callback) {\n var n = 0;\n transition.each(function () {\n ++n;\n }).on(\"end\", function () {\n if (! --n) {\n callback.apply(this, arguments);\n }\n });\n };\n\n ChartInternal.prototype.generateWait = function () {\n var $$ = this;\n\n var transitionsToWait = [],\n f = function f(callback) {\n var timer = setInterval(function () {\n if (!$$.isTabVisible()) {\n return;\n }\n\n var done = 0;\n transitionsToWait.forEach(function (t) {\n if (t.empty()) {\n done += 1;\n return;\n }\n\n try {\n t.transition();\n } catch (e) {\n done += 1;\n }\n });\n\n if (done === transitionsToWait.length) {\n clearInterval(timer);\n\n if (callback) {\n callback();\n }\n }\n }, 50);\n };\n\n f.add = function (transition) {\n transitionsToWait.push(transition);\n };\n\n return f;\n };\n\n ChartInternal.prototype.parseDate = function (date) {\n var $$ = this,\n parsedDate;\n\n if (date instanceof Date) {\n parsedDate = date;\n } else if (typeof date === 'string') {\n parsedDate = $$.dataTimeParse(date);\n } else if (_typeof(date) === 'object') {\n parsedDate = new Date(+date);\n } else if (typeof date === 'number' && !isNaN(date)) {\n parsedDate = new Date(+date);\n }\n\n if (!parsedDate || isNaN(+parsedDate)) {\n window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n }\n\n return parsedDate;\n };\n\n ChartInternal.prototype.isTabVisible = function () {\n return !document.hidden;\n };\n\n ChartInternal.prototype.getPathBox = getPathBox;\n ChartInternal.prototype.CLASS = CLASS;\n\n /* jshint ignore:start */\n // SVGPathSeg API polyfill\n // https://github.com/progers/pathseg\n //\n // This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n // SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n // changes which were implemented in Firefox 43 and Chrome 46.\n (function () {\n\n if (!(\"SVGPathSeg\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\n this.pathSegType = type;\n this.pathSegTypeAsLetter = typeAsLetter;\n this._owningPathSegList = owningPathSegList;\n };\n\n window.SVGPathSeg.prototype.classname = \"SVGPathSeg\";\n window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\n window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\n window.SVGPathSeg.PATHSEG_ARC_REL = 11;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19; // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n\n window.SVGPathSeg.prototype._segmentChanged = function () {\n if (this._owningPathSegList) this._owningPathSegList.segmentChanged(this);\n };\n\n window.SVGPathSegClosePath = function (owningPathSegList) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n };\n\n window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegClosePath.prototype.toString = function () {\n return \"[object SVGPathSegClosePath]\";\n };\n\n window.SVGPathSegClosePath.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter;\n };\n\n window.SVGPathSegClosePath.prototype.clone = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegMovetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegMovetoAbs]\";\n };\n\n window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegMovetoAbs.prototype.clone = function () {\n return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegMovetoRel.prototype.toString = function () {\n return \"[object SVGPathSegMovetoRel]\";\n };\n\n window.SVGPathSegMovetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegMovetoRel.prototype.clone = function () {\n return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoAbs]\";\n };\n\n window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoRel]\";\n };\n\n window.SVGPathSegLinetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicAbs]\";\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicRel]\";\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticAbs]\";\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticRel]\";\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n\n window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegArcAbs.prototype.toString = function () {\n return \"[object SVGPathSegArcAbs]\";\n };\n\n window.SVGPathSegArcAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegArcAbs.prototype.clone = function () {\n return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r1\", {\n get: function get() {\n return this._r1;\n },\n set: function set(r1) {\n this._r1 = r1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r2\", {\n get: function get() {\n return this._r2;\n },\n set: function set(r2) {\n this._r2 = r2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"angle\", {\n get: function get() {\n return this._angle;\n },\n set: function set(angle) {\n this._angle = angle;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"largeArcFlag\", {\n get: function get() {\n return this._largeArcFlag;\n },\n set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"sweepFlag\", {\n get: function get() {\n return this._sweepFlag;\n },\n set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n\n window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegArcRel.prototype.toString = function () {\n return \"[object SVGPathSegArcRel]\";\n };\n\n window.SVGPathSegArcRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegArcRel.prototype.clone = function () {\n return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r1\", {\n get: function get() {\n return this._r1;\n },\n set: function set(r1) {\n this._r1 = r1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r2\", {\n get: function get() {\n return this._r2;\n },\n set: function set(r2) {\n this._r2 = r2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"angle\", {\n get: function get() {\n return this._angle;\n },\n set: function set(angle) {\n this._angle = angle;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"largeArcFlag\", {\n get: function get() {\n return this._largeArcFlag;\n },\n set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"sweepFlag\", {\n get: function get() {\n return this._sweepFlag;\n },\n set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n this._x = x;\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalAbs]\";\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n this._x = x;\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalRel]\";\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n this._y = y;\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalAbs]\";\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n this._y = y;\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalRel]\";\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothAbs]\";\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothRel]\";\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\";\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\";\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n }); // Add createSVGPathSeg* functions to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-Interfacewindow.SVGPathElement.\n\n window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\n return new window.SVGPathSegMovetoAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\n return new window.SVGPathSegMovetoRel(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\n return new window.SVGPathSegLinetoAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\n return new window.SVGPathSegLinetoRel(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\n return new window.SVGPathSegLinetoVerticalRel(undefined, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\n };\n\n if (!(\"getPathSegAtLength\" in window.SVGPathElement.prototype)) {\n // Add getPathSegAtLength to SVGPathElement.\n // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-__svg__SVGPathElement__getPathSegAtLength\n // This polyfill requires SVGPathElement.getTotalLength to implement the distance-along-a-path algorithm.\n window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\n if (distance === undefined || !isFinite(distance)) throw \"Invalid arguments.\";\n var measurementElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n measurementElement.setAttribute(\"d\", this.getAttribute(\"d\"));\n var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1; // If the path is empty, return 0.\n\n if (lastPathSegment <= 0) return 0;\n\n do {\n measurementElement.pathSegList.removeItem(lastPathSegment);\n if (distance > measurementElement.getTotalLength()) break;\n lastPathSegment--;\n } while (lastPathSegment > 0);\n\n return lastPathSegment;\n };\n }\n }\n\n if (!(\"SVGPathSegList\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n window.SVGPathSegList = function (pathElement) {\n this._pathElement = pathElement;\n this._list = this._parsePath(this._pathElement.getAttribute(\"d\")); // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n\n this._mutationObserverConfig = {\n \"attributes\": true,\n \"attributeFilter\": [\"d\"]\n };\n this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n window.SVGPathSegList.prototype.classname = \"SVGPathSegList\";\n Object.defineProperty(window.SVGPathSegList.prototype, \"numberOfItems\", {\n get: function get() {\n this._checkPathSynchronizedToList();\n\n return this._list.length;\n },\n enumerable: true\n }); // Add the pathSegList accessors to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n\n Object.defineProperty(window.SVGPathElement.prototype, \"pathSegList\", {\n get: function get() {\n if (!this._pathSegList) this._pathSegList = new window.SVGPathSegList(this);\n return this._pathSegList;\n },\n enumerable: true\n }); // FIXME: The following are not implemented and simply return window.SVGPathElement.pathSegList.\n\n Object.defineProperty(window.SVGPathElement.prototype, \"normalizedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedNormalizedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n }); // Process any pending mutations to the path element and update the list as needed.\n // This should be the first call of all public functions and is needed because\n // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n\n window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\n this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n };\n\n window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\n if (!this._pathElement) return;\n var hasPathMutations = false;\n mutationRecords.forEach(function (record) {\n if (record.attributeName == \"d\") hasPathMutations = true;\n });\n if (hasPathMutations) this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n }; // Serialize the list and update the path's 'd' attribute.\n\n\n window.SVGPathSegList.prototype._writeListToPath = function () {\n this._pathElementMutationObserver.disconnect();\n\n this._pathElement.setAttribute(\"d\", window.SVGPathSegList._pathSegArrayAsString(this._list));\n\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n }; // When a path segment changes the list needs to be synchronized back to the path element.\n\n\n window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.clear = function () {\n this._checkPathSynchronizedToList();\n\n this._list.forEach(function (pathSeg) {\n pathSeg._owningPathSegList = null;\n });\n\n this._list = [];\n\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.initialize = function (newItem) {\n this._checkPathSynchronizedToList();\n\n this._list = [newItem];\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype._checkValidIndex = function (index) {\n if (isNaN(index) || index < 0 || index >= this.numberOfItems) throw \"INDEX_SIZE_ERR\";\n };\n\n window.SVGPathSegList.prototype.getItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n\n return this._list[index];\n };\n\n window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\n this._checkPathSynchronizedToList(); // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n\n\n if (index > this.numberOfItems) index = this.numberOfItems;\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._list.splice(index, 0, newItem);\n\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._checkValidIndex(index);\n\n this._list[index] = newItem;\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype.removeItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n\n var item = this._list[index];\n\n this._list.splice(index, 1);\n\n this._writeListToPath();\n\n return item;\n };\n\n window.SVGPathSegList.prototype.appendItem = function (newItem) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._list.push(newItem);\n\n newItem._owningPathSegList = this; // TODO: Optimize this to just append to the existing attribute.\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\n var string = \"\";\n var first = true;\n pathSegArray.forEach(function (pathSeg) {\n if (first) {\n first = false;\n string += pathSeg._asPathString();\n } else {\n string += \" \" + pathSeg._asPathString();\n }\n });\n return string;\n }; // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n\n\n window.SVGPathSegList.prototype._parsePath = function (string) {\n if (!string || string.length == 0) return [];\n var owningPathSegList = this;\n\n var Builder = function Builder() {\n this.pathSegList = [];\n };\n\n Builder.prototype.appendSegment = function (pathSeg) {\n this.pathSegList.push(pathSeg);\n };\n\n var Source = function Source(string) {\n this._string = string;\n this._currentIndex = 0;\n this._endIndex = this._string.length;\n this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\n\n this._skipOptionalSpaces();\n };\n\n Source.prototype._isCurrentSpace = function () {\n var character = this._string[this._currentIndex];\n return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n };\n\n Source.prototype._skipOptionalSpaces = function () {\n while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {\n this._currentIndex++;\n }\n\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype._skipOptionalSpacesOrDelimiter = function () {\n if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\") return false;\n\n if (this._skipOptionalSpaces()) {\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n this._currentIndex++;\n\n this._skipOptionalSpaces();\n }\n }\n\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.hasMoreData = function () {\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.peekSegmentType = function () {\n var lookahead = this._string[this._currentIndex];\n return this._pathSegTypeFromChar(lookahead);\n };\n\n Source.prototype._pathSegTypeFromChar = function (lookahead) {\n switch (lookahead) {\n case \"Z\":\n case \"z\":\n return window.SVGPathSeg.PATHSEG_CLOSEPATH;\n\n case \"M\":\n return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\n\n case \"m\":\n return window.SVGPathSeg.PATHSEG_MOVETO_REL;\n\n case \"L\":\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n\n case \"l\":\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\n\n case \"C\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n\n case \"c\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n\n case \"Q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n\n case \"q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n\n case \"A\":\n return window.SVGPathSeg.PATHSEG_ARC_ABS;\n\n case \"a\":\n return window.SVGPathSeg.PATHSEG_ARC_REL;\n\n case \"H\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n\n case \"h\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n\n case \"V\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n\n case \"v\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n\n case \"S\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n\n case \"s\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n\n case \"T\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n\n case \"t\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n\n default:\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n }\n };\n\n Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\n // Check for remaining coordinates in the current command.\n if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || lookahead >= \"0\" && lookahead <= \"9\") && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS) return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL) return window.SVGPathSeg.PATHSEG_LINETO_REL;\n return previousCommand;\n }\n\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n };\n\n Source.prototype.initialCommandIsMoveTo = function () {\n // If the path is empty it is still valid, so return true.\n if (!this.hasMoreData()) return true;\n var command = this.peekSegmentType(); // Path must start with moveTo.\n\n return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;\n }; // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n\n\n Source.prototype._parseNumber = function () {\n var exponent = 0;\n var integer = 0;\n var frac = 1;\n var decimal = 0;\n var sign = 1;\n var expsign = 1;\n var startIndex = this._currentIndex;\n\n this._skipOptionalSpaces(); // Read the sign.\n\n\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\") this._currentIndex++;else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n sign = -1;\n }\n if (this._currentIndex == this._endIndex || (this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\") // The first character of a number must be one of [0-9+-.].\n return undefined; // Read the integer part, build right-to-left.\n\n var startIntPartIndex = this._currentIndex;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n this._currentIndex++;\n } // Advance to first non-digit.\n\n\n if (this._currentIndex != startIntPartIndex) {\n var scanIntPartIndex = this._currentIndex - 1;\n var multiplier = 1;\n\n while (scanIntPartIndex >= startIntPartIndex) {\n integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n multiplier *= 10;\n }\n } // Read the decimals.\n\n\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n this._currentIndex++; // There must be a least one digit following the .\n\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n frac *= 10;\n decimal += (this._string.charAt(this._currentIndex) - \"0\") / frac;\n this._currentIndex += 1;\n }\n } // Read the exponent part.\n\n\n if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\") {\n this._currentIndex++; // Read the sign of the exponent.\n\n if (this._string.charAt(this._currentIndex) == \"+\") {\n this._currentIndex++;\n } else if (this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n expsign = -1;\n } // There must be an exponent.\n\n\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n exponent *= 10;\n exponent += this._string.charAt(this._currentIndex) - \"0\";\n this._currentIndex++;\n }\n }\n\n var number = integer + decimal;\n number *= sign;\n if (exponent) number *= Math.pow(10, expsign * exponent);\n if (startIndex == this._currentIndex) return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return number;\n };\n\n Source.prototype._parseArcFlag = function () {\n if (this._currentIndex >= this._endIndex) return undefined;\n var flag = false;\n\n var flagChar = this._string.charAt(this._currentIndex++);\n\n if (flagChar == \"0\") flag = false;else if (flagChar == \"1\") flag = true;else return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return flag;\n };\n\n Source.prototype.parseSegment = function () {\n var lookahead = this._string[this._currentIndex];\n\n var command = this._pathSegTypeFromChar(lookahead);\n\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\n // Possibly an implicit command. Not allowed if this is the first command.\n if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n command = this._nextCommandHelper(lookahead, this._previousCommand);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n } else {\n this._currentIndex++;\n }\n\n this._previousCommand = command;\n\n switch (command) {\n case window.SVGPathSeg.PATHSEG_MOVETO_REL:\n return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\n return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_REL:\n return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_ABS:\n return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_CLOSEPATH:\n this._skipOptionalSpaces();\n\n return new window.SVGPathSegClosePath(owningPathSegList);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n var points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n var points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_ARC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n\n case window.SVGPathSeg.PATHSEG_ARC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n\n default:\n throw \"Unknown path seg type.\";\n }\n };\n\n var builder = new Builder();\n var source = new Source(string);\n if (!source.initialCommandIsMoveTo()) return [];\n\n while (source.hasMoreData()) {\n var pathSeg = source.parseSegment();\n if (!pathSeg) return [];\n builder.appendSegment(pathSeg);\n }\n\n return builder.pathSegList;\n };\n }\n })(); // String.padEnd polyfill for IE11\n //\n // https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd\n\n\n if (!String.prototype.padEnd) {\n String.prototype.padEnd = function padEnd(targetLength, padString) {\n targetLength = targetLength >> 0; //floor if number or convert non-number to 0;\n\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\n\n if (this.length > targetLength) {\n return String(this);\n } else {\n targetLength = targetLength - this.length;\n\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n\n return String(this) + padString.slice(0, targetLength);\n }\n };\n }\n /* jshint ignore:end */\n\n Chart.prototype.axis = function () {};\n\n Chart.prototype.axis.labels = function (labels) {\n var $$ = this.internal;\n\n if (arguments.length) {\n Object.keys(labels).forEach(function (axisId) {\n $$.axis.setLabelText(axisId, labels[axisId]);\n });\n $$.axis.updateLabels();\n } // TODO: return some values?\n\n };\n\n Chart.prototype.axis.max = function (max) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length) {\n if (_typeof(max) === 'object') {\n if (isValue(max.x)) {\n config.axis_x_max = max.x;\n }\n\n if (isValue(max.y)) {\n config.axis_y_max = max.y;\n }\n\n if (isValue(max.y2)) {\n config.axis_y2_max = max.y2;\n }\n } else {\n config.axis_y_max = config.axis_y2_max = max;\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n } else {\n return {\n x: config.axis_x_max,\n y: config.axis_y_max,\n y2: config.axis_y2_max\n };\n }\n };\n\n Chart.prototype.axis.min = function (min) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length) {\n if (_typeof(min) === 'object') {\n if (isValue(min.x)) {\n config.axis_x_min = min.x;\n }\n\n if (isValue(min.y)) {\n config.axis_y_min = min.y;\n }\n\n if (isValue(min.y2)) {\n config.axis_y2_min = min.y2;\n }\n } else {\n config.axis_y_min = config.axis_y2_min = min;\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n } else {\n return {\n x: config.axis_x_min,\n y: config.axis_y_min,\n y2: config.axis_y2_min\n };\n }\n };\n\n Chart.prototype.axis.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.axis.max(range.max);\n }\n\n if (isDefined(range.min)) {\n this.axis.min(range.min);\n }\n } else {\n return {\n max: this.axis.max(),\n min: this.axis.min()\n };\n }\n };\n\n Chart.prototype.category = function (i, category) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length > 1) {\n config.axis_x_categories[i] = category;\n $$.redraw();\n }\n\n return config.axis_x_categories[i];\n };\n\n Chart.prototype.categories = function (categories) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!arguments.length) {\n return config.axis_x_categories;\n }\n\n config.axis_x_categories = categories;\n $$.redraw();\n return config.axis_x_categories;\n };\n\n Chart.prototype.resize = function (size) {\n var $$ = this.internal,\n config = $$.config;\n config.size_width = size ? size.width : null;\n config.size_height = size ? size.height : null;\n this.flush();\n };\n\n Chart.prototype.flush = function () {\n var $$ = this.internal;\n $$.updateAndRedraw({\n withLegend: true,\n withTransition: false,\n withTransitionForTransform: false\n });\n };\n\n Chart.prototype.destroy = function () {\n var $$ = this.internal;\n window.clearInterval($$.intervalForObserveInserted);\n\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n if (window.detachEvent) {\n window.detachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.removeEventListener) {\n window.removeEventListener('resize', $$.resizeIfElementDisplayed);\n } else {\n var wrapper = window.onresize; // check if no one else removed our wrapper and remove our resizeFunction from it\n\n if (wrapper && wrapper.add && wrapper.remove) {\n wrapper.remove($$.resizeFunction);\n }\n } // Removes the inner resize functions\n\n\n $$.resizeFunction.remove(); // Unbinds from the window focus event\n\n $$.unbindWindowFocus();\n $$.selectChart.classed('c3', false).html(\"\"); // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n\n Object.keys($$).forEach(function (key) {\n $$[key] = null;\n });\n return null;\n };\n\n Chart.prototype.color = function (id) {\n var $$ = this.internal;\n return $$.color(id); // more patterns\n };\n\n Chart.prototype.data = function (targetIds) {\n var targets = this.internal.data.targets;\n return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n return [].concat(targetIds).indexOf(t.id) >= 0;\n });\n };\n\n Chart.prototype.data.shown = function (targetIds) {\n return this.internal.filterTargetsToShow(this.data(targetIds));\n };\n\n Chart.prototype.data.values = function (targetId) {\n var targets,\n values = null;\n\n if (targetId) {\n targets = this.data(targetId);\n values = targets[0] ? targets[0].values.map(function (d) {\n return d.value;\n }) : null;\n }\n\n return values;\n };\n\n Chart.prototype.data.names = function (names) {\n this.internal.clearLegendItemTextBoxCache();\n return this.internal.updateDataAttributes('names', names);\n };\n\n Chart.prototype.data.colors = function (colors) {\n return this.internal.updateDataAttributes('colors', colors);\n };\n\n Chart.prototype.data.axes = function (axes) {\n return this.internal.updateDataAttributes('axes', axes);\n };\n\n Chart.prototype.flow = function (args) {\n var $$ = this.internal,\n targets,\n data,\n notfoundIds = [],\n orgDataCount = $$.getMaxDataCount(),\n dataCount,\n domain,\n baseTarget,\n baseValue,\n length = 0,\n tail = 0,\n diff,\n to;\n\n if (args.json) {\n data = $$.convertJsonToData(args.json, args.keys);\n } else if (args.rows) {\n data = $$.convertRowsToData(args.rows);\n } else if (args.columns) {\n data = $$.convertColumnsToData(args.columns);\n } else {\n return;\n }\n\n targets = $$.convertDataToTargets(data, true); // Update/Add data\n\n $$.data.targets.forEach(function (t) {\n var found = false,\n i,\n j;\n\n for (i = 0; i < targets.length; i++) {\n if (t.id === targets[i].id) {\n found = true;\n\n if (t.values[t.values.length - 1]) {\n tail = t.values[t.values.length - 1].index + 1;\n }\n\n length = targets[i].values.length;\n\n for (j = 0; j < length; j++) {\n targets[i].values[j].index = tail + j;\n\n if (!$$.isTimeSeries()) {\n targets[i].values[j].x = tail + j;\n }\n }\n\n t.values = t.values.concat(targets[i].values);\n targets.splice(i, 1);\n break;\n }\n }\n\n if (!found) {\n notfoundIds.push(t.id);\n }\n }); // Append null for not found targets\n\n $$.data.targets.forEach(function (t) {\n var i, j;\n\n for (i = 0; i < notfoundIds.length; i++) {\n if (t.id === notfoundIds[i]) {\n tail = t.values[t.values.length - 1].index + 1;\n\n for (j = 0; j < length; j++) {\n t.values.push({\n id: t.id,\n index: tail + j,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n value: null\n });\n }\n }\n }\n }); // Generate null values for new target\n\n if ($$.data.targets.length) {\n targets.forEach(function (t) {\n var i,\n missing = [];\n\n for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n missing.push({\n id: t.id,\n index: i,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n value: null\n });\n }\n\n t.values.forEach(function (v) {\n v.index += tail;\n\n if (!$$.isTimeSeries()) {\n v.x += tail;\n }\n });\n t.values = missing.concat(t.values);\n });\n }\n\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n // check data count because behavior needs to change when it's only one\n\n dataCount = $$.getMaxDataCount();\n baseTarget = $$.data.targets[0];\n baseValue = baseTarget.values[0]; // Update length to flow if needed\n\n if (isDefined(args.to)) {\n length = 0;\n to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n baseTarget.values.forEach(function (v) {\n if (v.x < to) {\n length++;\n }\n });\n } else if (isDefined(args.length)) {\n length = args.length;\n } // If only one data, update the domain to flow from left edge of the chart\n\n\n if (!orgDataCount) {\n if ($$.isTimeSeries()) {\n if (baseTarget.values.length > 1) {\n diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n } else {\n diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n }\n } else {\n diff = 1;\n }\n\n domain = [baseValue.x - diff, baseValue.x];\n $$.updateXDomain(null, true, true, false, domain);\n } else if (orgDataCount === 1) {\n if ($$.isTimeSeries()) {\n diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n $$.updateXDomain(null, true, true, false, domain);\n }\n } // Set targets\n\n\n $$.updateTargets($$.data.targets); // Redraw with new targets\n\n $$.redraw({\n flow: {\n index: baseValue.index,\n length: length,\n duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n done: args.done,\n orgDataCount: orgDataCount\n },\n withLegend: true,\n withTransition: orgDataCount > 1,\n withTrimXDomain: false,\n withUpdateXAxis: true\n });\n };\n\n ChartInternal.prototype.generateFlow = function (args) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n return function () {\n var targets = args.targets,\n flow = args.flow,\n drawBar = args.drawBar,\n drawLine = args.drawLine,\n drawArea = args.drawArea,\n cx = args.cx,\n cy = args.cy,\n xv = args.xv,\n xForText = args.xForText,\n yForText = args.yForText,\n duration = args.duration;\n\n var translateX,\n scaleX = 1,\n transform,\n flowIndex = flow.index,\n flowLength = flow.length,\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n orgDomain = $$.x.domain(),\n domain,\n durationForFlow = flow.duration || duration,\n done = flow.done || function () {},\n wait = $$.generateWait();\n\n var xgrid, xgridLines, mainRegion, mainText, mainBar, mainLine, mainArea, mainCircle; // set flag\n\n $$.flowing = true; // remove head data after rendered\n\n $$.data.targets.forEach(function (d) {\n d.values.splice(0, flowLength);\n }); // update x domain to generate axis elements for flow\n\n domain = $$.updateXDomain(targets, true, true); // update elements related to x scale\n\n if ($$.updateXGrid) {\n $$.updateXGrid(true);\n }\n\n xgrid = $$.xgrid || d3.selectAll([]); // xgrid needs to be obtained after updateXGrid\n\n xgridLines = $$.xgridLines || d3.selectAll([]);\n mainRegion = $$.mainRegion || d3.selectAll([]);\n mainText = $$.mainText || d3.selectAll([]);\n mainBar = $$.mainBar || d3.selectAll([]);\n mainLine = $$.mainLine || d3.selectAll([]);\n mainArea = $$.mainArea || d3.selectAll([]);\n mainCircle = $$.mainCircle || d3.selectAll([]); // generate transform to flow\n\n if (!flow.orgDataCount) {\n // if empty\n if ($$.data.targets[0].values.length !== 1) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n } else {\n translateX = diffDomain(domain) / 2;\n }\n }\n } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n }\n }\n\n scaleX = diffDomain(orgDomain) / diffDomain(domain);\n transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n $$.hideXGridFocus();\n var flowTransition = d3.transition().ease(d3.easeLinear).duration(durationForFlow);\n wait.add($$.xAxis($$.axes.x, flowTransition));\n wait.add(mainBar.transition(flowTransition).attr('transform', transform));\n wait.add(mainLine.transition(flowTransition).attr('transform', transform));\n wait.add(mainArea.transition(flowTransition).attr('transform', transform));\n wait.add(mainCircle.transition(flowTransition).attr('transform', transform));\n wait.add(mainText.transition(flowTransition).attr('transform', transform));\n wait.add(mainRegion.filter($$.isRegionOnX).transition(flowTransition).attr('transform', transform));\n wait.add(xgrid.transition(flowTransition).attr('transform', transform));\n wait.add(xgridLines.transition(flowTransition).attr('transform', transform));\n wait(function () {\n var i,\n shapes = [],\n texts = []; // remove flowed elements\n\n if (flowLength) {\n for (i = 0; i < flowLength; i++) {\n shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n }\n\n $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n $$.svg.select('.' + CLASS.xgrid).remove();\n } // draw again for removing flowed elements and reverting attr\n\n\n xgrid.attr('transform', null).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n xgridLines.attr('transform', null);\n xgridLines.select('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv);\n xgridLines.select('text').attr(\"x\", config.axis_rotated ? $$.width : 0).attr(\"y\", xv);\n mainBar.attr('transform', null).attr(\"d\", drawBar);\n mainLine.attr('transform', null).attr(\"d\", drawLine);\n mainArea.attr('transform', null).attr(\"d\", drawArea);\n mainCircle.attr('transform', null).attr(\"cx\", cx).attr(\"cy\", cy);\n mainText.attr('transform', null).attr('x', xForText).attr('y', yForText).style('fill-opacity', $$.opacityForText.bind($$));\n mainRegion.attr('transform', null);\n mainRegion.filter($$.isRegionOnX).attr(\"x\", $$.regionX.bind($$)).attr(\"width\", $$.regionWidth.bind($$)); // callback for end of flow\n\n done();\n $$.flowing = false;\n });\n };\n };\n\n Chart.prototype.focus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), this.revert();\n this.defocus();\n candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n\n if ($$.hasArcType()) {\n $$.expandArc(targetIds);\n }\n\n $$.toggleFocusLegend(targetIds, true);\n $$.focusedTargetIds = targetIds;\n $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n Chart.prototype.defocus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n\n $$.toggleFocusLegend(targetIds, false);\n $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n $$.defocusedTargetIds = targetIds;\n };\n\n Chart.prototype.revert = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n\n if ($$.config.legend_show) {\n $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n $$.legend.selectAll($$.selectorLegends(targetIds)).filter(function () {\n return $$.d3.select(this).classed(CLASS.legendItemFocused);\n }).classed(CLASS.legendItemFocused, false);\n }\n\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n };\n\n Chart.prototype.xgrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!grids) {\n return config.grid_x_lines;\n }\n\n config.grid_x_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_x_lines;\n };\n\n Chart.prototype.xgrids.add = function (grids) {\n var $$ = this.internal;\n return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n };\n\n Chart.prototype.xgrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, true);\n };\n\n Chart.prototype.ygrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!grids) {\n return config.grid_y_lines;\n }\n\n config.grid_y_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_y_lines;\n };\n\n Chart.prototype.ygrids.add = function (grids) {\n var $$ = this.internal;\n return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n };\n\n Chart.prototype.ygrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, false);\n };\n\n Chart.prototype.groups = function (groups) {\n var $$ = this.internal,\n config = $$.config;\n\n if (isUndefined(groups)) {\n return config.data_groups;\n }\n\n config.data_groups = groups;\n $$.redraw();\n return config.data_groups;\n };\n\n Chart.prototype.legend = function () {};\n\n Chart.prototype.legend.show = function (targetIds) {\n var $$ = this.internal;\n $$.showLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({\n withLegend: true\n });\n };\n\n Chart.prototype.legend.hide = function (targetIds) {\n var $$ = this.internal;\n $$.hideLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({\n withLegend: false\n });\n };\n\n Chart.prototype.load = function (args) {\n var $$ = this.internal,\n config = $$.config; // update xs if specified\n\n if (args.xs) {\n $$.addXs(args.xs);\n } // update names if exists\n\n\n if ('names' in args) {\n Chart.prototype.data.names.bind(this)(args.names);\n } // update classes if exists\n\n\n if ('classes' in args) {\n Object.keys(args.classes).forEach(function (id) {\n config.data_classes[id] = args.classes[id];\n });\n } // update categories if exists\n\n\n if ('categories' in args && $$.isCategorized()) {\n config.axis_x_categories = args.categories;\n } // update axes if exists\n\n\n if ('axes' in args) {\n Object.keys(args.axes).forEach(function (id) {\n config.data_axes[id] = args.axes[id];\n });\n } // update colors if exists\n\n\n if ('colors' in args) {\n Object.keys(args.colors).forEach(function (id) {\n config.data_colors[id] = args.colors[id];\n });\n } // use cache if exists\n\n\n if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n $$.load($$.getCaches(args.cacheIds), args.done);\n return;\n } // unload if needed\n\n\n if ('unload' in args) {\n // TODO: do not unload if target will load (included in url/rows/columns)\n $$.unload($$.mapToTargetIds(typeof args.unload === 'boolean' && args.unload ? null : args.unload), function () {\n $$.loadFromArgs(args);\n });\n } else {\n $$.loadFromArgs(args);\n }\n };\n\n Chart.prototype.unload = function (args) {\n var $$ = this.internal;\n args = args || {};\n\n if (args instanceof Array) {\n args = {\n ids: args\n };\n } else if (typeof args === 'string') {\n args = {\n ids: [args]\n };\n }\n\n $$.unload($$.mapToTargetIds(args.ids), function () {\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n\n if (args.done) {\n args.done();\n }\n });\n };\n\n Chart.prototype.regions = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!regions) {\n return config.regions;\n }\n\n config.regions = regions;\n $$.redrawWithoutRescale();\n return config.regions;\n };\n\n Chart.prototype.regions.add = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!regions) {\n return config.regions;\n }\n\n config.regions = config.regions.concat(regions);\n $$.redrawWithoutRescale();\n return config.regions;\n };\n\n Chart.prototype.regions.remove = function (options) {\n var $$ = this.internal,\n config = $$.config,\n duration,\n classes,\n regions;\n options = options || {};\n duration = getOption(options, \"duration\", config.transition_duration);\n classes = getOption(options, \"classes\", [CLASS.region]);\n regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) {\n return '.' + c;\n }));\n (duration ? regions.transition().duration(duration) : regions).style('opacity', 0).remove();\n config.regions = config.regions.filter(function (region) {\n var found = false;\n\n if (!region['class']) {\n return true;\n }\n\n region['class'].split(' ').forEach(function (c) {\n if (classes.indexOf(c) >= 0) {\n found = true;\n }\n });\n return !found;\n });\n return config.regions;\n };\n\n Chart.prototype.selected = function (targetId) {\n var $$ = this.internal,\n d3 = $$.d3;\n return $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape).filter(function () {\n return d3.select(this).classed(CLASS.SELECTED);\n }).nodes().map(function (d) {\n var data = d.__data__;\n return data.data ? data.data : data;\n });\n };\n\n Chart.prototype.select = function (ids, indices, resetOther) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n\n if (!config.data_selection_enabled) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED); // line/area selection not supported yet\n\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d) && !isSelected) {\n toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n }\n } else if (isDefined(resetOther) && resetOther) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n });\n };\n\n Chart.prototype.unselect = function (ids, indices) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n\n if (!config.data_selection_enabled) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED); // line/area selection not supported yet\n\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d)) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n }\n });\n };\n\n Chart.prototype.show = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n $$.removeHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n targets.transition().style('display', 'initial', 'important').style('opacity', 1, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 1);\n });\n\n if (options.withLegend) {\n $$.showLegend(targetIds);\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n };\n\n Chart.prototype.hide = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n $$.addHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n targets.transition().style('opacity', 0, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 0);\n targets.style('display', 'none');\n });\n\n if (options.withLegend) {\n $$.hideLegend(targetIds);\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n };\n\n Chart.prototype.toggle = function (targetIds, options) {\n var that = this,\n $$ = this.internal;\n $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n });\n };\n\n Chart.prototype.tooltip = function () {};\n\n Chart.prototype.tooltip.show = function (args) {\n var $$ = this.internal,\n targets,\n data,\n mouse = {}; // determine mouse position on the chart\n\n if (args.mouse) {\n mouse = args.mouse;\n } else {\n // determine focus data\n if (args.data) {\n data = args.data;\n } else if (typeof args.x !== 'undefined') {\n if (args.id) {\n targets = $$.data.targets.filter(function (t) {\n return t.id === args.id;\n });\n } else {\n targets = $$.data.targets;\n }\n\n data = $$.filterByX(targets, args.x).slice(0, 1)[0];\n }\n\n mouse = data ? $$.getMousePosition(data) : null;\n } // emulate mouse events to show\n\n\n $$.dispatchEvent('mousemove', mouse);\n $$.config.tooltip_onshow.call($$, data);\n };\n\n Chart.prototype.tooltip.hide = function () {\n // TODO: get target data by checking the state of focus\n this.internal.dispatchEvent('mouseout', 0);\n this.internal.config.tooltip_onhide.call(this);\n };\n\n Chart.prototype.transform = function (type, targetIds) {\n var $$ = this.internal,\n options = ['pie', 'donut'].indexOf(type) >= 0 ? {\n withTransform: true\n } : null;\n $$.transformTo(targetIds, type, options);\n };\n\n ChartInternal.prototype.transformTo = function (targetIds, type, optionsForRedraw) {\n var $$ = this,\n withTransitionForAxis = !$$.hasArcType(),\n options = optionsForRedraw || {\n withTransitionForAxis: withTransitionForAxis\n };\n options.withTransitionForTransform = false;\n $$.transiting = false;\n $$.setTargetType(targetIds, type);\n $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n\n $$.updateAndRedraw(options);\n };\n\n Chart.prototype.x = function (x) {\n var $$ = this.internal;\n\n if (arguments.length) {\n $$.updateTargetX($$.data.targets, x);\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n }\n\n return $$.data.xs;\n };\n\n Chart.prototype.xs = function (xs) {\n var $$ = this.internal;\n\n if (arguments.length) {\n $$.updateTargetXs($$.data.targets, xs);\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n }\n\n return $$.data.xs;\n };\n\n Chart.prototype.zoom = function (domain) {\n var $$ = this.internal;\n\n if (domain) {\n if ($$.isTimeSeries()) {\n domain = domain.map(function (x) {\n return $$.parseDate(x);\n });\n }\n\n if ($$.config.subchart_show) {\n $$.brush.selectionAsValue(domain, true);\n } else {\n $$.updateXDomain(null, true, false, false, domain);\n $$.redraw({\n withY: $$.config.zoom_rescale,\n withSubchart: false\n });\n }\n\n $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n return domain;\n } else {\n return $$.x.domain();\n }\n };\n\n Chart.prototype.zoom.enable = function (enabled) {\n var $$ = this.internal;\n $$.config.zoom_enabled = enabled;\n $$.updateAndRedraw();\n };\n\n Chart.prototype.unzoom = function () {\n var $$ = this.internal;\n\n if ($$.config.subchart_show) {\n $$.brush.clear();\n } else {\n $$.updateXDomain(null, true, false, false, $$.subX.domain());\n $$.redraw({\n withY: $$.config.zoom_rescale,\n withSubchart: false\n });\n }\n };\n\n Chart.prototype.zoom.max = function (max) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n\n if (max === 0 || max) {\n config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n } else {\n return config.zoom_x_max;\n }\n };\n\n Chart.prototype.zoom.min = function (min) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n\n if (min === 0 || min) {\n config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n } else {\n return config.zoom_x_min;\n }\n };\n\n Chart.prototype.zoom.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.domain.max(range.max);\n }\n\n if (isDefined(range.min)) {\n this.domain.min(range.min);\n }\n } else {\n return {\n max: this.domain.max(),\n min: this.domain.min()\n };\n }\n };\n\n ChartInternal.prototype.initPie = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.pie = d3.pie().value(function (d) {\n return d.values.reduce(function (a, b) {\n return a + b.value;\n }, 0);\n });\n var orderFct = $$.getOrderFunction(); // we need to reverse the returned order if asc or desc to have the slice in expected order.\n\n if (orderFct && ($$.isOrderAsc() || $$.isOrderDesc())) {\n var defaultSort = orderFct;\n\n orderFct = function orderFct(t1, t2) {\n return defaultSort(t1, t2) * -1;\n };\n }\n\n $$.pie.sort(orderFct || null);\n };\n\n ChartInternal.prototype.updateRadius = function () {\n var $$ = this,\n config = $$.config,\n w = config.gauge_width || config.donut_width,\n gaugeArcWidth = $$.filterTargetsToShow($$.data.targets).length * $$.config.gauge_arcs_minWidth;\n $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2 * ($$.hasType('gauge') ? 0.85 : 1);\n $$.radius = $$.radiusExpanded * 0.95;\n $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n $$.gaugeArcWidth = w ? w : gaugeArcWidth <= $$.radius - $$.innerRadius ? $$.radius - $$.innerRadius : gaugeArcWidth <= $$.radius ? gaugeArcWidth : $$.radius;\n };\n\n ChartInternal.prototype.updateArc = function () {\n var $$ = this;\n $$.svgArc = $$.getSvgArc();\n $$.svgArcExpanded = $$.getSvgArcExpanded();\n $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n };\n\n ChartInternal.prototype.updateAngle = function (d) {\n var $$ = this,\n config = $$.config,\n found = false,\n index = 0,\n gMin,\n gMax,\n gTic,\n gValue;\n\n if (!config) {\n return null;\n }\n\n $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n if (!found && t.data.id === d.data.id) {\n found = true;\n d = t;\n d.index = index;\n }\n\n index++;\n });\n\n if (isNaN(d.startAngle)) {\n d.startAngle = 0;\n }\n\n if (isNaN(d.endAngle)) {\n d.endAngle = d.startAngle;\n }\n\n if ($$.isGaugeType(d.data)) {\n gMin = config.gauge_min;\n gMax = config.gauge_max;\n gTic = Math.PI * (config.gauge_fullCircle ? 2 : 1) / (gMax - gMin);\n gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : gMax - gMin;\n d.startAngle = config.gauge_startingAngle;\n d.endAngle = d.startAngle + gTic * gValue;\n }\n\n return found ? d : null;\n };\n\n ChartInternal.prototype.getSvgArc = function () {\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n arc = $$.d3.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index : $$.radius;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n }),\n newArc = function newArc(d, withoutUpdate) {\n var updated;\n\n if (withoutUpdate) {\n return arc(d);\n } // for interpolate\n\n\n updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n }; // TODO: extends all function\n\n\n newArc.centroid = arc.centroid;\n return newArc;\n };\n\n ChartInternal.prototype.getSvgArcExpanded = function (rate) {\n rate = rate || 1;\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n expandWidth = Math.min($$.radiusExpanded * rate - $$.radius, singleArcWidth * 0.8 - (1 - rate) * 100),\n arc = $$.d3.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index + expandWidth : $$.radiusExpanded * rate;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n });\n return function (d) {\n var updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.getArc = function (d, withoutUpdate, force) {\n return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n };\n\n ChartInternal.prototype.transformForArcLabel = function (d) {\n var $$ = this,\n config = $$.config,\n updated = $$.updateAngle(d),\n c,\n x,\n y,\n h,\n ratio,\n translate = \"\",\n hasGauge = $$.hasType('gauge');\n\n if (updated && !hasGauge) {\n c = this.svgArc.centroid(updated);\n x = isNaN(c[0]) ? 0 : c[0];\n y = isNaN(c[1]) ? 0 : c[1];\n h = Math.sqrt(x * x + y * y);\n\n if ($$.hasType('donut') && config.donut_label_ratio) {\n ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n } else if ($$.hasType('pie') && config.pie_label_ratio) {\n ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n } else {\n ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n }\n\n translate = \"translate(\" + x * ratio + ',' + y * ratio + \")\";\n } else if (updated && hasGauge && $$.filterTargetsToShow($$.data.targets).length > 1) {\n var y1 = Math.sin(updated.endAngle - Math.PI / 2);\n x = Math.cos(updated.endAngle - Math.PI / 2) * ($$.radiusExpanded + 25);\n y = y1 * ($$.radiusExpanded + 15 - Math.abs(y1 * 10)) + 3;\n translate = \"translate(\" + x + ',' + y + \")\";\n }\n\n return translate;\n };\n\n ChartInternal.prototype.getArcRatio = function (d) {\n var $$ = this,\n config = $$.config,\n whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n return d ? (d.endAngle - d.startAngle) / whole : null;\n };\n\n ChartInternal.prototype.convertToArcData = function (d) {\n return this.addName({\n id: d.data.id,\n value: d.value,\n ratio: this.getArcRatio(d),\n index: d.index\n });\n };\n\n ChartInternal.prototype.textForArcLabel = function (d) {\n var $$ = this,\n updated,\n value,\n ratio,\n id,\n format;\n\n if (!$$.shouldShowArcLabel()) {\n return \"\";\n }\n\n updated = $$.updateAngle(d);\n value = updated ? updated.value : null;\n ratio = $$.getArcRatio(updated);\n id = d.data.id;\n\n if (!$$.hasType('gauge') && !$$.meetsArcLabelThreshold(ratio)) {\n return \"\";\n }\n\n format = $$.getArcLabelFormat();\n return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n };\n\n ChartInternal.prototype.textForGaugeMinMax = function (value, isMax) {\n var $$ = this,\n format = $$.getGaugeLabelExtents();\n return format ? format(value, isMax) : value;\n };\n\n ChartInternal.prototype.expandArc = function (targetIds) {\n var $$ = this,\n interval; // MEMO: avoid to cancel transition\n\n if ($$.transiting) {\n interval = window.setInterval(function () {\n if (!$$.transiting) {\n window.clearInterval(interval);\n\n if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n $$.expandArc(targetIds);\n }\n }\n }, 10);\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n if (!$$.shouldExpand(d.data.id)) {\n return;\n }\n\n $$.d3.select(this).selectAll('path').transition().duration($$.expandDuration(d.data.id)).attr(\"d\", $$.svgArcExpanded).transition().duration($$.expandDuration(d.data.id) * 2).attr(\"d\", $$.svgArcExpandedSub).each(function (d) {\n if ($$.isDonutType(d.data)) ;\n });\n });\n };\n\n ChartInternal.prototype.unexpandArc = function (targetIds) {\n var $$ = this;\n\n if ($$.transiting) {\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path').transition().duration(function (d) {\n return $$.expandDuration(d.data.id);\n }).attr(\"d\", $$.svgArc);\n $$.svg.selectAll('.' + CLASS.arc);\n };\n\n ChartInternal.prototype.expandDuration = function (id) {\n var $$ = this,\n config = $$.config;\n\n if ($$.isDonutType(id)) {\n return config.donut_expand_duration;\n } else if ($$.isGaugeType(id)) {\n return config.gauge_expand_duration;\n } else if ($$.isPieType(id)) {\n return config.pie_expand_duration;\n } else {\n return 50;\n }\n };\n\n ChartInternal.prototype.shouldExpand = function (id) {\n var $$ = this,\n config = $$.config;\n return $$.isDonutType(id) && config.donut_expand || $$.isGaugeType(id) && config.gauge_expand || $$.isPieType(id) && config.pie_expand;\n };\n\n ChartInternal.prototype.shouldShowArcLabel = function () {\n var $$ = this,\n config = $$.config,\n shouldShow = true;\n\n if ($$.hasType('donut')) {\n shouldShow = config.donut_label_show;\n } else if ($$.hasType('pie')) {\n shouldShow = config.pie_label_show;\n } // when gauge, always true\n\n\n return shouldShow;\n };\n\n ChartInternal.prototype.meetsArcLabelThreshold = function (ratio) {\n var $$ = this,\n config = $$.config,\n threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n return ratio >= threshold;\n };\n\n ChartInternal.prototype.getArcLabelFormat = function () {\n var $$ = this,\n config = $$.config,\n format = config.pie_label_format;\n\n if ($$.hasType('gauge')) {\n format = config.gauge_label_format;\n } else if ($$.hasType('donut')) {\n format = config.donut_label_format;\n }\n\n return format;\n };\n\n ChartInternal.prototype.getGaugeLabelExtents = function () {\n var $$ = this,\n config = $$.config;\n return config.gauge_label_extents;\n };\n\n ChartInternal.prototype.getArcTitle = function () {\n var $$ = this;\n return $$.hasType('donut') ? $$.config.donut_title : \"\";\n };\n\n ChartInternal.prototype.updateTargetsForArc = function (targets) {\n var $$ = this,\n main = $$.main,\n mainPies,\n mainPieEnter,\n classChartArc = $$.classChartArc.bind($$),\n classArcs = $$.classArcs.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainPies = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc).data($$.pie(targets)).attr(\"class\", function (d) {\n return classChartArc(d) + classFocus(d.data);\n });\n mainPieEnter = mainPies.enter().append(\"g\").attr(\"class\", classChartArc);\n mainPieEnter.append('g').attr('class', classArcs);\n mainPieEnter.append(\"text\").attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\").style(\"opacity\", 0).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\"); // MEMO: can not keep same color..., but not bad to update color in redraw\n //mainPieUpdate.exit().remove();\n };\n\n ChartInternal.prototype.initArc = function () {\n var $$ = this;\n $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n $$.arcs.append('text').attr('class', CLASS.chartArcsTitle).style(\"text-anchor\", \"middle\").text($$.getArcTitle());\n };\n\n ChartInternal.prototype.redrawArc = function (duration, durationForExit, withTransform) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n main = $$.main,\n arcs,\n mainArc,\n arcLabelLines,\n mainArcLabelLine,\n hasGaugeType = $$.hasType('gauge');\n arcs = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc).data($$.arcData.bind($$));\n mainArc = arcs.enter().append('path').attr(\"class\", $$.classArc.bind($$)).style(\"fill\", function (d) {\n return $$.color(d.data);\n }).style(\"cursor\", function (d) {\n return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null;\n }).each(function (d) {\n if ($$.isGaugeType(d.data)) {\n d.startAngle = d.endAngle = config.gauge_startingAngle;\n }\n\n this._current = d;\n }).merge(arcs);\n\n if (hasGaugeType) {\n arcLabelLines = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arcLabelLine).data($$.arcData.bind($$));\n mainArcLabelLine = arcLabelLines.enter().append('rect').attr(\"class\", function (d) {\n return CLASS.arcLabelLine + ' ' + CLASS.target + ' ' + CLASS.target + '-' + d.data.id;\n }).merge(arcLabelLines);\n\n if ($$.filterTargetsToShow($$.data.targets).length === 1) {\n mainArcLabelLine.style(\"display\", \"none\");\n } else {\n mainArcLabelLine.style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data);\n }).style(\"display\", config.gauge_labelLine_show ? \"\" : \"none\").each(function (d) {\n var lineLength = 0,\n lineThickness = 2,\n x = 0,\n y = 0,\n transform = \"\";\n\n if ($$.hiddenTargetIds.indexOf(d.data.id) < 0) {\n var updated = $$.updateAngle(d),\n innerLineLength = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length * (updated.index + 1),\n lineAngle = updated.endAngle - Math.PI / 2,\n arcInnerRadius = $$.radius - innerLineLength,\n linePositioningAngle = lineAngle - (arcInnerRadius === 0 ? 0 : 1 / arcInnerRadius);\n lineLength = $$.radiusExpanded - $$.radius + innerLineLength;\n x = Math.cos(linePositioningAngle) * arcInnerRadius;\n y = Math.sin(linePositioningAngle) * arcInnerRadius;\n transform = \"rotate(\" + lineAngle * 180 / Math.PI + \", \" + x + \", \" + y + \")\";\n }\n\n d3.select(this).attr('x', x).attr('y', y).attr('width', lineLength).attr('height', lineThickness).attr('transform', transform).style(\"stroke-dasharray\", \"0, \" + (lineLength + lineThickness) + \", 0\");\n });\n }\n }\n\n mainArc.attr(\"transform\", function (d) {\n return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\";\n }).on('mouseover', config.interaction_enabled ? function (d) {\n var updated, arcData;\n\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n\n updated = $$.updateAngle(d);\n\n if (updated) {\n arcData = $$.convertToArcData(updated); // transitions\n\n $$.expandArc(updated.data.id);\n $$.api.focus(updated.data.id);\n $$.toggleFocusLegend(updated.data.id, true);\n $$.config.data_onmouseover(arcData, this);\n }\n } : null).on('mousemove', config.interaction_enabled ? function (d) {\n var updated = $$.updateAngle(d),\n arcData,\n selectedData;\n\n if (updated) {\n arcData = $$.convertToArcData(updated), selectedData = [arcData];\n $$.showTooltip(selectedData, this);\n }\n } : null).on('mouseout', config.interaction_enabled ? function (d) {\n var updated, arcData;\n\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n\n updated = $$.updateAngle(d);\n\n if (updated) {\n arcData = $$.convertToArcData(updated); // transitions\n\n $$.unexpandArc(updated.data.id);\n $$.api.revert();\n $$.revertLegend();\n $$.hideTooltip();\n $$.config.data_onmouseout(arcData, this);\n }\n } : null).on('click', config.interaction_enabled ? function (d, i) {\n var updated = $$.updateAngle(d),\n arcData;\n\n if (updated) {\n arcData = $$.convertToArcData(updated);\n\n if ($$.toggleShape) {\n $$.toggleShape(this, arcData, i);\n }\n\n $$.config.data_onclick.call($$.api, arcData, this);\n }\n } : null).each(function () {\n $$.transiting = true;\n }).transition().duration(duration).attrTween(\"d\", function (d) {\n var updated = $$.updateAngle(d),\n interpolate;\n\n if (!updated) {\n return function () {\n return \"M 0 0\";\n };\n } // if (this._current === d) {\n // this._current = {\n // startAngle: Math.PI*2,\n // endAngle: Math.PI*2,\n // };\n // }\n\n\n if (isNaN(this._current.startAngle)) {\n this._current.startAngle = 0;\n }\n\n if (isNaN(this._current.endAngle)) {\n this._current.endAngle = this._current.startAngle;\n }\n\n interpolate = d3.interpolate(this._current, updated);\n this._current = interpolate(0);\n return function (t) {\n var interpolated = interpolate(t);\n interpolated.data = d.data; // data.id will be updated by interporator\n\n return $$.getArc(interpolated, true);\n };\n }).attr(\"transform\", withTransform ? \"scale(1)\" : \"\").style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n }) // Where gauge reading color would receive customization.\n .call($$.endall, function () {\n $$.transiting = false;\n });\n arcs.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n main.selectAll('.' + CLASS.chartArc).select('text').style(\"opacity\", 0).attr('class', function (d) {\n return $$.isGaugeType(d.data) ? CLASS.gaugeValue : '';\n }).text($$.textForArcLabel.bind($$)).attr(\"transform\", $$.transformForArcLabel.bind($$)).style('font-size', function (d) {\n return $$.isGaugeType(d.data) && $$.filterTargetsToShow($$.data.targets).length === 1 ? Math.round($$.radius / 5) + 'px' : '';\n }).transition().duration(duration).style(\"opacity\", function (d) {\n return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0;\n });\n main.select('.' + CLASS.chartArcsTitle).style(\"opacity\", $$.hasType('donut') || hasGaugeType ? 1 : 0);\n\n if (hasGaugeType) {\n var index = 0;\n var backgroundArc = $$.arcs.select('g.' + CLASS.chartArcsBackground).selectAll('path.' + CLASS.chartArcsBackground).data($$.data.targets);\n backgroundArc.enter().append(\"path\").attr(\"class\", function (d, i) {\n return CLASS.chartArcsBackground + ' ' + CLASS.chartArcsBackground + '-' + i;\n }).merge(backgroundArc).attr(\"d\", function (d1) {\n if ($$.hiddenTargetIds.indexOf(d1.id) >= 0) {\n return \"M 0 0\";\n }\n\n var d = {\n data: [{\n value: config.gauge_max\n }],\n startAngle: config.gauge_startingAngle,\n endAngle: -1 * config.gauge_startingAngle * (config.gauge_fullCircle ? Math.PI : 1),\n index: index++\n };\n return $$.getArc(d, true, true);\n });\n backgroundArc.exit().remove();\n $$.arcs.select('.' + CLASS.chartArcsGaugeUnit).attr(\"dy\", \".75em\").text(config.gauge_label_show ? config.gauge_units : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMin).attr(\"dx\", -1 * ($$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_min, false) : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMax).attr(\"dx\", $$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_max, true) : '');\n }\n };\n\n ChartInternal.prototype.initGauge = function () {\n var arcs = this.arcs;\n\n if (this.hasType('gauge')) {\n arcs.append('g').attr(\"class\", CLASS.chartArcsBackground);\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeUnit).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMin).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMax).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n }\n };\n\n ChartInternal.prototype.getGaugeLabelHeight = function () {\n return this.config.gauge_label_show ? 20 : 0;\n };\n\n ChartInternal.prototype.hasCaches = function (ids) {\n for (var i = 0; i < ids.length; i++) {\n if (!(ids[i] in this.cache)) {\n return false;\n }\n }\n\n return true;\n };\n\n ChartInternal.prototype.addCache = function (id, target) {\n this.cache[id] = this.cloneTarget(target);\n };\n\n ChartInternal.prototype.getCaches = function (ids) {\n var targets = [],\n i;\n\n for (i = 0; i < ids.length; i++) {\n if (ids[i] in this.cache) {\n targets.push(this.cloneTarget(this.cache[ids[i]]));\n }\n }\n\n return targets;\n };\n\n ChartInternal.prototype.categoryName = function (i) {\n var config = this.config;\n return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n };\n\n ChartInternal.prototype.generateTargetClass = function (targetId) {\n return targetId || targetId === 0 ? ('-' + targetId).replace(/\\s/g, '-') : '';\n };\n\n ChartInternal.prototype.generateClass = function (prefix, targetId) {\n return \" \" + prefix + \" \" + prefix + this.generateTargetClass(targetId);\n };\n\n ChartInternal.prototype.classText = function (d) {\n return this.generateClass(CLASS.text, d.index);\n };\n\n ChartInternal.prototype.classTexts = function (d) {\n return this.generateClass(CLASS.texts, d.id);\n };\n\n ChartInternal.prototype.classShape = function (d) {\n return this.generateClass(CLASS.shape, d.index);\n };\n\n ChartInternal.prototype.classShapes = function (d) {\n return this.generateClass(CLASS.shapes, d.id);\n };\n\n ChartInternal.prototype.classLine = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n };\n\n ChartInternal.prototype.classLines = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n };\n\n ChartInternal.prototype.classCircle = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n };\n\n ChartInternal.prototype.classCircles = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n };\n\n ChartInternal.prototype.classBar = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n };\n\n ChartInternal.prototype.classBars = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n };\n\n ChartInternal.prototype.classArc = function (d) {\n return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n };\n\n ChartInternal.prototype.classArcs = function (d) {\n return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n };\n\n ChartInternal.prototype.classArea = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n };\n\n ChartInternal.prototype.classAreas = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n };\n\n ChartInternal.prototype.classRegion = function (d, i) {\n return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n };\n\n ChartInternal.prototype.classEvent = function (d) {\n return this.generateClass(CLASS.eventRect, d.index);\n };\n\n ChartInternal.prototype.classTarget = function (id) {\n var $$ = this;\n var additionalClassSuffix = $$.config.data_classes[id],\n additionalClass = '';\n\n if (additionalClassSuffix) {\n additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n }\n\n return $$.generateClass(CLASS.target, id) + additionalClass;\n };\n\n ChartInternal.prototype.classFocus = function (d) {\n return this.classFocused(d) + this.classDefocused(d);\n };\n\n ChartInternal.prototype.classFocused = function (d) {\n return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n };\n\n ChartInternal.prototype.classDefocused = function (d) {\n return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n };\n\n ChartInternal.prototype.classChartText = function (d) {\n return CLASS.chartText + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartLine = function (d) {\n return CLASS.chartLine + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartBar = function (d) {\n return CLASS.chartBar + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartArc = function (d) {\n return CLASS.chartArc + this.classTarget(d.data.id);\n };\n\n ChartInternal.prototype.getTargetSelectorSuffix = function (targetId) {\n return this.generateTargetClass(targetId).replace(/([?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\])/g, '\\\\$1');\n };\n\n ChartInternal.prototype.selectorTarget = function (id, prefix) {\n return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n };\n\n ChartInternal.prototype.selectorTargets = function (ids, prefix) {\n var $$ = this;\n ids = ids || [];\n return ids.length ? ids.map(function (id) {\n return $$.selectorTarget(id, prefix);\n }) : null;\n };\n\n ChartInternal.prototype.selectorLegend = function (id) {\n return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n };\n\n ChartInternal.prototype.selectorLegends = function (ids) {\n var $$ = this;\n return ids && ids.length ? ids.map(function (id) {\n return $$.selectorLegend(id);\n }) : null;\n };\n\n ChartInternal.prototype.getClipPath = function (id) {\n var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n };\n\n ChartInternal.prototype.appendClip = function (parent, id) {\n return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n };\n\n ChartInternal.prototype.getAxisClipX = function (forHorizontal) {\n // axis line width + padding for left\n var left = Math.max(30, this.margin.left);\n return forHorizontal ? -(1 + left) : -(left - 1);\n };\n\n ChartInternal.prototype.getAxisClipY = function (forHorizontal) {\n return forHorizontal ? -20 : -this.margin.top;\n };\n\n ChartInternal.prototype.getXAxisClipX = function () {\n var $$ = this;\n return $$.getAxisClipX(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getXAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipX = function () {\n var $$ = this;\n return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getAxisClipWidth = function (forHorizontal) {\n var $$ = this,\n left = Math.max(30, $$.margin.left),\n right = Math.max(30, $$.margin.right); // width + axis line width + padding for left/right\n\n return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n };\n\n ChartInternal.prototype.getAxisClipHeight = function (forHorizontal) {\n // less than 20 is not enough to show the axis label 'outer' without legend\n return (forHorizontal ? this.margin.bottom : this.margin.top + this.height) + 20;\n };\n\n ChartInternal.prototype.getXAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getXAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n };\n\n ChartInternal.prototype.getYAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.generateColor = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n colors = config.data_colors,\n pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.schemeCategory10,\n callback = config.data_color,\n ids = [];\n return function (d) {\n var id = d.id || d.data && d.data.id || d,\n color; // if callback function is provided\n\n if (colors[id] instanceof Function) {\n color = colors[id](d);\n } // if specified, choose that color\n else if (colors[id]) {\n color = colors[id];\n } // if not specified, choose from pattern\n else {\n if (ids.indexOf(id) < 0) {\n ids.push(id);\n }\n\n color = pattern[ids.indexOf(id) % pattern.length];\n colors[id] = color;\n }\n\n return callback instanceof Function ? callback(color, d) : color;\n };\n };\n\n ChartInternal.prototype.generateLevelColor = function () {\n var $$ = this,\n config = $$.config,\n colors = config.color_pattern,\n threshold = config.color_threshold,\n asValue = threshold.unit === 'value',\n values = threshold.values && threshold.values.length ? threshold.values : [],\n max = threshold.max || 100;\n return notEmpty(threshold) && notEmpty(colors) ? function (value) {\n var i,\n v,\n color = colors[colors.length - 1];\n\n for (i = 0; i < values.length; i++) {\n v = asValue ? value : value * 100 / max;\n\n if (v < values[i]) {\n color = colors[i];\n break;\n }\n }\n\n return color;\n } : null;\n };\n\n ChartInternal.prototype.getDefaultConfig = function () {\n var config = {\n bindto: '#chart',\n svg_classname: undefined,\n size_width: undefined,\n size_height: undefined,\n padding_left: undefined,\n padding_right: undefined,\n padding_top: undefined,\n padding_bottom: undefined,\n resize_auto: true,\n zoom_enabled: false,\n zoom_initialRange: undefined,\n zoom_type: 'scroll',\n zoom_disableDefaultBehavior: false,\n zoom_privileged: false,\n zoom_rescale: false,\n zoom_onzoom: function zoom_onzoom() {},\n zoom_onzoomstart: function zoom_onzoomstart() {},\n zoom_onzoomend: function zoom_onzoomend() {},\n zoom_x_min: undefined,\n zoom_x_max: undefined,\n interaction_brighten: true,\n interaction_enabled: true,\n onmouseover: function onmouseover() {},\n onmouseout: function onmouseout() {},\n onresize: function onresize() {},\n onresized: function onresized() {},\n oninit: function oninit() {},\n onrendered: function onrendered() {},\n transition_duration: 350,\n data_epochs: 'epochs',\n data_x: undefined,\n data_xs: {},\n data_xFormat: '%Y-%m-%d',\n data_xLocaltime: true,\n data_xSort: true,\n data_idConverter: function data_idConverter(id) {\n return id;\n },\n data_names: {},\n data_classes: {},\n data_groups: [],\n data_axes: {},\n data_type: undefined,\n data_types: {},\n data_labels: {},\n data_order: 'desc',\n data_regions: {},\n data_color: undefined,\n data_colors: {},\n data_hide: false,\n data_filter: undefined,\n data_selection_enabled: false,\n data_selection_grouped: false,\n data_selection_isselectable: function data_selection_isselectable() {\n return true;\n },\n data_selection_multiple: true,\n data_selection_draggable: false,\n data_onclick: function data_onclick() {},\n data_onmouseover: function data_onmouseover() {},\n data_onmouseout: function data_onmouseout() {},\n data_onselected: function data_onselected() {},\n data_onunselected: function data_onunselected() {},\n data_url: undefined,\n data_headers: undefined,\n data_json: undefined,\n data_rows: undefined,\n data_columns: undefined,\n data_mimeType: undefined,\n data_keys: undefined,\n // configuration for no plot-able data supplied.\n data_empty_label_text: \"\",\n // subchart\n subchart_show: false,\n subchart_size_height: 60,\n subchart_axis_x_show: true,\n subchart_onbrush: function subchart_onbrush() {},\n // color\n color_pattern: [],\n color_threshold: {},\n // legend\n legend_show: true,\n legend_hide: false,\n legend_position: 'bottom',\n legend_inset_anchor: 'top-left',\n legend_inset_x: 10,\n legend_inset_y: 0,\n legend_inset_step: undefined,\n legend_item_onclick: undefined,\n legend_item_onmouseover: undefined,\n legend_item_onmouseout: undefined,\n legend_equally: false,\n legend_padding: 0,\n legend_item_tile_width: 10,\n legend_item_tile_height: 10,\n // axis\n axis_rotated: false,\n axis_x_show: true,\n axis_x_type: 'indexed',\n axis_x_localtime: true,\n axis_x_categories: [],\n axis_x_tick_centered: false,\n axis_x_tick_format: undefined,\n axis_x_tick_culling: {},\n axis_x_tick_culling_max: 10,\n axis_x_tick_count: undefined,\n axis_x_tick_fit: true,\n axis_x_tick_values: null,\n axis_x_tick_rotate: 0,\n axis_x_tick_outer: true,\n axis_x_tick_multiline: true,\n axis_x_tick_multilineMax: 0,\n axis_x_tick_width: null,\n axis_x_max: undefined,\n axis_x_min: undefined,\n axis_x_padding: {},\n axis_x_height: undefined,\n axis_x_selection: undefined,\n axis_x_label: {},\n axis_x_inner: undefined,\n axis_y_show: true,\n axis_y_type: undefined,\n axis_y_max: undefined,\n axis_y_min: undefined,\n axis_y_inverted: false,\n axis_y_center: undefined,\n axis_y_inner: undefined,\n axis_y_label: {},\n axis_y_tick_format: undefined,\n axis_y_tick_outer: true,\n axis_y_tick_values: null,\n axis_y_tick_rotate: 0,\n axis_y_tick_count: undefined,\n axis_y_tick_time_type: undefined,\n axis_y_tick_time_interval: undefined,\n axis_y_padding: {},\n axis_y_default: undefined,\n axis_y2_show: false,\n axis_y2_max: undefined,\n axis_y2_min: undefined,\n axis_y2_inverted: false,\n axis_y2_center: undefined,\n axis_y2_inner: undefined,\n axis_y2_label: {},\n axis_y2_tick_format: undefined,\n axis_y2_tick_outer: true,\n axis_y2_tick_values: null,\n axis_y2_tick_count: undefined,\n axis_y2_padding: {},\n axis_y2_default: undefined,\n // grid\n grid_x_show: false,\n grid_x_type: 'tick',\n grid_x_lines: [],\n grid_y_show: false,\n // not used\n // grid_y_type: 'tick',\n grid_y_lines: [],\n grid_y_ticks: 10,\n grid_focus_show: true,\n grid_lines_front: true,\n // point - point of each data\n point_show: true,\n point_r: 2.5,\n point_sensitivity: 10,\n point_focus_expand_enabled: true,\n point_focus_expand_r: undefined,\n point_select_r: undefined,\n // line\n line_connectNull: false,\n line_step_type: 'step',\n // bar\n bar_width: undefined,\n bar_width_ratio: 0.6,\n bar_width_max: undefined,\n bar_zerobased: true,\n bar_space: 0,\n // area\n area_zerobased: true,\n area_above: false,\n // pie\n pie_label_show: true,\n pie_label_format: undefined,\n pie_label_threshold: 0.05,\n pie_label_ratio: undefined,\n pie_expand: {},\n pie_expand_duration: 50,\n // gauge\n gauge_fullCircle: false,\n gauge_label_show: true,\n gauge_labelLine_show: true,\n gauge_label_format: undefined,\n gauge_min: 0,\n gauge_max: 100,\n gauge_startingAngle: -1 * Math.PI / 2,\n gauge_label_extents: undefined,\n gauge_units: undefined,\n gauge_width: undefined,\n gauge_arcs_minWidth: 5,\n gauge_expand: {},\n gauge_expand_duration: 50,\n // donut\n donut_label_show: true,\n donut_label_format: undefined,\n donut_label_threshold: 0.05,\n donut_label_ratio: undefined,\n donut_width: undefined,\n donut_title: \"\",\n donut_expand: {},\n donut_expand_duration: 50,\n // spline\n spline_interpolation_type: 'cardinal',\n // stanford\n stanford_lines: [],\n stanford_regions: [],\n stanford_texts: [],\n stanford_scaleMin: undefined,\n stanford_scaleMax: undefined,\n stanford_scaleWidth: undefined,\n stanford_scaleFormat: undefined,\n stanford_scaleValues: undefined,\n stanford_colors: undefined,\n stanford_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n // region - region to change style\n regions: [],\n // tooltip - show when mouseover on each data\n tooltip_show: true,\n tooltip_grouped: true,\n tooltip_order: undefined,\n tooltip_format_title: undefined,\n tooltip_format_name: undefined,\n tooltip_format_value: undefined,\n tooltip_horizontal: undefined,\n tooltip_position: undefined,\n tooltip_contents: function tooltip_contents(d, defaultTitleFormat, defaultValueFormat, color) {\n return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n },\n tooltip_init_show: false,\n tooltip_init_x: 0,\n tooltip_init_position: {\n top: '0px',\n left: '50px'\n },\n tooltip_onshow: function tooltip_onshow() {},\n tooltip_onhide: function tooltip_onhide() {},\n // title\n title_text: undefined,\n title_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n title_position: 'top-center'\n };\n Object.keys(this.additionalConfig).forEach(function (key) {\n config[key] = this.additionalConfig[key];\n }, this);\n return config;\n };\n\n ChartInternal.prototype.additionalConfig = {};\n\n ChartInternal.prototype.loadConfig = function (config) {\n var this_config = this.config,\n target,\n keys,\n read;\n\n function find() {\n var key = keys.shift(); // console.log(\"key =>\", key, \", target =>\", target);\n\n if (key && target && _typeof(target) === 'object' && key in target) {\n target = target[key];\n return find();\n } else if (!key) {\n return target;\n } else {\n return undefined;\n }\n }\n\n Object.keys(this_config).forEach(function (key) {\n target = config;\n keys = key.split('_');\n read = find(); // console.log(\"CONFIG : \", key, read);\n\n if (isDefined(read)) {\n this_config[key] = read;\n }\n });\n };\n\n ChartInternal.prototype.convertUrlToData = function (url, mimeType, headers, keys, done) {\n var $$ = this,\n type = mimeType ? mimeType : 'csv',\n f,\n converter;\n\n if (type === 'json') {\n f = $$.d3.json;\n converter = $$.convertJsonToData;\n } else if (type === 'tsv') {\n f = $$.d3.tsv;\n converter = $$.convertXsvToData;\n } else {\n f = $$.d3.csv;\n converter = $$.convertXsvToData;\n }\n\n f(url, headers).then(function (data) {\n done.call($$, converter.call($$, data, keys));\n }).catch(function (error) {\n throw error;\n });\n };\n\n ChartInternal.prototype.convertXsvToData = function (xsv) {\n var keys = xsv.columns,\n rows = xsv;\n\n if (rows.length === 0) {\n return {\n keys: keys,\n rows: [keys.reduce(function (row, key) {\n return Object.assign(row, _defineProperty({}, key, null));\n }, {})]\n };\n } else {\n // [].concat() is to convert result into a plain array otherwise\n // test is not happy because rows have properties.\n return {\n keys: keys,\n rows: [].concat(xsv)\n };\n }\n };\n\n ChartInternal.prototype.convertJsonToData = function (json, keys) {\n var $$ = this,\n new_rows = [],\n targetKeys,\n data;\n\n if (keys) {\n // when keys specified, json would be an array that includes objects\n if (keys.x) {\n targetKeys = keys.value.concat(keys.x);\n $$.config.data_x = keys.x;\n } else {\n targetKeys = keys.value;\n }\n\n new_rows.push(targetKeys);\n json.forEach(function (o) {\n var new_row = [];\n targetKeys.forEach(function (key) {\n // convert undefined to null because undefined data will be removed in convertDataToTargets()\n var v = $$.findValueInJson(o, key);\n\n if (isUndefined(v)) {\n v = null;\n }\n\n new_row.push(v);\n });\n new_rows.push(new_row);\n });\n data = $$.convertRowsToData(new_rows);\n } else {\n Object.keys(json).forEach(function (key) {\n new_rows.push([key].concat(json[key]));\n });\n data = $$.convertColumnsToData(new_rows);\n }\n\n return data;\n };\n\n ChartInternal.prototype.findValueInJson = function (object, path) {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n\n path = path.replace(/^\\./, ''); // strip a leading dot\n\n var pathArray = path.split('.');\n\n for (var i = 0; i < pathArray.length; ++i) {\n var k = pathArray[i];\n\n if (k in object) {\n object = object[k];\n } else {\n return;\n }\n }\n\n return object;\n };\n /**\n * Converts the rows to normalized data.\n * @param {any[][]} rows The row data\n * @return {Object}\n */\n\n\n ChartInternal.prototype.convertRowsToData = function (rows) {\n var newRows = [];\n var keys = rows[0];\n\n for (var i = 1; i < rows.length; i++) {\n var newRow = {};\n\n for (var j = 0; j < rows[i].length; j++) {\n if (isUndefined(rows[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n\n newRow[keys[j]] = rows[i][j];\n }\n\n newRows.push(newRow);\n }\n\n return {\n keys: keys,\n rows: newRows\n };\n };\n /**\n * Converts the columns to normalized data.\n * @param {any[][]} columns The column data\n * @return {Object}\n */\n\n\n ChartInternal.prototype.convertColumnsToData = function (columns) {\n var newRows = [];\n var keys = [];\n\n for (var i = 0; i < columns.length; i++) {\n var key = columns[i][0];\n\n for (var j = 1; j < columns[i].length; j++) {\n if (isUndefined(newRows[j - 1])) {\n newRows[j - 1] = {};\n }\n\n if (isUndefined(columns[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n\n newRows[j - 1][key] = columns[i][j];\n }\n\n keys.push(key);\n }\n\n return {\n keys: keys,\n rows: newRows\n };\n };\n /**\n * Converts the data format into the target format.\n * @param {!Object} data\n * @param {!Array} data.keys Ordered list of target IDs.\n * @param {!Array} data.rows Rows of data to convert.\n * @param {boolean} appendXs True to append to $$.data.xs, False to replace.\n * @return {!Array}\n */\n\n\n ChartInternal.prototype.convertDataToTargets = function (data, appendXs) {\n var $$ = this,\n config = $$.config,\n targets,\n ids,\n xs,\n keys,\n epochs; // handles format where keys are not orderly provided\n\n if (isArray(data)) {\n keys = Object.keys(data[0]);\n } else {\n keys = data.keys;\n data = data.rows;\n }\n\n xs = keys.filter($$.isX, $$);\n\n if (!$$.isStanfordGraphType()) {\n ids = keys.filter($$.isNotX, $$);\n } else {\n epochs = keys.filter($$.isEpochs, $$);\n ids = keys.filter($$.isNotXAndNotEpochs, $$);\n\n if (xs.length !== 1 || epochs.length !== 1 || ids.length !== 1) {\n throw new Error('You must define the \\'x\\' key name and the \\'epochs\\' for Stanford Diagrams');\n }\n } // save x for update data by load when custom x and c3.x API\n\n\n ids.forEach(function (id) {\n var xKey = $$.getXKey(id);\n\n if ($$.isCustomX() || $$.isTimeSeries()) {\n // if included in input data\n if (xs.indexOf(xKey) >= 0) {\n $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(data.map(function (d) {\n return d[xKey];\n }).filter(isValue).map(function (rawX, i) {\n return $$.generateTargetX(rawX, id, i);\n }));\n } // if not included in input data, find from preloaded data of other id's x\n else if (config.data_x) {\n $$.data.xs[id] = $$.getOtherTargetXs();\n } // if not included in input data, find from preloaded data\n else if (notEmpty(config.data_xs)) {\n $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n } // MEMO: if no x included, use same x of current will be used\n\n } else {\n $$.data.xs[id] = data.map(function (d, i) {\n return i;\n });\n }\n }); // check x is defined\n\n ids.forEach(function (id) {\n if (!$$.data.xs[id]) {\n throw new Error('x is not defined for id = \"' + id + '\".');\n }\n }); // convert to target\n\n targets = ids.map(function (id, index) {\n var convertedId = config.data_idConverter(id);\n return {\n id: convertedId,\n id_org: id,\n values: data.map(function (d, i) {\n var xKey = $$.getXKey(id),\n rawX = d[xKey],\n value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null,\n x,\n returnData; // use x as categories if custom x and categorized\n\n if ($$.isCustomX() && $$.isCategorized() && !isUndefined(rawX)) {\n if (index === 0 && i === 0) {\n config.axis_x_categories = [];\n }\n\n x = config.axis_x_categories.indexOf(rawX);\n\n if (x === -1) {\n x = config.axis_x_categories.length;\n config.axis_x_categories.push(rawX);\n }\n } else {\n x = $$.generateTargetX(rawX, id, i);\n } // mark as x = undefined if value is undefined and filter to remove after mapped\n\n\n if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n x = undefined;\n }\n\n returnData = {\n x: x,\n value: value,\n id: convertedId\n };\n\n if ($$.isStanfordGraphType()) {\n returnData.epochs = d[epochs];\n }\n\n return returnData;\n }).filter(function (v) {\n return isDefined(v.x);\n })\n };\n }); // finish targets\n\n targets.forEach(function (t) {\n var i; // sort values by its x\n\n if (config.data_xSort) {\n t.values = t.values.sort(function (v1, v2) {\n var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n return x1 - x2;\n });\n } // indexing each value\n\n\n i = 0;\n t.values.forEach(function (v) {\n v.index = i++;\n }); // this needs to be sorted because its index and value.index is identical\n\n $$.data.xs[t.id].sort(function (v1, v2) {\n return v1 - v2;\n });\n }); // cache information about values\n\n $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets); // set target types\n\n if (config.data_type) {\n $$.setTargetType($$.mapToIds(targets).filter(function (id) {\n return !(id in config.data_types);\n }), config.data_type);\n } // cache as original id keyed\n\n\n targets.forEach(function (d) {\n $$.addCache(d.id_org, d);\n });\n return targets;\n };\n\n ChartInternal.prototype.isEpochs = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_epochs && key === config.data_epochs;\n };\n\n ChartInternal.prototype.isX = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_x && key === config.data_x || notEmpty(config.data_xs) && hasValue(config.data_xs, key);\n };\n\n ChartInternal.prototype.isNotX = function (key) {\n return !this.isX(key);\n };\n\n ChartInternal.prototype.isNotXAndNotEpochs = function (key) {\n return !this.isX(key) && !this.isEpochs(key);\n };\n\n ChartInternal.prototype.getXKey = function (id) {\n var $$ = this,\n config = $$.config;\n return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n };\n\n ChartInternal.prototype.getXValuesOfXKey = function (key, targets) {\n var $$ = this,\n xValues,\n ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n ids.forEach(function (id) {\n if ($$.getXKey(id) === key) {\n xValues = $$.data.xs[id];\n }\n });\n return xValues;\n };\n\n ChartInternal.prototype.getXValue = function (id, i) {\n var $$ = this;\n return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n };\n\n ChartInternal.prototype.getOtherTargetXs = function () {\n var $$ = this,\n idsForX = Object.keys($$.data.xs);\n return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n };\n\n ChartInternal.prototype.getOtherTargetX = function (index) {\n var xs = this.getOtherTargetXs();\n return xs && index < xs.length ? xs[index] : null;\n };\n\n ChartInternal.prototype.addXs = function (xs) {\n var $$ = this;\n Object.keys(xs).forEach(function (id) {\n $$.config.data_xs[id] = xs[id];\n });\n };\n\n ChartInternal.prototype.addName = function (data) {\n var $$ = this,\n name;\n\n if (data) {\n name = $$.config.data_names[data.id];\n data.name = name !== undefined ? name : data.id;\n }\n\n return data;\n };\n\n ChartInternal.prototype.getValueOnIndex = function (values, index) {\n var valueOnIndex = values.filter(function (v) {\n return v.index === index;\n });\n return valueOnIndex.length ? valueOnIndex[0] : null;\n };\n\n ChartInternal.prototype.updateTargetX = function (targets, x) {\n var $$ = this;\n targets.forEach(function (t) {\n t.values.forEach(function (v, i) {\n v.x = $$.generateTargetX(x[i], t.id, i);\n });\n $$.data.xs[t.id] = x;\n });\n };\n\n ChartInternal.prototype.updateTargetXs = function (targets, xs) {\n var $$ = this;\n targets.forEach(function (t) {\n if (xs[t.id]) {\n $$.updateTargetX([t], xs[t.id]);\n }\n });\n };\n\n ChartInternal.prototype.generateTargetX = function (rawX, id, index) {\n var $$ = this,\n x;\n\n if ($$.isTimeSeries()) {\n x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n } else if ($$.isCustomX() && !$$.isCategorized()) {\n x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n } else {\n x = index;\n }\n\n return x;\n };\n\n ChartInternal.prototype.cloneTarget = function (target) {\n return {\n id: target.id,\n id_org: target.id_org,\n values: target.values.map(function (d) {\n return {\n x: d.x,\n value: d.value,\n id: d.id\n };\n })\n };\n };\n\n ChartInternal.prototype.getMaxDataCount = function () {\n var $$ = this;\n return $$.d3.max($$.data.targets, function (t) {\n return t.values.length;\n });\n };\n\n ChartInternal.prototype.mapToIds = function (targets) {\n return targets.map(function (d) {\n return d.id;\n });\n };\n\n ChartInternal.prototype.mapToTargetIds = function (ids) {\n var $$ = this;\n return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n };\n\n ChartInternal.prototype.hasTarget = function (targets, id) {\n var ids = this.mapToIds(targets),\n i;\n\n for (i = 0; i < ids.length; i++) {\n if (ids[i] === id) {\n return true;\n }\n }\n\n return false;\n };\n\n ChartInternal.prototype.isTargetToShow = function (targetId) {\n return this.hiddenTargetIds.indexOf(targetId) < 0;\n };\n\n ChartInternal.prototype.isLegendToShow = function (targetId) {\n return this.hiddenLegendIds.indexOf(targetId) < 0;\n };\n\n ChartInternal.prototype.filterTargetsToShow = function (targets) {\n var $$ = this;\n return targets.filter(function (t) {\n return $$.isTargetToShow(t.id);\n });\n };\n\n ChartInternal.prototype.mapTargetsToUniqueXs = function (targets) {\n var $$ = this;\n var xs = $$.d3.set($$.d3.merge(targets.map(function (t) {\n return t.values.map(function (v) {\n return +v.x;\n });\n }))).values();\n xs = $$.isTimeSeries() ? xs.map(function (x) {\n return new Date(+x);\n }) : xs.map(function (x) {\n return +x;\n });\n return xs.sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n });\n };\n\n ChartInternal.prototype.addHiddenTargetIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenTargetIds.indexOf(targetIds[i]) < 0) {\n this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds[i]);\n }\n }\n };\n\n ChartInternal.prototype.removeHiddenTargetIds = function (targetIds) {\n this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n ChartInternal.prototype.addHiddenLegendIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenLegendIds.indexOf(targetIds[i]) < 0) {\n this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds[i]);\n }\n }\n };\n\n ChartInternal.prototype.removeHiddenLegendIds = function (targetIds) {\n this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n ChartInternal.prototype.getValuesAsIdKeyed = function (targets) {\n var ys = {};\n targets.forEach(function (t) {\n ys[t.id] = [];\n t.values.forEach(function (v) {\n ys[t.id].push(v.value);\n });\n });\n return ys;\n };\n\n ChartInternal.prototype.checkValueInTargets = function (targets, checker) {\n var ids = Object.keys(targets),\n i,\n j,\n values;\n\n for (i = 0; i < ids.length; i++) {\n values = targets[ids[i]].values;\n\n for (j = 0; j < values.length; j++) {\n if (checker(values[j].value)) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n ChartInternal.prototype.hasNegativeValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v < 0;\n });\n };\n\n ChartInternal.prototype.hasPositiveValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v > 0;\n });\n };\n\n ChartInternal.prototype.isOrderDesc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'desc';\n };\n\n ChartInternal.prototype.isOrderAsc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'asc';\n };\n\n ChartInternal.prototype.getOrderFunction = function () {\n var $$ = this,\n config = $$.config,\n orderAsc = $$.isOrderAsc(),\n orderDesc = $$.isOrderDesc();\n\n if (orderAsc || orderDesc) {\n var reducer = function reducer(p, c) {\n return p + Math.abs(c.value);\n };\n\n return function (t1, t2) {\n var t1Sum = t1.values.reduce(reducer, 0),\n t2Sum = t2.values.reduce(reducer, 0);\n return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\n };\n } else if (isFunction(config.data_order)) {\n return config.data_order;\n } else if (isArray(config.data_order)) {\n var order = config.data_order;\n return function (t1, t2) {\n return order.indexOf(t1.id) - order.indexOf(t2.id);\n };\n }\n };\n\n ChartInternal.prototype.orderTargets = function (targets) {\n var fct = this.getOrderFunction();\n\n if (fct) {\n targets.sort(fct);\n }\n\n return targets;\n };\n\n ChartInternal.prototype.filterByX = function (targets, x) {\n return this.d3.merge(targets.map(function (t) {\n return t.values;\n })).filter(function (v) {\n return v.x - x === 0;\n });\n };\n\n ChartInternal.prototype.filterRemoveNull = function (data) {\n return data.filter(function (d) {\n return isValue(d.value);\n });\n };\n\n ChartInternal.prototype.filterByXDomain = function (targets, xDomain) {\n return targets.map(function (t) {\n return {\n id: t.id,\n id_org: t.id_org,\n values: t.values.filter(function (v) {\n return xDomain[0] <= v.x && v.x <= xDomain[1];\n })\n };\n });\n };\n\n ChartInternal.prototype.hasDataLabel = function () {\n var config = this.config;\n\n if (typeof config.data_labels === 'boolean' && config.data_labels) {\n return true;\n } else if (_typeof(config.data_labels) === 'object' && notEmpty(config.data_labels)) {\n return true;\n }\n\n return false;\n };\n\n ChartInternal.prototype.getDataLabelLength = function (min, max, key) {\n var $$ = this,\n lengths = [0, 0],\n paddingCoef = 1.3;\n $$.selectChart.select('svg').selectAll('.dummy').data([min, max]).enter().append('text').text(function (d) {\n return $$.dataLabelFormat(d.id)(d);\n }).each(function (d, i) {\n lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n }).remove();\n return lengths;\n };\n /**\n * Returns true if the given data point is not arc type, otherwise false.\n * @param {Object} d The data point\n * @return {boolean}\n */\n\n\n ChartInternal.prototype.isNoneArc = function (d) {\n return this.hasTarget(this.data.targets, d.id);\n };\n /**\n * Returns true if the given data point is arc type, otherwise false.\n * @param {Object} d The data point\n * @return {boolean}\n */\n\n\n ChartInternal.prototype.isArc = function (d) {\n return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n };\n\n ChartInternal.prototype.findClosestFromTargets = function (targets, pos) {\n var $$ = this,\n candidates; // map to array of closest points of each target\n\n candidates = targets.map(function (target) {\n return $$.findClosest(target.values, pos);\n }); // decide closest point and return\n\n return $$.findClosest(candidates, pos);\n };\n\n ChartInternal.prototype.findClosest = function (values, pos) {\n var $$ = this,\n minDist = $$.config.point_sensitivity,\n closest; // find mouseovering bar\n\n values.filter(function (v) {\n return v && $$.isBarType(v.id);\n }).forEach(function (v) {\n var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n\n if (!closest && $$.isWithinBar($$.d3.mouse(shape), shape)) {\n closest = v;\n }\n }); // find closest point from non-bar\n\n values.filter(function (v) {\n return v && !$$.isBarType(v.id);\n }).forEach(function (v) {\n var d = $$.config.tooltip_horizontal ? $$.horizontalDistance(v, pos) : $$.dist(v, pos);\n\n if (d < minDist) {\n minDist = d;\n closest = v;\n }\n });\n return closest;\n };\n\n ChartInternal.prototype.dist = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n yIndex = config.axis_rotated ? 0 : 1,\n y = $$.circleY(data, data.index),\n x = $$.x(data.x);\n return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n };\n\n ChartInternal.prototype.horizontalDistance = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n x = $$.x(data.x);\n return Math.abs(x - pos[xIndex]);\n };\n\n ChartInternal.prototype.convertValuesToStep = function (values) {\n var converted = [].concat(values),\n i;\n\n if (!this.isCategorized()) {\n return values;\n }\n\n for (i = values.length + 1; 0 < i; i--) {\n converted[i] = converted[i - 1];\n }\n\n converted[0] = {\n x: converted[0].x - 1,\n value: converted[0].value,\n id: converted[0].id\n };\n converted[values.length + 1] = {\n x: converted[values.length].x + 1,\n value: converted[values.length].value,\n id: converted[values.length].id\n };\n return converted;\n };\n\n ChartInternal.prototype.updateDataAttributes = function (name, attrs) {\n var $$ = this,\n config = $$.config,\n current = config['data_' + name];\n\n if (typeof attrs === 'undefined') {\n return current;\n }\n\n Object.keys(attrs).forEach(function (id) {\n current[id] = attrs[id];\n });\n $$.redraw({\n withLegend: true\n });\n return current;\n };\n\n ChartInternal.prototype.load = function (targets, args) {\n var $$ = this;\n\n if (targets) {\n // filter loading targets if needed\n if (args.filter) {\n targets = targets.filter(args.filter);\n } // set type if args.types || args.type specified\n\n\n if (args.type || args.types) {\n targets.forEach(function (t) {\n var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n $$.setTargetType(t.id, type);\n });\n } // Update/Add data\n\n\n $$.data.targets.forEach(function (d) {\n for (var i = 0; i < targets.length; i++) {\n if (d.id === targets[i].id) {\n d.values = targets[i].values;\n targets.splice(i, 1);\n break;\n }\n }\n });\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n } // Set targets\n\n\n $$.updateTargets($$.data.targets); // Redraw with new targets\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n\n if (args.done) {\n args.done();\n }\n };\n\n ChartInternal.prototype.loadFromArgs = function (args) {\n var $$ = this;\n\n if (args.data) {\n $$.load($$.convertDataToTargets(args.data), args);\n } else if (args.url) {\n $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n $$.load($$.convertDataToTargets(data), args);\n });\n } else if (args.json) {\n $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n } else if (args.rows) {\n $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n } else if (args.columns) {\n $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n } else {\n $$.load(null, args);\n }\n };\n\n ChartInternal.prototype.unload = function (targetIds, done) {\n var $$ = this;\n\n if (!done) {\n done = function done() {};\n } // filter existing target\n\n\n targetIds = targetIds.filter(function (id) {\n return $$.hasTarget($$.data.targets, id);\n }); // If no target, call done and return\n\n if (!targetIds || targetIds.length === 0) {\n done();\n return;\n }\n\n $$.svg.selectAll(targetIds.map(function (id) {\n return $$.selectorTarget(id);\n })).transition().style('opacity', 0).remove().call($$.endall, done);\n targetIds.forEach(function (id) {\n // Reset fadein for future load\n $$.withoutFadeIn[id] = false; // Remove target's elements\n\n if ($$.legend) {\n $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n } // Remove target\n\n\n $$.data.targets = $$.data.targets.filter(function (t) {\n return t.id !== id;\n });\n });\n };\n\n ChartInternal.prototype.getYDomainMin = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasNegativeValue;\n\n if (config.data_groups.length > 0) {\n hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n\n if (idsInGroup.length === 0) {\n continue;\n }\n\n baseId = idsInGroup[0]; // Consider negative values\n\n if (hasNegativeValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v < 0 ? v : 0;\n });\n } // Compute min\n\n\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n\n if (!ys[id]) {\n continue;\n }\n\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n\n return $$.d3.min(Object.keys(ys).map(function (key) {\n return $$.d3.min(ys[key]);\n }));\n };\n\n ChartInternal.prototype.getYDomainMax = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasPositiveValue;\n\n if (config.data_groups.length > 0) {\n hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n\n if (idsInGroup.length === 0) {\n continue;\n }\n\n baseId = idsInGroup[0]; // Consider positive values\n\n if (hasPositiveValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v > 0 ? v : 0;\n });\n } // Compute max\n\n\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n\n if (!ys[id]) {\n continue;\n }\n\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n\n return $$.d3.max(Object.keys(ys).map(function (key) {\n return $$.d3.max(ys[key]);\n }));\n };\n\n ChartInternal.prototype.getYDomain = function (targets, axisId, xDomain) {\n var $$ = this,\n config = $$.config,\n targetsByAxisId = targets.filter(function (t) {\n return $$.axis.getId(t.id) === axisId;\n }),\n yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n yDomainMin = $$.getYDomainMin(yTargets),\n yDomainMax = $$.getYDomainMax(yTargets),\n domain,\n domainLength,\n padding,\n padding_top,\n padding_bottom,\n center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n yDomainAbs,\n lengths,\n diff,\n ratio,\n isAllPositive,\n isAllNegative,\n isZeroBased = $$.hasType('bar', yTargets) && config.bar_zerobased || $$.hasType('area', yTargets) && config.area_zerobased,\n isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated; // MEMO: avoid inverting domain unexpectedly\n\n yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? yDomainMin < yMax ? yDomainMin : yMax - 10 : yDomainMin;\n yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? yMin < yDomainMax ? yDomainMax : yMin + 10 : yDomainMax;\n\n if (yTargets.length === 0) {\n // use current domain if target of axisId is none\n return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n }\n\n if (isNaN(yDomainMin)) {\n // set minimum to zero when not number\n yDomainMin = 0;\n }\n\n if (isNaN(yDomainMax)) {\n // set maximum to have same value as yDomainMin\n yDomainMax = yDomainMin;\n }\n\n if (yDomainMin === yDomainMax) {\n yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n }\n\n isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n isAllNegative = yDomainMin <= 0 && yDomainMax <= 0; // Cancel zerobased if axis_*_min / axis_*_max specified\n\n if (isValue(yMin) && isAllPositive || isValue(yMax) && isAllNegative) {\n isZeroBased = false;\n } // Bar/Area chart should be 0-based if all positive|negative\n\n\n if (isZeroBased) {\n if (isAllPositive) {\n yDomainMin = 0;\n }\n\n if (isAllNegative) {\n yDomainMax = 0;\n }\n }\n\n domainLength = Math.abs(yDomainMax - yDomainMin);\n padding = padding_top = padding_bottom = domainLength * 0.1;\n\n if (typeof center !== 'undefined') {\n yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n yDomainMax = center + yDomainAbs;\n yDomainMin = center - yDomainAbs;\n } // add padding for data label\n\n\n if (showHorizontalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n diff = diffDomain($$.y.range());\n ratio = [lengths[0] / diff, lengths[1] / diff];\n padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n } else if (showVerticalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n }\n\n if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n }\n\n if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n } // Bar/Area chart should be 0-based if all positive|negative\n\n\n if (isZeroBased) {\n if (isAllPositive) {\n padding_bottom = yDomainMin;\n }\n\n if (isAllNegative) {\n padding_top = -yDomainMax;\n }\n }\n\n domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n return isInverted ? domain.reverse() : domain;\n };\n\n ChartInternal.prototype.getXDomainMin = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_min) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min : $$.d3.min(targets, function (t) {\n return $$.d3.min(t.values, function (v) {\n return v.x;\n });\n });\n };\n\n ChartInternal.prototype.getXDomainMax = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_max) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max : $$.d3.max(targets, function (t) {\n return $$.d3.max(t.values, function (v) {\n return v.x;\n });\n });\n };\n\n ChartInternal.prototype.getXDomainPadding = function (domain) {\n var $$ = this,\n config = $$.config,\n diff = domain[1] - domain[0],\n maxDataCount,\n padding,\n paddingLeft,\n paddingRight;\n\n if ($$.isCategorized()) {\n padding = 0;\n } else if ($$.hasType('bar')) {\n maxDataCount = $$.getMaxDataCount();\n padding = maxDataCount > 1 ? diff / (maxDataCount - 1) / 2 : 0.5;\n } else {\n padding = diff * 0.01;\n }\n\n if (_typeof(config.axis_x_padding) === 'object' && notEmpty(config.axis_x_padding)) {\n paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n } else if (typeof config.axis_x_padding === 'number') {\n paddingLeft = paddingRight = config.axis_x_padding;\n } else {\n paddingLeft = paddingRight = padding;\n }\n\n return {\n left: paddingLeft,\n right: paddingRight\n };\n };\n\n ChartInternal.prototype.getXDomain = function (targets) {\n var $$ = this,\n xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n firstX = xDomain[0],\n lastX = xDomain[1],\n padding = $$.getXDomainPadding(xDomain),\n min = 0,\n max = 0; // show center of x domain if min and max are the same\n\n if (firstX - lastX === 0 && !$$.isCategorized()) {\n if ($$.isTimeSeries()) {\n firstX = new Date(firstX.getTime() * 0.5);\n lastX = new Date(lastX.getTime() * 1.5);\n } else {\n firstX = firstX === 0 ? 1 : firstX * 0.5;\n lastX = lastX === 0 ? -1 : lastX * 1.5;\n }\n }\n\n if (firstX || firstX === 0) {\n min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n }\n\n if (lastX || lastX === 0) {\n max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n }\n\n return [min, max];\n };\n\n ChartInternal.prototype.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n var $$ = this,\n config = $$.config;\n\n if (withUpdateOrgXDomain) {\n $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n $$.orgXDomain = $$.x.domain();\n\n if (config.zoom_enabled) {\n $$.zoom.update();\n }\n\n $$.subX.domain($$.x.domain());\n\n if ($$.brush) {\n $$.brush.updateScale($$.subX);\n }\n }\n\n if (withUpdateXDomain) {\n $$.x.domain(domain ? domain : !$$.brush || $$.brush.empty() ? $$.orgXDomain : $$.brush.selectionAsValue());\n } // Trim domain when too big by zoom mousemove event\n\n\n if (withTrim) {\n $$.x.domain($$.trimXDomain($$.x.orgDomain()));\n }\n\n return $$.x.domain();\n };\n\n ChartInternal.prototype.trimXDomain = function (domain) {\n var zoomDomain = this.getZoomDomain(),\n min = zoomDomain[0],\n max = zoomDomain[1];\n\n if (domain[0] <= min) {\n domain[1] = +domain[1] + (min - domain[0]);\n domain[0] = min;\n }\n\n if (max <= domain[1]) {\n domain[0] = +domain[0] - (domain[1] - max);\n domain[1] = max;\n }\n\n return domain;\n };\n\n ChartInternal.prototype.drag = function (mouse) {\n var $$ = this,\n config = $$.config,\n main = $$.main,\n d3 = $$.d3;\n var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n if (!config.data_selection_multiple) {\n return;\n } // skip when single selection because drag is used for multiple selection\n\n\n sx = $$.dragStart[0];\n sy = $$.dragStart[1];\n mx = mouse[0];\n my = mouse[1];\n minX = Math.min(sx, mx);\n maxX = Math.max(sx, mx);\n minY = config.data_selection_grouped ? $$.margin.top : Math.min(sy, my);\n maxY = config.data_selection_grouped ? $$.height : Math.max(sy, my);\n main.select('.' + CLASS.dragarea).attr('x', minX).attr('y', minY).attr('width', maxX - minX).attr('height', maxY - minY); // TODO: binary search when multiple xs\n\n main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).filter(function (d) {\n return config.data_selection_isselectable(d);\n }).each(function (d, i) {\n var shape = d3.select(this),\n isSelected = shape.classed(CLASS.SELECTED),\n isIncluded = shape.classed(CLASS.INCLUDED),\n _x,\n _y,\n _w,\n _h,\n toggle,\n isWithin = false,\n box;\n\n if (shape.classed(CLASS.circle)) {\n _x = shape.attr(\"cx\") * 1;\n _y = shape.attr(\"cy\") * 1;\n toggle = $$.togglePoint;\n isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n } else if (shape.classed(CLASS.bar)) {\n box = getPathBox(this);\n _x = box.x;\n _y = box.y;\n _w = box.width;\n _h = box.height;\n toggle = $$.togglePath;\n isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n } else {\n // line/area selection not supported yet\n return;\n }\n\n if (isWithin ^ isIncluded) {\n shape.classed(CLASS.INCLUDED, !isIncluded); // TODO: included/unincluded callback here\n\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle.call($$, !isSelected, shape, d, i);\n }\n });\n };\n\n ChartInternal.prototype.dragstart = function (mouse) {\n var $$ = this,\n config = $$.config;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n $$.dragStart = mouse;\n $$.main.select('.' + CLASS.chart).append('rect').attr('class', CLASS.dragarea).style('opacity', 0.1);\n $$.dragging = true;\n };\n\n ChartInternal.prototype.dragend = function () {\n var $$ = this,\n config = $$.config;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n $$.main.select('.' + CLASS.dragarea).transition().duration(100).style('opacity', 0).remove();\n $$.main.selectAll('.' + CLASS.shape).classed(CLASS.INCLUDED, false);\n $$.dragging = false;\n };\n\n ChartInternal.prototype.getYFormat = function (forArc) {\n var $$ = this,\n formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n return function (v, ratio, id) {\n var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n return format.call($$, v, ratio);\n };\n };\n\n ChartInternal.prototype.yFormat = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n\n ChartInternal.prototype.y2Format = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n\n ChartInternal.prototype.defaultValueFormat = function (v) {\n return isValue(v) ? +v : \"\";\n };\n\n ChartInternal.prototype.defaultArcValueFormat = function (v, ratio) {\n return (ratio * 100).toFixed(1) + '%';\n };\n\n ChartInternal.prototype.dataLabelFormat = function (targetId) {\n var $$ = this,\n data_labels = $$.config.data_labels,\n format,\n defaultFormat = function defaultFormat(v) {\n return isValue(v) ? +v : \"\";\n }; // find format according to axis id\n\n\n if (typeof data_labels.format === 'function') {\n format = data_labels.format;\n } else if (_typeof(data_labels.format) === 'object') {\n if (data_labels.format[targetId]) {\n format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n } else {\n format = function format() {\n return '';\n };\n }\n } else {\n format = defaultFormat;\n }\n\n return format;\n };\n\n ChartInternal.prototype.initGrid = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n $$.grid = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid);\n\n if (config.grid_x_show) {\n $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n }\n\n if (config.grid_y_show) {\n $$.grid.append('g').attr('class', CLASS.ygrids);\n }\n\n if (config.grid_focus_show) {\n $$.grid.append('g').attr(\"class\", CLASS.xgridFocus).append('line').attr('class', CLASS.xgridFocus);\n }\n\n $$.xgrid = d3.selectAll([]);\n\n if (!config.grid_lines_front) {\n $$.initGridLines();\n }\n };\n\n ChartInternal.prototype.initGridLines = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.gridLines = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n $$.xgridLines = d3.selectAll([]);\n };\n\n ChartInternal.prototype.updateXGrid = function (withoutUpdate) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n $$.xgridAttr = config.axis_rotated ? {\n 'x1': 0,\n 'x2': $$.width,\n 'y1': function y1(d) {\n return $$.x(d) - tickOffset;\n },\n 'y2': function y2(d) {\n return $$.x(d) - tickOffset;\n }\n } : {\n 'x1': function x1(d) {\n return $$.x(d) + tickOffset;\n },\n 'x2': function x2(d) {\n return $$.x(d) + tickOffset;\n },\n 'y1': 0,\n 'y2': $$.height\n };\n\n $$.xgridAttr.opacity = function () {\n var pos = +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1');\n return pos === (config.axis_rotated ? $$.height : 0) ? 0 : 1;\n };\n\n var xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid).data(xgridData);\n var xgridEnter = xgrid.enter().append('line').attr(\"class\", CLASS.xgrid).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", 0);\n $$.xgrid = xgridEnter.merge(xgrid);\n\n if (!withoutUpdate) {\n $$.xgrid.attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n }\n\n xgrid.exit().remove();\n };\n\n ChartInternal.prototype.updateYGrid = function () {\n var $$ = this,\n config = $$.config,\n gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n var ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid).data(gridValues);\n var ygridEnter = ygrid.enter().append('line') // TODO: x1, x2, y1, y2, opacity need to be set here maybe\n .attr('class', CLASS.ygrid);\n $$.ygrid = ygridEnter.merge(ygrid);\n $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0).attr(\"x2\", config.axis_rotated ? $$.y : $$.width).attr(\"y1\", config.axis_rotated ? 0 : $$.y).attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n ygrid.exit().remove();\n $$.smoothLines($$.ygrid, 'grid');\n };\n\n ChartInternal.prototype.gridTextAnchor = function (d) {\n return d.position ? d.position : \"end\";\n };\n\n ChartInternal.prototype.gridTextDx = function (d) {\n return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n };\n\n ChartInternal.prototype.xGridTextX = function (d) {\n return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n };\n\n ChartInternal.prototype.yGridTextX = function (d) {\n return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n };\n\n ChartInternal.prototype.updateGrid = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n xgridLine,\n xgridLineEnter,\n ygridLine,\n ygridLineEnter,\n xv = $$.xv.bind($$),\n yv = $$.yv.bind($$),\n xGridTextX = $$.xGridTextX.bind($$),\n yGridTextX = $$.yGridTextX.bind($$); // hide if arc type\n\n $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n\n if (config.grid_x_show) {\n $$.updateXGrid();\n }\n\n xgridLine = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine).data(config.grid_x_lines); // enter\n\n xgridLineEnter = xgridLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n xgridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 0);\n xgridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").attr(\"x\", config.axis_rotated ? yGridTextX : xGridTextX).attr(\"y\", xv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0); // udpate\n\n $$.xgridLines = xgridLineEnter.merge(xgridLine); // done in d3.transition() of the end of this function\n // exit\n\n xgridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Y-Grid\n\n if (config.grid_y_show) {\n $$.updateYGrid();\n }\n\n ygridLine = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine).data(config.grid_y_lines); // enter\n\n ygridLineEnter = ygridLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n ygridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 0);\n ygridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").attr(\"x\", config.axis_rotated ? xGridTextX : yGridTextX).attr(\"y\", yv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0); // update\n\n $$.ygridLines = ygridLineEnter.merge(ygridLine);\n $$.ygridLines.select('line').transition().duration(duration).attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 1);\n $$.ygridLines.select('text').transition().duration(duration).attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$)).attr(\"y\", yv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1); // exit\n\n ygridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.redrawGrid = function (withTransition, transition) {\n var $$ = this,\n config = $$.config,\n xv = $$.xv.bind($$),\n lines = $$.xgridLines.select('line'),\n texts = $$.xgridLines.select('text');\n return [(withTransition ? lines.transition(transition) : lines).attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 1), (withTransition ? texts.transition(transition) : texts).attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$)).attr(\"y\", xv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.showXGridFocus = function (selectedData) {\n var $$ = this,\n config = $$.config,\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n xx = $$.xx.bind($$);\n\n if (!config.tooltip_show) {\n return;\n } // Hide when scatter plot exists\n\n\n if ($$.hasType('scatter') || $$.hasType('stanford') || $$.hasArcType()) {\n return;\n }\n\n focusEl.style(\"visibility\", \"visible\").data([dataToShow[0]]).attr(config.axis_rotated ? 'y1' : 'x1', xx).attr(config.axis_rotated ? 'y2' : 'x2', xx);\n $$.smoothLines(focusEl, 'grid');\n };\n\n ChartInternal.prototype.hideXGridFocus = function () {\n this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n };\n\n ChartInternal.prototype.updateXgridFocus = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('line.' + CLASS.xgridFocus).attr(\"x1\", config.axis_rotated ? 0 : -10).attr(\"x2\", config.axis_rotated ? $$.width : -10).attr(\"y1\", config.axis_rotated ? -10 : 0).attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n };\n\n ChartInternal.prototype.generateGridData = function (type, scale) {\n var $$ = this,\n gridData = [],\n xDomain,\n firstYear,\n lastYear,\n i,\n tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n\n if (type === 'year') {\n xDomain = $$.getXDomain();\n firstYear = xDomain[0].getFullYear();\n lastYear = xDomain[1].getFullYear();\n\n for (i = firstYear; i <= lastYear; i++) {\n gridData.push(new Date(i + '-01-01 00:00:00'));\n }\n } else {\n gridData = scale.ticks(10);\n\n if (gridData.length > tickNum) {\n // use only int\n gridData = gridData.filter(function (d) {\n return (\"\" + d).indexOf('.') < 0;\n });\n }\n }\n\n return gridData;\n };\n\n ChartInternal.prototype.getGridFilterToRemove = function (params) {\n return params ? function (line) {\n var found = false;\n [].concat(params).forEach(function (param) {\n if ('value' in param && line.value === param.value || 'class' in param && line['class'] === param['class']) {\n found = true;\n }\n });\n return found;\n } : function () {\n return true;\n };\n };\n\n ChartInternal.prototype.removeGridLines = function (params, forX) {\n var $$ = this,\n config = $$.config,\n toRemove = $$.getGridFilterToRemove(params),\n toShow = function toShow(line) {\n return !toRemove(line);\n },\n classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n\n $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove).transition().duration(config.transition_duration).style('opacity', 0).remove();\n\n if (forX) {\n config.grid_x_lines = config.grid_x_lines.filter(toShow);\n } else {\n config.grid_y_lines = config.grid_y_lines.filter(toShow);\n }\n };\n\n ChartInternal.prototype.initEventRect = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.eventRects).style('fill-opacity', 0);\n $$.eventRect = $$.main.select('.' + CLASS.eventRects).append('rect').attr('class', CLASS.eventRect); // event rect handle zoom event as well\n\n if (config.zoom_enabled && $$.zoom) {\n $$.eventRect.call($$.zoom).on(\"dblclick.zoom\", null);\n\n if (config.zoom_initialRange) {\n // WORKAROUND: Add transition to apply transform immediately when no subchart\n $$.eventRect.transition().duration(0).call($$.zoom.transform, $$.zoomTransform(config.zoom_initialRange));\n }\n }\n };\n\n ChartInternal.prototype.redrawEventRect = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n x,\n y,\n w,\n h; // TODO: rotated not supported yet\n\n x = 0;\n y = 0;\n w = $$.width;\n h = $$.height;\n\n function mouseout() {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n $$.hideXGridFocus();\n $$.hideTooltip();\n $$.unexpandCircles();\n $$.unexpandBars();\n } // rects for mouseover\n\n\n $$.main.select('.' + CLASS.eventRects).style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null);\n $$.eventRect.attr('x', x).attr('y', y).attr('width', w).attr('height', h).on('mouseout', config.interaction_enabled ? function () {\n if (!config) {\n return;\n } // chart is destroyed\n\n\n if ($$.hasArcType()) {\n return;\n }\n\n mouseout();\n } : null).on('mousemove', config.interaction_enabled ? function () {\n var targetsToShow, mouse, closest, sameXData, selectedData;\n\n if ($$.dragging) {\n return;\n } // do nothing when dragging\n\n\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n config.data_onmouseout.call($$.api, $$.mouseover);\n $$.mouseover = undefined;\n }\n\n if (!closest) {\n mouseout();\n return;\n }\n\n if ($$.isScatterOrStanfordType(closest) || !config.tooltip_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n } // show tooltip when cursor is close to some point\n\n\n selectedData = sameXData.map(function (d) {\n return $$.addName(d);\n });\n $$.showTooltip(selectedData, this); // expand points\n\n if (config.point_focus_expand_enabled) {\n $$.unexpandCircles();\n selectedData.forEach(function (d) {\n $$.expandCircles(d.index, d.id, false);\n });\n }\n\n $$.expandBars(closest.index, closest.id, true); // Show xgrid focus line\n\n $$.showXGridFocus(selectedData); // Show cursor as pointer if point is close to mouse position\n\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n\n if (!$$.mouseover) {\n config.data_onmouseover.call($$.api, closest);\n $$.mouseover = closest;\n }\n }\n } : null).on('click', config.interaction_enabled ? function () {\n var targetsToShow, mouse, closest, sameXData;\n\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if (!closest) {\n return;\n } // select if selection enabled\n\n\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n if ($$.isScatterOrStanfordType(closest) || !config.data_selection_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n }\n\n sameXData.forEach(function (d) {\n $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.shape + '-' + d.index).each(function () {\n if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n $$.toggleShape(this, d, d.index);\n config.data_onclick.call($$.api, d, this);\n }\n });\n });\n }\n } : null).call(config.interaction_enabled && config.data_selection_draggable && $$.drag ? d3.drag().on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('start', function () {\n $$.dragstart(d3.mouse(this));\n }).on('end', function () {\n $$.dragend();\n }) : function () {});\n };\n\n ChartInternal.prototype.getMousePosition = function (data) {\n var $$ = this;\n return [$$.x(data.x), $$.getYScale(data.id)(data.value)];\n };\n\n ChartInternal.prototype.dispatchEvent = function (type, mouse) {\n var $$ = this,\n selector = '.' + CLASS.eventRect,\n eventRect = $$.main.select(selector).node(),\n box = eventRect.getBoundingClientRect(),\n x = box.left + (mouse ? mouse[0] : 0),\n y = box.top + (mouse ? mouse[1] : 0),\n event = document.createEvent(\"MouseEvents\");\n event.initMouseEvent(type, true, true, window, 0, x, y, x, y, false, false, false, false, 0, null);\n eventRect.dispatchEvent(event);\n };\n\n ChartInternal.prototype.initLegend = function () {\n var $$ = this;\n $$.legendItemTextBox = {};\n $$.legendHasRendered = false;\n $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n\n if (!$$.config.legend_show) {\n $$.legend.style('visibility', 'hidden');\n $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n return;\n } // MEMO: call here to update legend box and tranlate for all\n // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n\n\n $$.updateLegendWithDefaults();\n };\n\n ChartInternal.prototype.updateLegendWithDefaults = function () {\n var $$ = this;\n $$.updateLegend($$.mapToIds($$.data.targets), {\n withTransform: false,\n withTransitionForTransform: false,\n withTransition: false\n });\n };\n\n ChartInternal.prototype.updateSizeForLegend = function (legendHeight, legendWidth) {\n var $$ = this,\n config = $$.config,\n insetLegendPosition = {\n top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n };\n $$.margin3 = {\n top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n right: NaN,\n bottom: 0,\n left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n };\n };\n\n ChartInternal.prototype.transformLegend = function (withTransition) {\n var $$ = this;\n (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n };\n\n ChartInternal.prototype.updateLegendStep = function (step) {\n this.legendStep = step;\n };\n\n ChartInternal.prototype.updateLegendItemWidth = function (w) {\n this.legendItemWidth = w;\n };\n\n ChartInternal.prototype.updateLegendItemHeight = function (h) {\n this.legendItemHeight = h;\n };\n\n ChartInternal.prototype.getLegendWidth = function () {\n var $$ = this;\n return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n };\n\n ChartInternal.prototype.getLegendHeight = function () {\n var $$ = this,\n h = 0;\n\n if ($$.config.legend_show) {\n if ($$.isLegendRight) {\n h = $$.currentHeight;\n } else {\n h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n }\n }\n\n return h;\n };\n\n ChartInternal.prototype.opacityForLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n };\n\n ChartInternal.prototype.opacityForUnfocusedLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n };\n\n ChartInternal.prototype.toggleFocusLegend = function (targetIds, focus) {\n var $$ = this;\n targetIds = $$.mapToTargetIds(targetIds);\n $$.legend.selectAll('.' + CLASS.legendItem).filter(function (id) {\n return targetIds.indexOf(id) >= 0;\n }).classed(CLASS.legendItemFocused, focus).transition().duration(100).style('opacity', function () {\n var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n return opacity.call($$, $$.d3.select(this));\n });\n };\n\n ChartInternal.prototype.revertLegend = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemFocused, false).transition().duration(100).style('opacity', function () {\n return $$.opacityForLegend(d3.select(this));\n });\n };\n\n ChartInternal.prototype.showLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n\n if (!config.legend_show) {\n config.legend_show = true;\n $$.legend.style('visibility', 'visible');\n\n if (!$$.legendHasRendered) {\n $$.updateLegendWithDefaults();\n }\n }\n\n $$.removeHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('visibility', 'visible').transition().style('opacity', function () {\n return $$.opacityForLegend($$.d3.select(this));\n });\n };\n\n ChartInternal.prototype.hideLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n\n if (config.legend_show && isEmpty(targetIds)) {\n config.legend_show = false;\n $$.legend.style('visibility', 'hidden');\n }\n\n $$.addHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('opacity', 0).style('visibility', 'hidden');\n };\n\n ChartInternal.prototype.clearLegendItemTextBoxCache = function () {\n this.legendItemTextBox = {};\n };\n\n ChartInternal.prototype.updateLegend = function (targetIds, options, transitions) {\n var $$ = this,\n config = $$.config;\n var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n var paddingTop = 4,\n paddingRight = 10,\n maxWidth = 0,\n maxHeight = 0,\n posMin = 10,\n tileWidth = config.legend_item_tile_width + 5;\n var l,\n totalLength = 0,\n offsets = {},\n widths = {},\n heights = {},\n margins = [0],\n steps = {},\n step = 0;\n var withTransition, withTransitionForTransform;\n var texts, rects, tiles, background; // Skip elements when their name is set to null\n\n targetIds = targetIds.filter(function (id) {\n return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n });\n options = options || {};\n withTransition = getOption(options, \"withTransition\", true);\n withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n function getTextBox(textElement, id) {\n if (!$$.legendItemTextBox[id]) {\n $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n }\n\n return $$.legendItemTextBox[id];\n }\n\n function updatePositions(textElement, id, index) {\n var reset = index === 0,\n isLast = index === targetIds.length - 1,\n box = getTextBox(textElement, id),\n itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n itemHeight = box.height + paddingTop,\n itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n margin,\n maxLength; // MEMO: care about condifion of step, totalLength\n\n function updateValues(id, withoutStep) {\n if (!withoutStep) {\n margin = (areaLength - totalLength - itemLength) / 2;\n\n if (margin < posMin) {\n margin = (areaLength - itemLength) / 2;\n totalLength = 0;\n step++;\n }\n }\n\n steps[id] = step;\n margins[step] = $$.isLegendInset ? 10 : margin;\n offsets[id] = totalLength;\n totalLength += itemLength;\n }\n\n if (reset) {\n totalLength = 0;\n step = 0;\n maxWidth = 0;\n maxHeight = 0;\n }\n\n if (config.legend_show && !$$.isLegendToShow(id)) {\n widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n return;\n }\n\n widths[id] = itemWidth;\n heights[id] = itemHeight;\n\n if (!maxWidth || itemWidth >= maxWidth) {\n maxWidth = itemWidth;\n }\n\n if (!maxHeight || itemHeight >= maxHeight) {\n maxHeight = itemHeight;\n }\n\n maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n if (config.legend_equally) {\n Object.keys(widths).forEach(function (id) {\n widths[id] = maxWidth;\n });\n Object.keys(heights).forEach(function (id) {\n heights[id] = maxHeight;\n });\n margin = (areaLength - maxLength * targetIds.length) / 2;\n\n if (margin < posMin) {\n totalLength = 0;\n step = 0;\n targetIds.forEach(function (id) {\n updateValues(id);\n });\n } else {\n updateValues(id, true);\n }\n } else {\n updateValues(id);\n }\n }\n\n if ($$.isLegendInset) {\n step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n $$.updateLegendStep(step);\n }\n\n if ($$.isLegendRight) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id];\n };\n\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else if ($$.isLegendInset) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id] + 10;\n };\n\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else {\n xForLegend = function xForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n\n yForLegend = function yForLegend(id) {\n return maxHeight * steps[id];\n };\n }\n\n xForLegendText = function xForLegendText(id, i) {\n return xForLegend(id, i) + 4 + config.legend_item_tile_width;\n };\n\n yForLegendText = function yForLegendText(id, i) {\n return yForLegend(id, i) + 9;\n };\n\n xForLegendRect = function xForLegendRect(id, i) {\n return xForLegend(id, i);\n };\n\n yForLegendRect = function yForLegendRect(id, i) {\n return yForLegend(id, i) - 5;\n };\n\n x1ForLegendTile = function x1ForLegendTile(id, i) {\n return xForLegend(id, i) - 2;\n };\n\n x2ForLegendTile = function x2ForLegendTile(id, i) {\n return xForLegend(id, i) - 2 + config.legend_item_tile_width;\n };\n\n yForLegendTile = function yForLegendTile(id, i) {\n return yForLegend(id, i) + 4;\n }; // Define g for legend area\n\n\n l = $$.legend.selectAll('.' + CLASS.legendItem).data(targetIds).enter().append('g').attr('class', function (id) {\n return $$.generateClass(CLASS.legendItem, id);\n }).style('visibility', function (id) {\n return $$.isLegendToShow(id) ? 'visible' : 'hidden';\n }).style('cursor', 'pointer').on('click', function (id) {\n if (config.legend_item_onclick) {\n config.legend_item_onclick.call($$, id);\n } else {\n if ($$.d3.event.altKey) {\n $$.api.hide();\n $$.api.show(id);\n } else {\n $$.api.toggle(id);\n $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n }\n }\n }).on('mouseover', function (id) {\n if (config.legend_item_onmouseover) {\n config.legend_item_onmouseover.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n\n if (!$$.transiting && $$.isTargetToShow(id)) {\n $$.api.focus(id);\n }\n }\n }).on('mouseout', function (id) {\n if (config.legend_item_onmouseout) {\n config.legend_item_onmouseout.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n $$.api.revert();\n }\n });\n l.append('text').text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }).each(function (id, i) {\n updatePositions(this, id, i);\n }).style(\"pointer-events\", \"none\").attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n l.append('rect').attr(\"class\", CLASS.legendItemEvent).style('fill-opacity', 0).attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n l.append('line').attr('class', CLASS.legendItemTile).style('stroke', $$.color).style(\"pointer-events\", \"none\").attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200).attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200).attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('stroke-width', config.legend_item_tile_height); // Set background for inset legend\n\n background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n\n if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n background = $$.legend.insert('g', '.' + CLASS.legendItem).attr(\"class\", CLASS.legendBackground).append('rect');\n }\n\n texts = $$.legend.selectAll('text').data(targetIds).text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }) // MEMO: needed for update\n .each(function (id, i) {\n updatePositions(this, id, i);\n });\n (withTransition ? texts.transition() : texts).attr('x', xForLegendText).attr('y', yForLegendText);\n rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent).data(targetIds);\n (withTransition ? rects.transition() : rects).attr('width', function (id) {\n return widths[id];\n }).attr('height', function (id) {\n return heights[id];\n }).attr('x', xForLegendRect).attr('y', yForLegendRect);\n tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile).data(targetIds);\n (withTransition ? tiles.transition() : tiles).style('stroke', $$.levelColor ? function (id) {\n return $$.levelColor($$.cache[id].values[0].value);\n } : $$.color).attr('x1', x1ForLegendTile).attr('y1', yForLegendTile).attr('x2', x2ForLegendTile).attr('y2', yForLegendTile);\n\n if (background) {\n (withTransition ? background.transition() : background).attr('height', $$.getLegendHeight() - 12).attr('width', maxWidth * (step + 1) + 10);\n } // toggle legend state\n\n\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemHidden, function (id) {\n return !$$.isTargetToShow(id);\n }); // Update all to reflect change of legend\n\n $$.updateLegendItemWidth(maxWidth);\n $$.updateLegendItemHeight(maxHeight);\n $$.updateLegendStep(step); // Update size and scale\n\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize(); // Update g positions\n\n $$.transformAll(withTransitionForTransform, transitions);\n $$.legendHasRendered = true;\n };\n\n ChartInternal.prototype.initRegion = function () {\n var $$ = this;\n $$.region = $$.main.append('g').attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.regions);\n };\n\n ChartInternal.prototype.updateRegion = function (duration) {\n var $$ = this,\n config = $$.config; // hide if arc type\n\n $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n var mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region).data(config.regions);\n var mainRegionEnter = mainRegion.enter().append('rect').attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", 0);\n $$.mainRegion = mainRegionEnter.merge(mainRegion).attr('class', $$.classRegion.bind($$));\n mainRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.redrawRegion = function (withTransition, transition) {\n var $$ = this,\n regions = $$.mainRegion;\n return [(withTransition ? regions.transition(transition) : regions).attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", function (d) {\n return isValue(d.opacity) ? d.opacity : 0.1;\n })];\n };\n\n ChartInternal.prototype.regionX = function (d) {\n var $$ = this,\n config = $$.config,\n xPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n xPos = config.axis_rotated ? 'start' in d ? yScale(d.start) : 0 : 0;\n } else {\n xPos = config.axis_rotated ? 0 : 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0;\n }\n\n return xPos;\n };\n\n ChartInternal.prototype.regionY = function (d) {\n var $$ = this,\n config = $$.config,\n yPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n yPos = config.axis_rotated ? 0 : 'end' in d ? yScale(d.end) : 0;\n } else {\n yPos = config.axis_rotated ? 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0 : 0;\n }\n\n return yPos;\n };\n\n ChartInternal.prototype.regionWidth = function (d) {\n var $$ = this,\n config = $$.config,\n start = $$.regionX(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? 'end' in d ? yScale(d.end) : $$.width : $$.width;\n } else {\n end = config.axis_rotated ? $$.width : 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width;\n }\n\n return end < start ? 0 : end - start;\n };\n\n ChartInternal.prototype.regionHeight = function (d) {\n var $$ = this,\n config = $$.config,\n start = this.regionY(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? $$.height : 'start' in d ? yScale(d.start) : $$.height;\n } else {\n end = config.axis_rotated ? 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height : $$.height;\n }\n\n return end < start ? 0 : end - start;\n };\n\n ChartInternal.prototype.isRegionOnX = function (d) {\n return !d.axis || d.axis === 'x';\n };\n\n ChartInternal.prototype.getScale = function (min, max, forTimeseries) {\n return (forTimeseries ? this.d3.scaleTime() : this.d3.scaleLinear()).range([min, max]);\n };\n\n ChartInternal.prototype.getX = function (min, max, domain, offset) {\n var $$ = this,\n scale = $$.getScale(min, max, $$.isTimeSeries()),\n _scale = domain ? scale.domain(domain) : scale,\n key; // Define customized scale if categorized axis\n\n\n if ($$.isCategorized()) {\n offset = offset || function () {\n return 0;\n };\n\n scale = function scale(d, raw) {\n var v = _scale(d) + offset(d);\n return raw ? v : Math.ceil(v);\n };\n } else {\n scale = function scale(d, raw) {\n var v = _scale(d);\n\n return raw ? v : Math.ceil(v);\n };\n } // define functions\n\n\n for (key in _scale) {\n scale[key] = _scale[key];\n }\n\n scale.orgDomain = function () {\n return _scale.domain();\n }; // define custom domain() for categorized axis\n\n\n if ($$.isCategorized()) {\n scale.domain = function (domain) {\n if (!arguments.length) {\n domain = this.orgDomain();\n return [domain[0], domain[1] + 1];\n }\n\n _scale.domain(domain);\n\n return scale;\n };\n }\n\n return scale;\n };\n\n ChartInternal.prototype.getY = function (min, max, domain) {\n var scale = this.getScale(min, max, this.isTimeSeriesY());\n\n if (domain) {\n scale.domain(domain);\n }\n\n return scale;\n };\n\n ChartInternal.prototype.getYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n };\n\n ChartInternal.prototype.getSubYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n };\n\n ChartInternal.prototype.updateScales = function () {\n var $$ = this,\n config = $$.config,\n forInit = !$$.x; // update edges\n\n $$.xMin = config.axis_rotated ? 1 : 0;\n $$.xMax = config.axis_rotated ? $$.height : $$.width;\n $$.yMin = config.axis_rotated ? 0 : $$.height;\n $$.yMax = config.axis_rotated ? $$.width : 1;\n $$.subXMin = $$.xMin;\n $$.subXMax = $$.xMax;\n $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n $$.subYMax = config.axis_rotated ? $$.width2 : 1; // update scales\n\n $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () {\n return $$.xAxis.tickOffset();\n });\n $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) {\n return d % 1 ? 0 : $$.subXAxis.tickOffset();\n });\n $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain()); // update axes\n\n $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer); // Set initialized scales to brush and zoom\n\n if (!forInit) {\n if ($$.brush) {\n $$.brush.updateScale($$.subX);\n }\n } // update for arc\n\n\n if ($$.updateArc) {\n $$.updateArc();\n }\n };\n\n ChartInternal.prototype.selectPoint = function (target, d, i) {\n var $$ = this,\n config = $$.config,\n cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n r = $$.pointSelectR.bind($$);\n config.data_onselected.call($$.api, d, target.node()); // add selected-circle on low layer g\n\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).data([d]).enter().append('circle').attr(\"class\", function () {\n return $$.generateClass(CLASS.selectedCircle, i);\n }).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"stroke\", function () {\n return $$.color(d);\n }).attr(\"r\", function (d) {\n return $$.pointSelectR(d) * 1.4;\n }).transition().duration(100).attr(\"r\", r);\n };\n\n ChartInternal.prototype.unselectPoint = function (target, d, i) {\n var $$ = this;\n $$.config.data_onunselected.call($$.api, d, target.node()); // remove selected-circle from low layer g\n\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).transition().duration(100).attr('r', 0).remove();\n };\n\n ChartInternal.prototype.togglePoint = function (selected, target, d, i) {\n selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n };\n\n ChartInternal.prototype.selectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onselected.call($$, d, target.node());\n\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.d3.rgb($$.color(d)).brighter(0.75);\n });\n }\n };\n\n ChartInternal.prototype.unselectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onunselected.call($$, d, target.node());\n\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.color(d);\n });\n }\n };\n\n ChartInternal.prototype.togglePath = function (selected, target, d, i) {\n selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n };\n\n ChartInternal.prototype.getToggle = function (that, d) {\n var $$ = this,\n toggle;\n\n if (that.nodeName === 'circle') {\n if ($$.isStepType(d)) {\n // circle is hidden in step chart, so treat as within the click area\n toggle = function toggle() {}; // TODO: how to select step chart?\n\n } else {\n toggle = $$.togglePoint;\n }\n } else if (that.nodeName === 'path') {\n toggle = $$.togglePath;\n }\n\n return toggle;\n };\n\n ChartInternal.prototype.toggleShape = function (that, d, i) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n shape = d3.select(that),\n isSelected = shape.classed(CLASS.SELECTED),\n toggle = $$.getToggle(that, d).bind($$);\n\n if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n if (!config.data_selection_multiple) {\n $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this);\n\n if (shape.classed(CLASS.SELECTED)) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n });\n }\n\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle(!isSelected, shape, d, i);\n }\n };\n\n ChartInternal.prototype.initBar = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n };\n\n ChartInternal.prototype.updateTargetsForBar = function (targets) {\n var $$ = this,\n config = $$.config,\n mainBars,\n mainBarEnter,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainBars = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', function (d) {\n return classChartBar(d) + classFocus(d);\n });\n mainBarEnter = mainBars.enter().append('g').attr('class', classChartBar).style(\"pointer-events\", \"none\"); // Bars for each data\n\n mainBarEnter.append('g').attr(\"class\", classBars).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n };\n\n ChartInternal.prototype.updateBar = function (durationForExit) {\n var $$ = this,\n barData = $$.barData.bind($$),\n classBar = $$.classBar.bind($$),\n initialOpacity = $$.initialOpacity.bind($$),\n color = function color(d) {\n return $$.color(d.id);\n };\n\n var mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data(barData);\n var mainBarEnter = mainBar.enter().append('path').attr(\"class\", classBar).style(\"stroke\", color).style(\"fill\", color);\n $$.mainBar = mainBarEnter.merge(mainBar).style(\"opacity\", initialOpacity);\n mainBar.exit().transition().duration(durationForExit).style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawBar = function (drawBar, withTransition, transition) {\n return [(withTransition ? this.mainBar.transition(transition) : this.mainBar).attr('d', drawBar).style(\"stroke\", this.color).style(\"fill\", this.color).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.getBarW = function (axis, barTargetsNum) {\n var $$ = this,\n config = $$.config,\n w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? axis.tickInterval() * config.bar_width_ratio / barTargetsNum : 0;\n return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n };\n\n ChartInternal.prototype.getBars = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n };\n\n ChartInternal.prototype.expandBars = function (i, id, reset) {\n var $$ = this;\n\n if (reset) {\n $$.unexpandBars();\n }\n\n $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n };\n\n ChartInternal.prototype.unexpandBars = function (i) {\n var $$ = this;\n $$.getBars(i).classed(CLASS.EXPANDED, false);\n };\n\n ChartInternal.prototype.generateDrawBar = function (barIndices, isSub) {\n var $$ = this,\n config = $$.config,\n getPoints = $$.generateGetBarPoints(barIndices, isSub);\n return function (d, i) {\n // 4 points that make a bar\n var points = getPoints(d, i); // switch points if axis is rotated, not applicable for sub chart\n\n var indexX = config.axis_rotated ? 1 : 0;\n var indexY = config.axis_rotated ? 0 : 1;\n var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' + 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' + 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' + 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' + 'z';\n return path;\n };\n };\n\n ChartInternal.prototype.generateGetBarPoints = function (barIndices, isSub) {\n var $$ = this,\n axis = isSub ? $$.subXAxis : $$.xAxis,\n barTargetsNum = barIndices.__max__ + 1,\n barW = $$.getBarW(axis, barTargetsNum),\n barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n barY = $$.getShapeY(!!isSub),\n barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n barSpaceOffset = barW * ($$.config.bar_space / 2),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = barOffset(d, i) || y0,\n // offset is for stacked bar chart\n posX = barX(d),\n posY = barY(d); // fix posY not to overflow opposite quadrant\n\n if ($$.config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 4 points that make a bar\n\n\n return [[posX + barSpaceOffset, offset], [posX + barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, offset]];\n };\n };\n\n ChartInternal.prototype.isWithinBar = function (mouse, that) {\n var box = that.getBoundingClientRect(),\n seg0 = that.pathSegList.getItem(0),\n seg1 = that.pathSegList.getItem(1),\n x = Math.min(seg0.x, seg1.x),\n y = Math.min(seg0.y, seg1.y),\n w = box.width,\n h = box.height,\n offset = 2,\n sx = x - offset,\n ex = x + w + offset,\n sy = y + h + offset,\n ey = y - offset;\n return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n };\n\n ChartInternal.prototype.getShapeIndices = function (typeFilter) {\n var $$ = this,\n config = $$.config,\n indices = {},\n i = 0,\n j,\n k;\n $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n for (j = 0; j < config.data_groups.length; j++) {\n if (config.data_groups[j].indexOf(d.id) < 0) {\n continue;\n }\n\n for (k = 0; k < config.data_groups[j].length; k++) {\n if (config.data_groups[j][k] in indices) {\n indices[d.id] = indices[config.data_groups[j][k]];\n break;\n }\n }\n }\n\n if (isUndefined(indices[d.id])) {\n indices[d.id] = i++;\n }\n });\n indices.__max__ = i - 1;\n return indices;\n };\n\n ChartInternal.prototype.getShapeX = function (offset, targetsNum, indices, isSub) {\n var $$ = this,\n scale = isSub ? $$.subX : $$.x;\n return function (d) {\n var index = d.id in indices ? indices[d.id] : 0;\n return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n };\n };\n\n ChartInternal.prototype.getShapeY = function (isSub) {\n var $$ = this;\n return function (d) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n return scale(d.value);\n };\n };\n\n ChartInternal.prototype.getShapeOffset = function (typeFilter, indices, isSub) {\n var $$ = this,\n targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n targetIds = targets.map(function (t) {\n return t.id;\n });\n return function (d, i) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n y0 = scale(0),\n offset = y0;\n targets.forEach(function (t) {\n var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n\n if (t.id === d.id || indices[t.id] !== indices[d.id]) {\n return;\n }\n\n if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n // check if the x values line up\n if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {\n // \"+\" for timeseries\n // if not, try to find the value that does line up\n i = -1;\n values.forEach(function (v, j) {\n if (v.x === d.x) {\n i = j;\n }\n });\n }\n\n if (i in values && values[i].value * d.value >= 0) {\n offset += scale(values[i].value) - y0;\n }\n }\n });\n return offset;\n };\n };\n\n ChartInternal.prototype.isWithinShape = function (that, d) {\n var $$ = this,\n shape = $$.d3.select(that),\n isWithin;\n\n if (!$$.isTargetToShow(d.id)) {\n isWithin = false;\n } else if (that.nodeName === 'circle') {\n isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n } else if (that.nodeName === 'path') {\n isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar($$.d3.mouse(that), that) : true;\n }\n\n return isWithin;\n };\n\n ChartInternal.prototype.getInterpolate = function (d) {\n var $$ = this,\n d3 = $$.d3,\n types = {\n 'linear': d3.curveLinear,\n 'linear-closed': d3.curveLinearClosed,\n 'basis': d3.curveBasis,\n 'basis-open': d3.curveBasisOpen,\n 'basis-closed': d3.curveBasisClosed,\n 'bundle': d3.curveBundle,\n 'cardinal': d3.curveCardinal,\n 'cardinal-open': d3.curveCardinalOpen,\n 'cardinal-closed': d3.curveCardinalClosed,\n 'monotone': d3.curveMonotoneX,\n 'step': d3.curveStep,\n 'step-before': d3.curveStepBefore,\n 'step-after': d3.curveStepAfter\n },\n type;\n\n if ($$.isSplineType(d)) {\n type = types[$$.config.spline_interpolation_type] || types.cardinal;\n } else if ($$.isStepType(d)) {\n type = types[$$.config.line_step_type];\n } else {\n type = types.linear;\n }\n\n return type;\n };\n\n ChartInternal.prototype.initLine = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n };\n\n ChartInternal.prototype.updateTargetsForLine = function (targets) {\n var $$ = this,\n config = $$.config,\n mainLines,\n mainLineEnter,\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$),\n classCircles = $$.classCircles.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainLines = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', function (d) {\n return classChartLine(d) + classFocus(d);\n });\n mainLineEnter = mainLines.enter().append('g').attr('class', classChartLine).style('opacity', 0).style(\"pointer-events\", \"none\"); // Lines for each data\n\n mainLineEnter.append('g').attr(\"class\", classLines); // Areas\n\n mainLineEnter.append('g').attr('class', classAreas); // Circles for each data point on lines\n\n mainLineEnter.append('g').attr(\"class\", function (d) {\n return $$.generateClass(CLASS.selectedCircles, d.id);\n });\n mainLineEnter.append('g').attr(\"class\", classCircles).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n }); // Update date for selected circles\n\n targets.forEach(function (t) {\n $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n d.value = t.values[d.index].value;\n });\n }); // MEMO: can not keep same color...\n //mainLineUpdate.exit().remove();\n };\n\n ChartInternal.prototype.updateLine = function (durationForExit) {\n var $$ = this;\n var mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n var mainLineEnter = mainLine.enter().append('path').attr('class', $$.classLine.bind($$)).style(\"stroke\", $$.color);\n $$.mainLine = mainLineEnter.merge(mainLine).style(\"opacity\", $$.initialOpacity.bind($$)).style('shape-rendering', function (d) {\n return $$.isStepType(d) ? 'crispEdges' : '';\n }).attr('transform', null);\n mainLine.exit().transition().duration(durationForExit).style('opacity', 0);\n };\n\n ChartInternal.prototype.redrawLine = function (drawLine, withTransition, transition) {\n return [(withTransition ? this.mainLine.transition(transition) : this.mainLine).attr(\"d\", drawLine).style(\"stroke\", this.color).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.generateDrawLine = function (lineIndices, isSub) {\n var $$ = this,\n config = $$.config,\n line = $$.d3.line(),\n getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n yValue = function yValue(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n\n if (!config.line_connectNull) {\n line = line.defined(function (d) {\n return d.value != null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x = isSub ? $$.subX : $$.x,\n y = yScaleGetter.call($$, d.id),\n x0 = 0,\n y0 = 0,\n path;\n\n if ($$.isLineType(d)) {\n if (config.data_regions[d.id]) {\n path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n } else {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n\n path = line.curve($$.getInterpolate(d))(values);\n }\n } else {\n if (values[0]) {\n x0 = x(values[0].x);\n y0 = y(values[0].value);\n }\n\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n\n return path ? path : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.generateGetLinePoints = function (lineIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n lineTargetsNum = lineIndices.__max__ + 1,\n x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = lineOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d); // fix posY not to overflow opposite quadrant\n\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 1 point that marks the line position\n\n\n return [[posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)] // needed for compatibility\n ];\n };\n };\n\n ChartInternal.prototype.lineWithRegions = function (d, x, y, _regions) {\n var $$ = this,\n config = $$.config,\n prev = -1,\n i,\n j,\n s = \"M\",\n sWithRegion,\n xp,\n yp,\n dx,\n dy,\n dd,\n diff,\n diffx2,\n xOffset = $$.isCategorized() ? 0.5 : 0,\n xValue,\n yValue,\n regions = [];\n\n function isWithinRegions(x, regions) {\n var i;\n\n for (i = 0; i < regions.length; i++) {\n if (regions[i].start < x && x <= regions[i].end) {\n return true;\n }\n }\n\n return false;\n } // Check start/end of regions\n\n\n if (isDefined(_regions)) {\n for (i = 0; i < _regions.length; i++) {\n regions[i] = {};\n\n if (isUndefined(_regions[i].start)) {\n regions[i].start = d[0].x;\n } else {\n regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n }\n\n if (isUndefined(_regions[i].end)) {\n regions[i].end = d[d.length - 1].x;\n } else {\n regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n }\n }\n } // Set scales\n\n\n xValue = config.axis_rotated ? function (d) {\n return y(d.value);\n } : function (d) {\n return x(d.x);\n };\n yValue = config.axis_rotated ? function (d) {\n return x(d.x);\n } : function (d) {\n return y(d.value);\n }; // Define svg generator function for region\n\n function generateM(points) {\n return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n }\n\n if ($$.isTimeSeries()) {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var x0 = d0.x.getTime(),\n x_diff = d1.x - d0.x,\n xv0 = new Date(x0 + x_diff * j),\n xv1 = new Date(x0 + x_diff * (j + diff)),\n points;\n\n if (config.axis_rotated) {\n points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n } else {\n points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n }\n\n return generateM(points);\n };\n } else {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var points;\n\n if (config.axis_rotated) {\n points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n } else {\n points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n }\n\n return generateM(points);\n };\n } // Generate\n\n\n for (i = 0; i < d.length; i++) {\n // Draw as normal\n if (isUndefined(regions) || !isWithinRegions(d[i].x, regions)) {\n s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n } // Draw with region // TODO: Fix for horizotal charts\n else {\n xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n yp = $$.getScale(d[i - 1].value, d[i].value);\n dx = x(d[i].x) - x(d[i - 1].x);\n dy = y(d[i].value) - y(d[i - 1].value);\n dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n diff = 2 / dd;\n diffx2 = diff * 2;\n\n for (j = diff; j <= 1; j += diffx2) {\n s += sWithRegion(d[i - 1], d[i], j, diff);\n }\n }\n\n prev = d[i].x;\n }\n\n return s;\n };\n\n ChartInternal.prototype.updateArea = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n var mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n var mainAreaEnter = mainArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\n return 0;\n });\n $$.mainArea = mainAreaEnter.merge(mainArea).style(\"opacity\", $$.orgAreaOpacity);\n mainArea.exit().transition().duration(durationForExit).style('opacity', 0);\n };\n\n ChartInternal.prototype.redrawArea = function (drawArea, withTransition, transition) {\n return [(withTransition ? this.mainArea.transition(transition) : this.mainArea).attr(\"d\", drawArea).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity)];\n };\n\n ChartInternal.prototype.generateDrawArea = function (areaIndices, isSub) {\n var $$ = this,\n config = $$.config,\n area = $$.d3.area(),\n getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n value0 = function value0(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n },\n value1 = function value1(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n\n if (!config.line_connectNull) {\n area = area.defined(function (d) {\n return d.value !== null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x0 = 0,\n y0 = 0,\n path;\n\n if ($$.isAreaType(d)) {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n\n path = area.curve($$.getInterpolate(d))(values);\n } else {\n if (values[0]) {\n x0 = $$.x(values[0].x);\n y0 = $$.getYScale(d.id)(values[0].value);\n }\n\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n\n return path ? path : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.getAreaBaseValue = function () {\n return 0;\n };\n\n ChartInternal.prototype.generateGetAreaPoints = function (areaIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n areaTargetsNum = areaIndices.__max__ + 1,\n x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = areaOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d); // fix posY not to overflow opposite quadrant\n\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 1 point that marks the area position\n\n\n return [[posX, offset], [posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, offset] // needed for compatibility\n ];\n };\n };\n\n ChartInternal.prototype.updateCircle = function (cx, cy) {\n var $$ = this;\n var mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle).data($$.lineOrScatterOrStanfordData.bind($$));\n var mainCircleEnter = mainCircle.enter().append(\"circle\").attr('shape-rendering', 'crispEdges').attr(\"class\", $$.classCircle.bind($$)).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"r\", $$.pointR.bind($$)).style(\"fill\", $$.isStanfordGraphType() ? $$.getStanfordPointColor.bind($$) : $$.color);\n $$.mainCircle = mainCircleEnter.merge(mainCircle).style(\"opacity\", $$.isStanfordGraphType() ? 1 : $$.initialOpacityForCircle.bind($$));\n mainCircle.exit().style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawCircle = function (cx, cy, withTransition, transition) {\n var $$ = this,\n selectedCircles = $$.main.selectAll('.' + CLASS.selectedCircle);\n return [(withTransition ? $$.mainCircle.transition(transition) : $$.mainCircle).style('opacity', this.opacityForCircle.bind($$)).style(\"fill\", $$.isStanfordGraphType() ? $$.getStanfordPointColor.bind($$) : $$.color).attr(\"cx\", cx).attr(\"cy\", cy), (withTransition ? selectedCircles.transition(transition) : selectedCircles).attr(\"cx\", cx).attr(\"cy\", cy)];\n };\n\n ChartInternal.prototype.circleX = function (d) {\n return d.x || d.x === 0 ? this.x(d.x) : null;\n };\n\n ChartInternal.prototype.updateCircleY = function () {\n var $$ = this,\n lineIndices,\n getPoints;\n\n if ($$.config.data_groups.length > 0) {\n lineIndices = $$.getShapeIndices($$.isLineType), getPoints = $$.generateGetLinePoints(lineIndices);\n\n $$.circleY = function (d, i) {\n return getPoints(d, i)[0][1];\n };\n } else {\n $$.circleY = function (d) {\n return $$.getYScale(d.id)(d.value);\n };\n }\n };\n\n ChartInternal.prototype.getCircles = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n };\n\n ChartInternal.prototype.expandCircles = function (i, id, reset) {\n var $$ = this,\n r = $$.pointExpandedR.bind($$);\n\n if (reset) {\n $$.unexpandCircles();\n }\n\n $$.getCircles(i, id).classed(CLASS.EXPANDED, true).attr('r', r);\n };\n\n ChartInternal.prototype.unexpandCircles = function (i) {\n var $$ = this,\n r = $$.pointR.bind($$);\n $$.getCircles(i).filter(function () {\n return $$.d3.select(this).classed(CLASS.EXPANDED);\n }).classed(CLASS.EXPANDED, false).attr('r', r);\n };\n\n ChartInternal.prototype.pointR = function (d) {\n var $$ = this,\n config = $$.config;\n return $$.isStepType(d) ? 0 : isFunction(config.point_r) ? config.point_r(d) : config.point_r;\n };\n\n ChartInternal.prototype.pointExpandedR = function (d) {\n var $$ = this,\n config = $$.config;\n\n if (config.point_focus_expand_enabled) {\n return isFunction(config.point_focus_expand_r) ? config.point_focus_expand_r(d) : config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75;\n } else {\n return $$.pointR(d);\n }\n };\n\n ChartInternal.prototype.pointSelectR = function (d) {\n var $$ = this,\n config = $$.config;\n return isFunction(config.point_select_r) ? config.point_select_r(d) : config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;\n };\n\n ChartInternal.prototype.isWithinCircle = function (that, r) {\n var d3 = this.d3,\n mouse = d3.mouse(that),\n d3_this = d3.select(that),\n cx = +d3_this.attr(\"cx\"),\n cy = +d3_this.attr(\"cy\");\n return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n };\n\n ChartInternal.prototype.isWithinStep = function (that, y) {\n return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n };\n\n ChartInternal.prototype.getCurrentWidth = function () {\n var $$ = this,\n config = $$.config;\n return config.size_width ? config.size_width : $$.getParentWidth();\n };\n\n ChartInternal.prototype.getCurrentHeight = function () {\n var $$ = this,\n config = $$.config,\n h = config.size_height ? config.size_height : $$.getParentHeight();\n return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1);\n };\n\n ChartInternal.prototype.getCurrentPaddingTop = function () {\n var $$ = this,\n config = $$.config,\n padding = isValue(config.padding_top) ? config.padding_top : 0;\n\n if ($$.title && $$.title.node()) {\n padding += $$.getTitlePadding();\n }\n\n return padding;\n };\n\n ChartInternal.prototype.getCurrentPaddingBottom = function () {\n var config = this.config;\n return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n };\n\n ChartInternal.prototype.getCurrentPaddingLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config;\n\n if (isValue(config.padding_left)) {\n return config.padding_left;\n } else if (config.axis_rotated) {\n return !config.axis_x_show || config.axis_x_inner ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n } else if (!config.axis_y_show || config.axis_y_inner) {\n // && !config.axis_rotated\n return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n } else {\n return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n }\n };\n\n ChartInternal.prototype.getCurrentPaddingRight = function () {\n var $$ = this,\n config = $$.config,\n padding = 0,\n defaultPadding = 10,\n legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n\n if (isValue(config.padding_right)) {\n padding = config.padding_right + 1; // 1 is needed not to hide tick line\n } else if (config.axis_rotated) {\n padding = defaultPadding + legendWidthOnRight;\n } else if (!config.axis_y2_show || config.axis_y2_inner) {\n // && !config.axis_rotated\n padding = 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n } else {\n padding = ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n }\n\n if ($$.colorScale && $$.colorScale.node()) {\n padding += $$.getColorScalePadding();\n }\n\n return padding;\n };\n\n ChartInternal.prototype.getParentRectValue = function (key) {\n var parent = this.selectChart.node(),\n v;\n\n while (parent && parent.tagName !== 'BODY') {\n try {\n v = parent.getBoundingClientRect()[key];\n } catch (e) {\n if (key === 'width') {\n // In IE in certain cases getBoundingClientRect\n // will cause an \"unspecified error\"\n v = parent.offsetWidth;\n }\n }\n\n if (v) {\n break;\n }\n\n parent = parent.parentNode;\n }\n\n return v;\n };\n\n ChartInternal.prototype.getParentWidth = function () {\n return this.getParentRectValue('width');\n };\n\n ChartInternal.prototype.getParentHeight = function () {\n var h = this.selectChart.style('height');\n return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n };\n\n ChartInternal.prototype.getSvgLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config,\n hasLeftAxisRect = config.axis_rotated || !config.axis_rotated && !config.axis_y_inner,\n leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n leftAxis = $$.main.select('.' + leftAxisClass).node(),\n svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {\n right: 0\n },\n chartRect = $$.selectChart.node().getBoundingClientRect(),\n hasArc = $$.hasArcType(),\n svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n return svgLeft > 0 ? svgLeft : 0;\n };\n\n ChartInternal.prototype.getAxisWidthByAxisId = function (id, withoutRecompute) {\n var $$ = this,\n position = $$.axis.getLabelPositionById(id);\n return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n };\n\n ChartInternal.prototype.getHorizontalAxisHeight = function (axisId) {\n var $$ = this,\n config = $$.config,\n h = 30;\n\n if (axisId === 'x' && !config.axis_x_show) {\n return 8;\n }\n\n if (axisId === 'x' && config.axis_x_height) {\n return config.axis_x_height;\n }\n\n if (axisId === 'y' && !config.axis_y_show) {\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n }\n\n if (axisId === 'y2' && !config.axis_y2_show) {\n return $$.rotated_padding_top;\n } // Calculate x axis height when tick rotated\n\n\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180);\n } // Calculate y axis height when tick rotated\n\n\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180);\n }\n\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n ChartInternal.prototype.initBrush = function (scale) {\n var $$ = this,\n d3 = $$.d3; // TODO: dynamically change brushY/brushX according to axis_rotated.\n\n $$.brush = ($$.config.axis_rotated ? d3.brushY() : d3.brushX()).on(\"brush\", function () {\n var event = d3.event.sourceEvent;\n\n if (event && event.type === \"zoom\") {\n return;\n }\n\n $$.redrawForBrush();\n }).on(\"end\", function () {\n var event = d3.event.sourceEvent;\n\n if (event && event.type === \"zoom\") {\n return;\n }\n\n if ($$.brush.empty() && event && event.type !== 'end') {\n $$.brush.clear();\n }\n });\n\n $$.brush.updateExtent = function () {\n var range = this.scale.range(),\n extent;\n\n if ($$.config.axis_rotated) {\n extent = [[0, range[0]], [$$.width2, range[1]]];\n } else {\n extent = [[range[0], 0], [range[1], $$.height2]];\n }\n\n this.extent(extent);\n return this;\n };\n\n $$.brush.updateScale = function (scale) {\n this.scale = scale;\n return this;\n };\n\n $$.brush.update = function (scale) {\n this.updateScale(scale || $$.subX).updateExtent();\n $$.context.select('.' + CLASS.brush).call(this);\n };\n\n $$.brush.clear = function () {\n $$.context.select('.' + CLASS.brush).call($$.brush.move, null);\n };\n\n $$.brush.selection = function () {\n return d3.brushSelection($$.context.select('.' + CLASS.brush).node());\n };\n\n $$.brush.selectionAsValue = function (selectionAsValue, withTransition) {\n var selection, brush;\n\n if (selectionAsValue) {\n if ($$.context) {\n selection = [this.scale(selectionAsValue[0]), this.scale(selectionAsValue[1])];\n brush = $$.context.select('.' + CLASS.brush);\n\n if (withTransition) {\n brush = brush.transition();\n }\n\n $$.brush.move(brush, selection);\n }\n\n return [];\n }\n\n selection = $$.brush.selection() || [0, 0];\n return [this.scale.invert(selection[0]), this.scale.invert(selection[1])];\n };\n\n $$.brush.empty = function () {\n var selection = $$.brush.selection();\n return !selection || selection[0] === selection[1];\n };\n\n return $$.brush.updateScale(scale);\n };\n\n ChartInternal.prototype.initSubchart = function () {\n var $$ = this,\n config = $$.config,\n context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n visibility = config.subchart_show ? 'visible' : 'hidden'; // set style\n\n context.style('visibility', visibility); // Define g for chart area\n\n context.append('g').attr(\"clip-path\", $$.clipPathForSubchart).attr('class', CLASS.chart); // Define g for bar chart area\n\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars); // Define g for line chart area\n\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines); // Add extent rect for Brush\n\n context.append(\"g\").attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.brush); // ATTENTION: This must be called AFTER chart added\n // Add Axis\n\n $$.axes.subx = context.append(\"g\").attr(\"class\", CLASS.axisX).attr(\"transform\", $$.getTranslate('subx')).attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis);\n };\n\n ChartInternal.prototype.initSubchartBrush = function () {\n var $$ = this; // Add extent rect for Brush\n\n $$.initBrush($$.subX).updateExtent();\n $$.context.select('.' + CLASS.brush).call($$.brush);\n };\n\n ChartInternal.prototype.updateTargetsForSubchart = function (targets) {\n var $$ = this,\n context = $$.context,\n config = $$.config,\n contextLineEnter,\n contextLine,\n contextBarEnter,\n contextBar,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$);\n\n if (config.subchart_show) {\n //-- Bar --//\n contextBar = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets);\n contextBarEnter = contextBar.enter().append('g').style('opacity', 0);\n contextBarEnter.merge(contextBar).attr('class', classChartBar); // Bars for each data\n\n contextBarEnter.append('g').attr(\"class\", classBars); //-- Line --//\n\n contextLine = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets);\n contextLineEnter = contextLine.enter().append('g').style('opacity', 0);\n contextLineEnter.merge(contextLine).attr('class', classChartLine); // Lines for each data\n\n contextLineEnter.append(\"g\").attr(\"class\", classLines); // Area\n\n contextLineEnter.append(\"g\").attr(\"class\", classAreas); //-- Brush --//\n\n context.selectAll('.' + CLASS.brush + ' rect').attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n }\n };\n\n ChartInternal.prototype.updateBarForSubchart = function (durationForExit) {\n var $$ = this;\n var contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data($$.barData.bind($$));\n var contextBarEnter = contextBar.enter().append('path').attr(\"class\", $$.classBar.bind($$)).style(\"stroke\", 'none').style(\"fill\", $$.color);\n contextBar.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextBar = contextBarEnter.merge(contextBar).style(\"opacity\", $$.initialOpacity.bind($$));\n };\n\n ChartInternal.prototype.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar).attr('d', drawBarOnSub).style('opacity', 1);\n };\n\n ChartInternal.prototype.updateLineForSubchart = function (durationForExit) {\n var $$ = this;\n var contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n var contextLineEnter = contextLine.enter().append('path').attr('class', $$.classLine.bind($$)).style('stroke', $$.color);\n contextLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextLine = contextLineEnter.merge(contextLine).style(\"opacity\", $$.initialOpacity.bind($$));\n };\n\n ChartInternal.prototype.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine).attr(\"d\", drawLineOnSub).style('opacity', 1);\n };\n\n ChartInternal.prototype.updateAreaForSubchart = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n var contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n var contextAreaEnter = contextArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\n return 0;\n });\n contextArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextArea = contextAreaEnter.merge(contextArea).style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea).attr(\"d\", drawAreaOnSub).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity);\n };\n\n ChartInternal.prototype.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n drawAreaOnSub,\n drawBarOnSub,\n drawLineOnSub;\n $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden'); // subchart\n\n if (config.subchart_show) {\n // reflect main chart to extent on subchart if zoomed\n if (d3.event && d3.event.type === 'zoom') {\n $$.brush.selectionAsValue($$.x.orgDomain());\n } // update subchart elements if needed\n\n\n if (withSubchart) {\n // extent rect\n if (!$$.brush.empty()) {\n $$.brush.selectionAsValue($$.x.orgDomain());\n } // setup drawer - MEMO: this must be called after axis updated\n\n\n drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n drawBarOnSub = $$.generateDrawBar(barIndices, true);\n drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n $$.updateBarForSubchart(duration);\n $$.updateLineForSubchart(duration);\n $$.updateAreaForSubchart(duration);\n $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n }\n }\n };\n\n ChartInternal.prototype.redrawForBrush = function () {\n var $$ = this,\n x = $$.x,\n d3 = $$.d3,\n s;\n $$.redraw({\n withTransition: false,\n withY: $$.config.zoom_rescale,\n withSubchart: false,\n withUpdateXDomain: true,\n withEventRect: false,\n withDimension: false\n }); // update zoom transation binded to event rect\n\n s = d3.event.selection || $$.brush.scale.range();\n $$.main.select('.' + CLASS.eventRect).call($$.zoom.transform, d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0));\n $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n };\n\n ChartInternal.prototype.transformContext = function (withTransition, transitions) {\n var $$ = this,\n subXAxis;\n\n if (transitions && transitions.axisSubX) {\n subXAxis = transitions.axisSubX;\n } else {\n subXAxis = $$.context.select('.' + CLASS.axisX);\n\n if (withTransition) {\n subXAxis = subXAxis.transition();\n }\n }\n\n $$.context.attr(\"transform\", $$.getTranslate('context'));\n subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n };\n\n ChartInternal.prototype.getDefaultSelection = function () {\n var $$ = this,\n config = $$.config,\n selection = isFunction(config.axis_x_selection) ? config.axis_x_selection($$.getXDomain($$.data.targets)) : config.axis_x_selection;\n\n if ($$.isTimeSeries()) {\n selection = [$$.parseDate(selection[0]), $$.parseDate(selection[1])];\n }\n\n return selection;\n };\n\n ChartInternal.prototype.initText = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartTexts);\n $$.mainText = $$.d3.selectAll([]);\n };\n\n ChartInternal.prototype.updateTargetsForText = function (targets) {\n var $$ = this,\n classChartText = $$.classChartText.bind($$),\n classTexts = $$.classTexts.bind($$),\n classFocus = $$.classFocus.bind($$);\n var mainText = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText).data(targets);\n var mainTextEnter = mainText.enter().append('g').attr('class', classChartText).style('opacity', 0).style(\"pointer-events\", \"none\");\n mainTextEnter.append('g').attr('class', classTexts);\n mainTextEnter.merge(mainText).attr('class', function (d) {\n return classChartText(d) + classFocus(d);\n });\n };\n\n ChartInternal.prototype.updateText = function (xForText, yForText, durationForExit) {\n var $$ = this,\n config = $$.config,\n barOrLineData = $$.barOrLineData.bind($$),\n classText = $$.classText.bind($$);\n var mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text).data(barOrLineData);\n var mainTextEnter = mainText.enter().append('text').attr(\"class\", classText).attr('text-anchor', function (d) {\n return config.axis_rotated ? d.value < 0 ? 'end' : 'start' : 'middle';\n }).style(\"stroke\", 'none').attr('x', xForText).attr('y', yForText).style(\"fill\", function (d) {\n return $$.color(d);\n }).style(\"fill-opacity\", 0);\n $$.mainText = mainTextEnter.merge(mainText).text(function (d, i, j) {\n return $$.dataLabelFormat(d.id)(d.value, d.id, i, j);\n });\n mainText.exit().transition().duration(durationForExit).style('fill-opacity', 0).remove();\n };\n\n ChartInternal.prototype.redrawText = function (xForText, yForText, forFlow, withTransition, transition) {\n return [(withTransition ? this.mainText.transition(transition) : this.mainText).attr('x', xForText).attr('y', yForText).style(\"fill\", this.color).style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))];\n };\n\n ChartInternal.prototype.getTextRect = function (text, cls, element) {\n var dummy = this.d3.select('body').append('div').classed('c3', true),\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n font = this.d3.select(element).style('font'),\n rect;\n svg.selectAll('.dummy').data([text]).enter().append('text').classed(cls ? cls : \"\", true).style('font', font).text(text).each(function () {\n rect = this.getBoundingClientRect();\n });\n dummy.remove();\n return rect;\n };\n\n ChartInternal.prototype.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n var $$ = this,\n getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n getBarPoints = $$.generateGetBarPoints(barIndices, false),\n getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n getter = forX ? $$.getXForText : $$.getYForText;\n return function (d, i) {\n var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n return getter.call($$, getPoints(d, i), d, this);\n };\n };\n\n ChartInternal.prototype.getXForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n xPos,\n padding;\n\n if ($$.config.axis_rotated) {\n padding = $$.isBarType(d) ? 4 : 6;\n xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n } else {\n xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n } // show labels regardless of the domain if value is null\n\n\n if (d.value === null) {\n if (xPos > $$.width) {\n xPos = $$.width - box.width;\n } else if (xPos < 0) {\n xPos = 4;\n }\n }\n\n return xPos;\n };\n\n ChartInternal.prototype.getYForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n yPos;\n\n if ($$.config.axis_rotated) {\n yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n } else {\n yPos = points[2][1];\n\n if (d.value < 0 || d.value === 0 && !$$.hasPositiveValue) {\n yPos += box.height;\n\n if ($$.isBarType(d) && $$.isSafari()) {\n yPos -= 3;\n } else if (!$$.isBarType(d) && $$.isChrome()) {\n yPos += 3;\n }\n } else {\n yPos += $$.isBarType(d) ? -3 : -6;\n }\n } // show labels regardless of the domain if value is null\n\n\n if (d.value === null && !$$.config.axis_rotated) {\n if (yPos < box.height) {\n yPos = box.height;\n } else if (yPos > this.height) {\n yPos = this.height - 4;\n }\n }\n\n return yPos;\n };\n\n ChartInternal.prototype.initTitle = function () {\n var $$ = this;\n $$.title = $$.svg.append(\"text\").text($$.config.title_text).attr(\"class\", $$.CLASS.title);\n };\n\n ChartInternal.prototype.redrawTitle = function () {\n var $$ = this;\n $$.title.attr(\"x\", $$.xForTitle.bind($$)).attr(\"y\", $$.yForTitle.bind($$));\n };\n\n ChartInternal.prototype.xForTitle = function () {\n var $$ = this,\n config = $$.config,\n position = config.title_position || 'left',\n x;\n\n if (position.indexOf('right') >= 0) {\n x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n } else if (position.indexOf('center') >= 0) {\n x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n } else {\n // left\n x = config.title_padding.left;\n }\n\n return x;\n };\n\n ChartInternal.prototype.yForTitle = function () {\n var $$ = this;\n return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n };\n\n ChartInternal.prototype.getTitlePadding = function () {\n var $$ = this;\n return $$.yForTitle() + $$.config.title_padding.bottom;\n };\n\n function powerOfTen(d) {\n return d / Math.pow(10, Math.ceil(Math.log(d) / Math.LN10 - 1e-12)) === 1;\n }\n\n ChartInternal.prototype.drawColorScale = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n target = $$.data.targets[0],\n barWidth,\n barHeight,\n axis,\n points,\n legendAxis,\n axisScale,\n inverseScale,\n height;\n barWidth = !isNaN(config.stanford_scaleWidth) ? config.stanford_scaleWidth : 20;\n barHeight = 5;\n\n if (barHeight < 0 || barWidth < 0) {\n throw Error(\"Colorscale's barheight and barwidth must be greater than 0.\");\n }\n\n height = $$.height - config.stanford_padding.bottom - config.stanford_padding.top;\n points = d3.range(config.stanford_padding.bottom, height, barHeight);\n inverseScale = d3.scaleSequential(target.colors).domain([points[points.length - 1], points[0]]);\n\n if ($$.colorScale) {\n $$.colorScale.remove();\n }\n\n $$.colorScale = $$.svg.append(\"g\").attr('width', 50).attr('height', height).attr('class', CLASS.colorScale);\n $$.colorScale.append('g').attr('transform', \"translate(0, \".concat(config.stanford_padding.top, \")\")).selectAll('bars').data(points).enter().append('rect').attr('y', function (d, i) {\n return i * barHeight;\n }).attr('x', 0).attr('width', barWidth).attr('height', barHeight).attr('fill', function (d) {\n return inverseScale(d);\n }); // Legend Axis\n\n axisScale = d3.scaleLog().domain([target.minEpochs, target.maxEpochs]).range([points[0] + config.stanford_padding.top + points[points.length - 1] + barHeight - 1, points[0] + config.stanford_padding.top]);\n legendAxis = d3.axisRight(axisScale);\n\n if (config.stanford_scaleFormat === 'pow10') {\n legendAxis.tickValues([1, 10, 100, 1000, 10000, 100000, 1000000, 10000000]);\n } else if (isFunction(config.stanford_scaleFormat)) {\n legendAxis.tickFormat(config.stanford_scaleFormat);\n } else {\n legendAxis.tickFormat(d3.format(\"d\"));\n }\n\n if (isFunction(config.stanford_scaleValues)) {\n legendAxis.tickValues(config.stanford_scaleValues(target.minEpochs, target.maxEpochs));\n } // Draw Axis\n\n\n axis = $$.colorScale.append(\"g\").attr(\"class\", \"legend axis\").attr(\"transform\", \"translate(\".concat(barWidth, \",0)\")).call(legendAxis);\n\n if (config.stanford_scaleFormat === 'pow10') {\n axis.selectAll(\".tick text\").text(null).filter(powerOfTen).text(10).append(\"tspan\").attr(\"dy\", \"-.7em\") // https://bl.ocks.org/mbostock/6738229\n .text(function (d) {\n return Math.round(Math.log(d) / Math.LN10);\n });\n }\n\n $$.colorScale.attr('transform', \"translate(\".concat($$.currentWidth - $$.xForColorScale(), \", 0)\"));\n };\n\n ChartInternal.prototype.xForColorScale = function () {\n var $$ = this;\n return $$.config.stanford_padding.right + $$.colorScale.node().getBBox().width;\n };\n\n ChartInternal.prototype.getColorScalePadding = function () {\n var $$ = this;\n return $$.xForColorScale() + $$.config.stanford_padding.left + 20;\n };\n\n ChartInternal.prototype.isStanfordGraphType = function () {\n var $$ = this;\n return $$.config.data_type === 'stanford';\n };\n\n ChartInternal.prototype.initStanfordData = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n target = $$.data.targets[0],\n epochs,\n maxEpochs,\n minEpochs; // Make larger values appear on top\n\n target.values.sort(compareEpochs); // Get array of epochs\n\n epochs = target.values.map(function (a) {\n return a.epochs;\n });\n minEpochs = !isNaN(config.stanford_scaleMin) ? config.stanford_scaleMin : d3.min(epochs);\n maxEpochs = !isNaN(config.stanford_scaleMax) ? config.stanford_scaleMax : d3.max(epochs);\n\n if (minEpochs > maxEpochs) {\n throw Error(\"Number of minEpochs has to be smaller than maxEpochs\");\n }\n\n target.colors = isFunction(config.stanford_colors) ? config.stanford_colors : d3.interpolateHslLong(d3.hsl(250, 1, 0.5), d3.hsl(0, 1, 0.5));\n target.colorscale = d3.scaleSequentialLog(target.colors).domain([minEpochs, maxEpochs]);\n target.minEpochs = minEpochs;\n target.maxEpochs = maxEpochs;\n };\n\n ChartInternal.prototype.getStanfordPointColor = function (d) {\n var $$ = this,\n target = $$.data.targets[0];\n return target.colorscale(d.epochs);\n }; // http://jsfiddle.net/Xotic750/KtzLq/\n\n\n ChartInternal.prototype.getCentroid = function (points) {\n var area = getRegionArea(points);\n var x = 0,\n y = 0,\n i,\n j,\n f,\n point1,\n point2;\n\n for (i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {\n point1 = points[i];\n point2 = points[j];\n f = point1.x * point2.y - point2.x * point1.y;\n x += (point1.x + point2.x) * f;\n y += (point1.y + point2.y) * f;\n }\n\n f = area * 6;\n return {\n x: x / f,\n y: y / f\n };\n };\n\n ChartInternal.prototype.getStanfordTooltipTitle = function (d) {\n var $$ = this,\n labelX = $$.axis.getLabelText('x'),\n labelY = $$.axis.getLabelText('y');\n return \"\\n \".concat(labelX ? sanitise(labelX) : \"x\", \"\").concat(d.x, \"\\n \").concat(labelY ? sanitise(labelY) : \"y\", \"\").concat(d.value, \"\\n \");\n };\n\n ChartInternal.prototype.countEpochsInRegion = function (region) {\n var $$ = this,\n target = $$.data.targets[0],\n total,\n count;\n total = target.values.reduce(function (accumulator, currentValue) {\n return accumulator + Number(currentValue.epochs);\n }, 0);\n count = target.values.reduce(function (accumulator, currentValue) {\n if (pointInRegion(currentValue, region)) {\n return accumulator + Number(currentValue.epochs);\n }\n\n return accumulator;\n }, 0);\n return {\n value: count,\n percentage: count !== 0 ? (count / total * 100).toFixed(1) : 0\n };\n };\n\n var getRegionArea = function getRegionArea(points) {\n // thanks to: https://stackoverflow.com/questions/16282330/find-centerpoint-of-polygon-in-javascript\n var area = 0,\n i,\n j,\n point1,\n point2;\n\n for (i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {\n point1 = points[i];\n point2 = points[j];\n area += point1.x * point2.y;\n area -= point1.y * point2.x;\n }\n\n area /= 2;\n return area;\n };\n var pointInRegion = function pointInRegion(point, region) {\n // thanks to: http://bl.ocks.org/bycoffe/5575904\n // ray-casting algorithm based on\n // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n var xi,\n yi,\n yj,\n xj,\n intersect,\n x = point.x,\n y = point.value,\n inside = false;\n\n for (var i = 0, j = region.length - 1; i < region.length; j = i++) {\n xi = region[i].x;\n yi = region[i].y;\n xj = region[j].x;\n yj = region[j].y;\n intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n\n if (intersect) {\n inside = !inside;\n }\n }\n\n return inside;\n };\n var compareEpochs = function compareEpochs(a, b) {\n if (a.epochs < b.epochs) {\n return -1;\n }\n\n if (a.epochs > b.epochs) {\n return 1;\n }\n\n return 0;\n };\n\n ChartInternal.prototype.initStanfordElements = function () {\n var $$ = this; // Avoid blocking eventRect\n\n $$.stanfordElements = $$.main.select('.' + CLASS.chart).append('g').attr('class', CLASS.stanfordElements);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordLines);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordTexts);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordRegions);\n };\n\n ChartInternal.prototype.updateStanfordElements = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n stanfordLine,\n stanfordLineEnter,\n stanfordRegion,\n stanfordRegionEnter,\n stanfordText,\n stanfordTextEnter,\n xvCustom = $$.xvCustom.bind($$),\n yvCustom = $$.yvCustom.bind($$),\n countPointsInRegion = $$.countEpochsInRegion.bind($$); // Stanford-Lines\n\n stanfordLine = main.select('.' + CLASS.stanfordLines).style('shape-rendering', 'geometricprecision').selectAll('.' + CLASS.stanfordLine).data(config.stanford_lines); // enter\n\n stanfordLineEnter = stanfordLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordLine + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordLineEnter.append('line').attr(\"x1\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y1') : xvCustom(d, 'value_x1');\n }).attr(\"x2\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y2') : xvCustom(d, 'value_x2');\n }).attr(\"y1\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x1') : yvCustom(d, 'value_y1');\n }).attr(\"y2\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x2') : yvCustom(d, 'value_y2');\n }).style(\"opacity\", 0); // update\n\n $$.stanfordLines = stanfordLineEnter.merge(stanfordLine);\n $$.stanfordLines.select('line').transition().duration(duration).attr(\"x1\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y1') : xvCustom(d, 'value_x1');\n }).attr(\"x2\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y2') : xvCustom(d, 'value_x2');\n }).attr(\"y1\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x1') : yvCustom(d, 'value_y1');\n }).attr(\"y2\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x2') : yvCustom(d, 'value_y2');\n }).style(\"opacity\", 1); // exit\n\n stanfordLine.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Stanford-Text\n\n stanfordText = main.select('.' + CLASS.stanfordTexts).selectAll('.' + CLASS.stanfordText).data(config.stanford_texts); // enter\n\n stanfordTextEnter = stanfordText.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordText + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordTextEnter.append('text').attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'y') : xvCustom(d, 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'x') : yvCustom(d, 'y');\n }).style(\"opacity\", 0); // update\n\n $$.stanfordTexts = stanfordTextEnter.merge(stanfordText);\n $$.stanfordTexts.select('text').transition().duration(duration).attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'y') : xvCustom(d, 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'x') : yvCustom(d, 'y');\n }).text(function (d) {\n return d.content;\n }).style(\"opacity\", 1); // exit\n\n stanfordText.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Stanford-Regions\n\n stanfordRegion = main.select('.' + CLASS.stanfordRegions).selectAll('.' + CLASS.stanfordRegion).data(config.stanford_regions); // enter\n\n stanfordRegionEnter = stanfordRegion.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordRegion + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordRegionEnter.append('polygon').attr(\"points\", function (d) {\n return d.points.map(function (value) {\n return [config.axis_rotated ? yvCustom(value, 'y') : xvCustom(value, 'x'), config.axis_rotated ? xvCustom(value, 'x') : yvCustom(value, 'y')].join(\",\");\n }).join(\" \");\n }).style(\"opacity\", 0);\n stanfordRegionEnter.append('text').attr(\"x\", function (d) {\n return $$.getCentroid(d.points).x;\n }).attr(\"y\", function (d) {\n return $$.getCentroid(d.points).y;\n }).style(\"opacity\", 0); // update\n\n $$.stanfordRegions = stanfordRegionEnter.merge(stanfordRegion);\n $$.stanfordRegions.select('polygon').transition().duration(duration).attr(\"points\", function (d) {\n return d.points.map(function (value) {\n return [config.axis_rotated ? yvCustom(value, 'y') : xvCustom(value, 'x'), config.axis_rotated ? xvCustom(value, 'x') : yvCustom(value, 'y')].join(\",\");\n }).join(\" \");\n }).style(\"opacity\", function (d) {\n return d.opacity ? d.opacity : 0.2;\n });\n $$.stanfordRegions.select('text').transition().duration(duration).attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom($$.getCentroid(d.points), 'y') : xvCustom($$.getCentroid(d.points), 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom($$.getCentroid(d.points), 'x') : yvCustom($$.getCentroid(d.points), 'y');\n }).text(function (d) {\n if (d.text) {\n var value, percentage, temp;\n\n if ($$.isStanfordGraphType()) {\n temp = countPointsInRegion(d.points);\n value = temp.value;\n percentage = temp.percentage;\n }\n\n return d.text(value, percentage);\n }\n\n return \"\";\n }).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").style(\"opacity\", 1); // exit\n\n stanfordRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.initTooltip = function () {\n var $$ = this,\n config = $$.config,\n i;\n $$.tooltip = $$.selectChart.style(\"position\", \"relative\").append(\"div\").attr('class', CLASS.tooltipContainer).style(\"position\", \"absolute\").style(\"pointer-events\", \"none\").style(\"display\", \"none\"); // Show tooltip if needed\n\n if (config.tooltip_init_show) {\n if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n\n for (i = 0; i < $$.data.targets[0].values.length; i++) {\n if ($$.data.targets[0].values[i].x - config.tooltip_init_x === 0) {\n break;\n }\n }\n\n config.tooltip_init_x = i;\n }\n\n $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n return $$.addName(d.values[config.tooltip_init_x]);\n }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n $$.tooltip.style(\"top\", config.tooltip_init_position.top).style(\"left\", config.tooltip_init_position.left).style(\"display\", \"block\");\n }\n };\n\n ChartInternal.prototype.getTooltipSortFunction = function () {\n var $$ = this,\n config = $$.config;\n\n if (config.data_groups.length === 0 || config.tooltip_order !== undefined) {\n // if data are not grouped or if an order is specified\n // for the tooltip values we sort them by their values\n var order = config.tooltip_order;\n\n if (order === undefined) {\n order = config.data_order;\n }\n\n var valueOf = function valueOf(obj) {\n return obj ? obj.value : null;\n }; // if data are not grouped, we sort them by their value\n\n\n if (isString(order) && order.toLowerCase() === 'asc') {\n return function (a, b) {\n return valueOf(a) - valueOf(b);\n };\n } else if (isString(order) && order.toLowerCase() === 'desc') {\n return function (a, b) {\n return valueOf(b) - valueOf(a);\n };\n } else if (isFunction(order)) {\n // if the function is from data_order we need\n // to wrap the returned function in order to format\n // the sorted value to the expected format\n var sortFunction = order;\n\n if (config.tooltip_order === undefined) {\n sortFunction = function sortFunction(a, b) {\n return order(a ? {\n id: a.id,\n values: [a]\n } : null, b ? {\n id: b.id,\n values: [b]\n } : null);\n };\n }\n\n return sortFunction;\n } else if (isArray(order)) {\n return function (a, b) {\n return order.indexOf(a.id) - order.indexOf(b.id);\n };\n }\n } else {\n // if data are grouped, we follow the order of grouped targets\n var ids = $$.orderTargets($$.data.targets).map(function (i) {\n return i.id;\n }); // if it was either asc or desc we need to invert the order\n // returned by orderTargets\n\n if ($$.isOrderAsc() || $$.isOrderDesc()) {\n ids = ids.reverse();\n }\n\n return function (a, b) {\n return ids.indexOf(a.id) - ids.indexOf(b.id);\n };\n }\n };\n\n ChartInternal.prototype.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n var $$ = this,\n config = $$.config,\n titleFormat = config.tooltip_format_title || defaultTitleFormat,\n nameFormat = config.tooltip_format_name || function (name) {\n return name;\n },\n valueFormat = config.tooltip_format_value || defaultValueFormat,\n text,\n i,\n title,\n value,\n name,\n bgcolor;\n\n var tooltipSortFunction = this.getTooltipSortFunction();\n\n if (tooltipSortFunction) {\n d.sort(tooltipSortFunction);\n }\n\n for (i = 0; i < d.length; i++) {\n if (!(d[i] && (d[i].value || d[i].value === 0))) {\n continue;\n }\n\n if ($$.isStanfordGraphType()) {\n // Custom tooltip for stanford plots\n if (!text) {\n title = $$.getStanfordTooltipTitle(d[i]);\n text = \"\" + title;\n }\n\n bgcolor = $$.getStanfordPointColor(d[i]);\n name = sanitise(config.data_epochs); // Epochs key name\n\n value = d[i].epochs;\n } else {\n // Regular tooltip\n if (!text) {\n title = sanitise(titleFormat ? titleFormat(d[i].x, d[i].index) : d[i].x);\n text = \"
\" + (title || title === 0 ? \"\" : \"\");\n }\n\n value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n\n if (value !== undefined) {\n // Skip elements when their name is set to null\n if (d[i].name === null) {\n continue;\n }\n\n name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n }\n }\n\n if (value !== undefined) {\n text += \"\";\n text += \"\";\n text += \"\";\n text += \"\";\n }\n }\n\n return text + \"
\" + title + \"
\" + name + \"\" + value + \"
\";\n };\n\n ChartInternal.prototype.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n var forArc = $$.hasArcType(),\n mouse = d3.mouse(element); // Determin tooltip position\n\n if (forArc) {\n tooltipLeft = ($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2 + mouse[0];\n tooltipTop = ($$.hasType('gauge') ? $$.height : $$.height / 2) + mouse[1] + 20;\n } else {\n svgLeft = $$.getSvgLeft(true);\n\n if (config.axis_rotated) {\n tooltipLeft = svgLeft + mouse[0] + 100;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = $$.x(dataToShow[0].x) + 20;\n } else {\n tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = mouse[1] + 15;\n }\n\n if (tooltipRight > chartRight) {\n // 20 is needed for Firefox to keep tooltip width\n tooltipLeft -= tooltipRight - chartRight + 20;\n }\n\n if (tooltipTop + tHeight > $$.currentHeight) {\n tooltipTop -= tHeight + 30;\n }\n }\n\n if (tooltipTop < 0) {\n tooltipTop = 0;\n }\n\n return {\n top: tooltipTop,\n left: tooltipLeft\n };\n };\n\n ChartInternal.prototype.showTooltip = function (selectedData, element) {\n var $$ = this,\n config = $$.config;\n var tWidth, tHeight, position;\n var forArc = $$.hasArcType(),\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n positionFunction = config.tooltip_position || ChartInternal.prototype.tooltipPosition;\n\n if (dataToShow.length === 0 || !config.tooltip_show) {\n return;\n }\n\n $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\"); // Get tooltip dimensions\n\n tWidth = $$.tooltip.property('offsetWidth');\n tHeight = $$.tooltip.property('offsetHeight');\n position = positionFunction.call(this, dataToShow, tWidth, tHeight, element); // Set tooltip\n\n $$.tooltip.style(\"top\", position.top + \"px\").style(\"left\", position.left + 'px');\n };\n\n ChartInternal.prototype.hideTooltip = function () {\n this.tooltip.style(\"display\", \"none\");\n };\n\n ChartInternal.prototype.setTargetType = function (targetIds, type) {\n var $$ = this,\n config = $$.config;\n $$.mapToTargetIds(targetIds).forEach(function (id) {\n $$.withoutFadeIn[id] = type === config.data_types[id];\n config.data_types[id] = type;\n });\n\n if (!targetIds) {\n config.data_type = type;\n }\n };\n\n ChartInternal.prototype.hasType = function (type, targets) {\n var $$ = this,\n types = $$.config.data_types,\n has = false;\n targets = targets || $$.data.targets;\n\n if (targets && targets.length) {\n targets.forEach(function (target) {\n var t = types[target.id];\n\n if (t && t.indexOf(type) >= 0 || !t && type === 'line') {\n has = true;\n }\n });\n } else if (Object.keys(types).length) {\n Object.keys(types).forEach(function (id) {\n if (types[id] === type) {\n has = true;\n }\n });\n } else {\n has = $$.config.data_type === type;\n }\n\n return has;\n };\n\n ChartInternal.prototype.hasArcType = function (targets) {\n return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n };\n\n ChartInternal.prototype.isLineType = function (d) {\n var config = this.config,\n id = isString(d) ? d : d.id;\n return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isStepType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isSplineType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isAreaType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isBarType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'bar';\n };\n\n ChartInternal.prototype.isScatterType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'scatter';\n };\n\n ChartInternal.prototype.isStanfordType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'stanford';\n };\n\n ChartInternal.prototype.isScatterOrStanfordType = function (d) {\n return this.isScatterType(d) || this.isStanfordType(d);\n };\n\n ChartInternal.prototype.isPieType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'pie';\n };\n\n ChartInternal.prototype.isGaugeType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'gauge';\n };\n\n ChartInternal.prototype.isDonutType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'donut';\n };\n\n ChartInternal.prototype.isArcType = function (d) {\n return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n };\n\n ChartInternal.prototype.lineData = function (d) {\n return this.isLineType(d) ? [d] : [];\n };\n\n ChartInternal.prototype.arcData = function (d) {\n return this.isArcType(d.data) ? [d] : [];\n };\n /* not used\n function scatterData(d) {\n return isScatterType(d) ? d.values : [];\n }\n */\n\n\n ChartInternal.prototype.barData = function (d) {\n return this.isBarType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.lineOrScatterOrStanfordData = function (d) {\n return this.isLineType(d) || this.isScatterType(d) || this.isStanfordType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.barOrLineData = function (d) {\n return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.isSafari = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n };\n\n ChartInternal.prototype.isChrome = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Chrome') >= 0;\n };\n\n ChartInternal.prototype.initZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n startEvent;\n $$.zoom = d3.zoom().on(\"start\", function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n }\n\n startEvent = e;\n config.zoom_onzoomstart.call($$.api, e);\n }).on(\"zoom\", function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n }\n\n $$.redrawForZoom();\n config.zoom_onzoom.call($$.api, $$.x.orgDomain());\n }).on('end', function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n } // if click, do nothing. otherwise, click interaction will be canceled.\n\n\n if (e && startEvent.clientX === e.clientX && startEvent.clientY === e.clientY) {\n return;\n }\n\n config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n });\n\n $$.zoom.updateDomain = function () {\n if (d3.event && d3.event.transform) {\n $$.x.domain(d3.event.transform.rescaleX($$.subX).domain());\n }\n\n return this;\n };\n\n $$.zoom.updateExtent = function () {\n this.scaleExtent([1, Infinity]).translateExtent([[0, 0], [$$.width, $$.height]]).extent([[0, 0], [$$.width, $$.height]]);\n return this;\n };\n\n $$.zoom.update = function () {\n return this.updateExtent().updateDomain();\n };\n\n return $$.zoom.updateExtent();\n };\n\n ChartInternal.prototype.zoomTransform = function (range) {\n var $$ = this,\n s = [$$.x(range[0]), $$.x(range[1])];\n return $$.d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0);\n };\n\n ChartInternal.prototype.initDragZoom = function () {\n var $$ = this;\n var d3 = $$.d3;\n var config = $$.config;\n var context = $$.context = $$.svg;\n var brushXPos = $$.margin.left + 20.5;\n var brushYPos = $$.margin.top + 0.5;\n\n if (!(config.zoom_type === 'drag' && config.zoom_enabled)) {\n return;\n }\n\n var getZoomedDomain = function getZoomedDomain(selection) {\n return selection && selection.map(function (x) {\n return $$.x.invert(x);\n });\n };\n\n var brush = $$.dragZoomBrush = d3.brushX().on(\"start\", function () {\n $$.api.unzoom();\n $$.svg.select(\".\" + CLASS.dragZoom).classed(\"disabled\", false);\n config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n }).on(\"brush\", function () {\n config.zoom_onzoom.call($$.api, getZoomedDomain(d3.event.selection));\n }).on(\"end\", function () {\n if (d3.event.selection == null) {\n return;\n }\n\n var zoomedDomain = getZoomedDomain(d3.event.selection);\n\n if (!config.zoom_disableDefaultBehavior) {\n $$.api.zoom(zoomedDomain);\n }\n\n $$.svg.select(\".\" + CLASS.dragZoom).classed(\"disabled\", true);\n config.zoom_onzoomend.call($$.api, zoomedDomain);\n });\n context.append(\"g\").classed(CLASS.dragZoom, true).attr(\"clip-path\", $$.clipPath).attr(\"transform\", \"translate(\" + brushXPos + \",\" + brushYPos + \")\").call(brush);\n };\n\n ChartInternal.prototype.getZoomDomain = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n return [min, max];\n };\n\n ChartInternal.prototype.redrawForZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n zoom = $$.zoom,\n x = $$.x;\n\n if (!config.zoom_enabled) {\n return;\n }\n\n if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n return;\n }\n\n zoom.update();\n\n if (config.zoom_disableDefaultBehavior) {\n return;\n }\n\n if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n }\n\n $$.redraw({\n withTransition: false,\n withY: config.zoom_rescale,\n withSubchart: false,\n withEventRect: false,\n withDimension: false\n });\n\n if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'mousemove') {\n $$.cancelClick = true;\n }\n };\n\n return c3;\n\n}));\n","export function testObject(input) {\n if (input !== null && typeof input.getTime === 'function' && !isNaN(input.getTime())) {\n return true;\n }\n return false;\n}\n\nexport function testString(input) {\n const ISO_8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n return ISO_8601.test(input);\n}\n\nexport default function (input) {\n if (typeof input === 'object') {\n return testObject(input);\n } else if (typeof input === 'string') {\n return testString(input);\n }\n return false;\n}\n","// Modifiers\nimport * as append from './modifiers/append';\nimport * as del from './modifiers/delete';\nimport * as filter from './modifiers/filter';\nimport * as insert from './modifiers/insert';\nimport * as select from './modifiers/select';\nimport * as sort from './modifiers/sort';\nimport * as update from './modifiers/update';\n\n// Utils\nimport analyses from './utils/analyses';\nimport { extend } from '../utils/extend';\nimport parsers from './utils/parsers';\n\nexport const Dataset = function (config = {}) {\n if (this instanceof Dataset === false) {\n return new Dataset(config);\n }\n\n this.matrix = [\n ['Index']\n ];\n this.meta = {\n type: undefined\n };\n this.config = config;\n}\n\nDataset.prototype.data = function (arr) {\n if (!arguments.length) return this.matrix;\n this.matrix = (arr instanceof Array ? arr : null);\n return this;\n};\n\nDataset.prototype.set = function (coords, value) {\n if (arguments.length < 2 || coords.length < 2) {\n throw Error('Incorrect arguments provided for #set method');\n }\n\n var colIndex = 'number' === typeof coords[0] ? coords[0] : this.matrix[0].indexOf(coords[0]),\n rowIndex = 'number' === typeof coords[1] ? coords[1] : select.selectColumn.call(this, 0).indexOf(coords[1]);\n\n var colResult = select.selectColumn.call(this, coords[0]),\n rowResult = select.selectRow.call(this, coords[1]);\n\n // Column doesn't exist, create and reset colIndex\n if (colResult.length < 1) {\n append.appendColumn.call(this, String(coords[0]));\n colIndex = this.matrix[0].length - 1;\n }\n\n // Row doesn't exist, create and reset rowIndex\n if (rowResult.length < 1) {\n append.appendRow.call(this, String(coords[1]));\n rowIndex = this.matrix.length - 1;\n }\n\n // Set provided value\n this.matrix[ rowIndex ][ colIndex ] = value;\n return this;\n};\n\nDataset.prototype.type = function(str){\n if (!arguments.length) return this.meta['type'];\n this.meta['type'] = (str ? String(str) : undefined);\n return this;\n};\n\nextend(Dataset.prototype, append);\nextend(Dataset.prototype, del);\nextend(Dataset.prototype, filter);\nextend(Dataset.prototype, insert);\nextend(Dataset.prototype, select);\nextend(Dataset.prototype, sort);\nextend(Dataset.prototype, update);\nextend(Dataset.prototype, analyses);\nDataset.parser = parsers(Dataset);\n\nexport default Dataset;\n","import { each } from '../../utils/each';\nimport { extend } from '../../utils/extend';\n\nfunction average(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0,\n avg = null;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum / set.length;\n}\n\nfunction maximum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.max.apply(Math, nums);\n}\n\nfunction minimum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.min.apply(Math, nums);\n}\n\nfunction sum(arr, start, end){\n // Copy set with given range\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum;\n}\n\nconst getColumnAverage = function (arr) {\n return average(arr, 1);\n};\nconst getRowAverage = getColumnAverage;\n\nconst getColumnSum = function (arr) {\n return sum(arr, 1);\n};\nconst getRowSum = getColumnSum;\n\nconst getColumnMaximum = function (arr) {\n return maximum(arr, 1);\n};\nconst getRowMaximum = getColumnMaximum;\n\nconst getColumnMinimum = function (arr) {\n return minimum(arr, 1);\n};\nconst getRowMinimum = getColumnMinimum;\n\nconst getColumnLabel = function (arr) {\n return arr[0];\n};\nconst getRowIndex = getColumnLabel;\n\nexport default {\n average,\n maximum,\n minimum,\n sum,\n getColumnAverage,\n getRowAverage,\n getColumnSum,\n getRowSum,\n getColumnMaximum,\n getRowMaximum,\n getColumnMinimum,\n getRowMinimum,\n getColumnLabel,\n getRowIndex,\n};\n","/**\n * Strip html tags from string\n *\n * @param {string} string The string to strip\n * @return {string}\n * @public\n */\n\nexport function stripHtmlTags(inputString) {\n if (typeof inputString !== 'string') {\n return inputString;\n }\n return inputString.replace(/(<([^>]+)>)/ig, '');\n}\n","import { each } from './each';\n\nexport function extendDeep(target) {\n for (var i = 1; i < arguments.length; i++) {\n each(arguments[i], function(prop, key){\n if (( typeof target[key] !== 'undefined' && typeof prop !== 'undefined' ) &&\n ( typeof target[key] === 'object' && typeof prop === 'object' ) &&\n ( target[key] !== null && prop !== null )) {\n extendDeep(target[key], prop);\n }\n else {\n target[key] = prop;\n }\n });\n }\n return target;\n}\n","import downloadResults from './download-results';\n\nexport default function renderDownloadButton({\n element,\n label = 'Download',\n type = 'json',\n data,\n} = {}) {\n const btnClass = 'keen-dataviz-button';\n const isBtnRendered = [...element.parentNode.children]\n .find(child => child.className === btnClass);\n if (isBtnRendered) return;\n\n const button = document.createElement('button');\n button.innerText = label;\n button.className = btnClass;\n button.addEventListener('click', event => downloadResults({ event, type, data}));\n element.parentNode.insertBefore(button, element.nextSibling);\n};","import domtoimage from 'dom-to-image';\nimport { saveAs } from 'file-saver';\n\nexport default function exportImage(obj) {\n const { node, quality, bgcolor } = obj;\n if (quality) {\n if (quality < 0 || quality > 1) throw Error('Please provide image quality between 0 and 1');\n domtoimage.toBlob(node, { quality, bgcolor })\n .then((blob) => {\n saveAs(blob, 'chart.jpeg');\n });\n }\n\n if (!quality) {\n domtoimage.toBlob(node)\n .then((blob) => {\n saveAs(blob, 'chart.png');\n });\n }\n}\n","function generateCsvContent(data) {\n let csvContent = '';\n\n data.forEach((row, i) => {\n row.forEach((cell, j) => {\n csvContent += String(cell).replace(/,/g, '');\n if (row.length > j + 1) {\n csvContent += ',';\n }\n });\n if (data.length > i + 1) {\n csvContent += '\\n';\n }\n });\n return `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n}\n\nexport default function exportData(obj) {\n const { type, data } = obj;\n const supportedFormats = ['json', 'csv'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = supportedFormats[0];\n let content = '';\n\n if (format === 'json') {\n content = `data:text/json;charset=utf-8, ${encodeURIComponent(JSON.stringify(data))}`;\n }\n\n if (format === 'csv') {\n content = generateCsvContent(data);\n fileFormat = format;\n }\n\n const htmlElement = document.createElement('a');\n htmlElement.setAttribute('href', content);\n htmlElement.setAttribute('download', `${fileName}.${fileFormat}`);\n document.body.appendChild(htmlElement);\n htmlElement.click();\n document.body.removeChild(htmlElement);\n}\n","/*!\n *\n * Rangeable\n * Copyright (c) 2018 Karl Saunders (mobius1(at)gmx(dot)com)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.1.6\n *\n */\n(function(i,j){\"object\"==typeof exports?module.exports=j(\"Rangeable\"):\"function\"==typeof define&&define.amd?define([],j):i.Rangeable=j(\"Rangeable\")})(\"undefined\"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&\"function\"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=[\"ruler\"],\"string\"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:\"single\",tooltips:\"always\",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:\"rangeable-input\",container:\"rangeable-container\",vertical:\"rangeable-vertical\",progress:\"rangeable-progress\",handle:\"rangeable-handle\",track:\"rangeable-track\",multiple:\"rangeable-multiple\",disabled:\"rangeable-disabled\",tooltips:\"rangeable-tooltips\",tooltip:\"rangeable-tooltip\",visible:\"rangeable-tooltips--visible\"}},t),this.mouseAxis={x:\"clientX\",y:\"clientY\"},this.trackSize={x:\"width\",y:\"height\"},this.trackPos={x:\"left\",y:\"top\"},this.lastPos=0,this.double=\"double\"===this.config.type||Array.isArray(this.config.value),this.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version=\"0.1.6\",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?\"y\":\"x\",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i(\"div\",u.container),w=i(\"div\",u.track),x=i(\"div\",u.progress),y=i(\"div\",u.handle),z=i(\"div\",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i(\"div\",u.handle),i(\"div\",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i(\"div\",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+\"px\"),t.tooltips&&(v.classList.add(u.tooltips),\"string\"==typeof t.tooltips&&\"always\"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i(\"div\",\"rangeable-buffers\");this.input.values.forEach(function(C,D){var E=i(\"div\",\"rangeable-buffer\");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i(\"div\",\"rangeable-buffer\"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return\"mousedown\"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add(\"dragging\"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add(\"active\"),this.setValueFromPosition(s),this.touch?(document.addEventListener(\"touchmove\",this.events.move,!1),document.addEventListener(\"touchend\",this.events.stop,!1),document.addEventListener(\"touchcancel\",this.events.stop,!1)):(document.addEventListener(\"mousemove\",this.events.move,!1),document.addEventListener(\"mouseup\",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove(\"dragging\"),this.onEnd(),this.activeHandle.classList.remove(\"active\"),this.activeHandle=!1,this.touch?(document.removeEventListener(\"touchmove\",this.events.move),document.removeEventListener(\"touchend\",this.events.stop),document.removeEventListener(\"touchcancel\",this.events.stop)):(document.removeEventListener(\"mousemove\",this.events.move),document.removeEventListener(\"mouseup\",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event(\"change\")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case\"ArrowRight\":case\"ArrowUp\":t.stepUp(v);break;case\"ArrowLeft\":case\"ArrowDown\":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle(\"combined-tooltip\",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+\" - \"+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event(\"input\")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?\"bottom\":\"left\"]=s+\"px\",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+\"px\"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest(\".\"+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute(\"tabindex\")}):this.nodes.handle.removeAttribute(\"tabindex\"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},\"start move stop update reset native keydown\".split(\" \").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener(\"scroll\",this.events.scroll,!1),window.addEventListener(\"resize\",this.events.resize,!1),document.addEventListener(\"keydown\",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.input.addEventListener(\"input\",this.events.native,!1),this.input.form&&this.input.form.addEventListener(\"reset\",this.events.reset,!1)},r.unbind=function(){document.removeEventListener(\"scroll\",this.events.scroll),window.removeEventListener(\"resize\",this.events.resize),document.removeEventListener(\"keydown\",this.events.keydown),this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.input.removeEventListener(\"input\",this.events.native),this.input.form&&this.input.form.removeEventListener(\"reset\",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q});","import { Dataviz, Dataset } from './index';\n\nconst env = typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {};\n\nexport const extendKeenGlobalObject = function(env) {\n env.KeenDataviz = Dataviz;\n env.KeenDataset = Dataset;\n\n // just for backward compatibility\n env.Keen = env.Keen || {};\n env.Keen.Dataset = Dataset;\n env.Keen.Dataviz = Dataviz;\n};\n\nif (typeof KEEN_GLOBAL_OBJECT !== 'undefined'\n && KEEN_GLOBAL_OBJECT) {\n extendKeenGlobalObject(env);\n}\n\nexport let keenGlobals = undefined;\nif (typeof webpackKeenGlobals !== 'undefined') {\n keenGlobals = webpackKeenGlobals;\n}\n\nexport { Dataviz, Dataset } from './index';\nexport default Dataviz;\n","/* eslint-env browser */\nimport * as d3 from 'd3';\nimport c3 from 'c3';\n\nimport pkg from '../package.json';\nimport data from './data';\nimport { Dataset } from './dataset';\n\n// Utils\nimport { each } from './utils/each';\nimport isDateString from './utils/assert-date-string';\nimport { stripHtmlTags } from './utils/strip-html-tags';\nimport { escapeHtml } from './utils/escape-html';\nimport libraries from './libraries';\nimport { extendDeep } from './utils/extend-deep';\nimport exportImage from './utils/export-svg';\nimport exportData from './utils/export-data';\nimport renderDownloadButton from './utils/render-download-btn';\nimport renderExecutionMetadata from './utils/render-execution-metadata';\nimport copyToClipboard from './utils/copy-to-clipboard';\n\nimport palettes from './palettes/index';\n\n// Constructor\nexport const Dataviz = function (options = {}) {\n if (this instanceof Dataviz === false) {\n return new Dataviz(options);\n }\n\n this.c3 = c3; // expose for use outside\n this.d3 = d3;\n\n const datavizInstance = this;\n const defaultOptions = {\n showDeprecationWarnings: true,\n showLoadingSpinner: false,\n\n container: undefined, // querySelector of container, for example '#someDiv'\n containerElement: undefined, // HTML parent element for the chart\n\n // width: undefined, *deprecated* - use CSS\n // height: undefined, *deprecated* - use CSS\n\n title: undefined,\n showTitle: true,\n\n subtitle: undefined,\n\n notes: undefined,\n theme: 'keen-dataviz',\n\n colors: [\n '#00bbde', '#fe6672', '#eeb058', '#8a8ad6', '#ff855c', '#00cfbb',\n '#5a9eed', '#73d483', '#c879bb', '#0099b6', '#d74d58', '#cb9141',\n '#6b6bb6', '#d86945', '#00aa99', '#4281c9', '#57b566', '#ac5c9e',\n '#27cceb', '#ff818b', '#f6bf71', '#9b9be1', '#ff9b79', '#26dfcd',\n '#73aff4', '#87e096', '#d88bcb',\n ],\n\n colorMapping: {},\n ui: {\n executionMetadata: true,\n },\n utils: {\n clickToCopyToClipboard: true,\n },\n\n indexBy: 'timeframe.start',\n labels: [],\n labelMapping: {},\n labelMappingRegExp: undefined,\n errorMapping: {},\n showErrorMessages: true,\n library: 'default',\n sortGroups: undefined,\n sortIntervals: undefined,\n\n results: undefined, // raw data\n\n // C3 chartOptions\n type: undefined,\n stacked: false,\n dateFormat: undefined,\n legend: {\n show: true,\n position: 'right',\n alignment: 'top',\n label: {\n textMaxLength: 12\n },\n pagination: {\n offset: 0, // start from\n limit: 5 // items per page\n },\n tooltip: {\n show: true,\n pointer: true\n },\n sort: undefined\n },\n\n axis: {},\n color: {},\n size: {\n // control it with CSS of .c3-chart\n },\n padding: {\n top: 15\n },\n point: {\n focus: {\n expand: {\n enabled: false\n }\n },\n r: 2,\n show: true,\n sensitivity: 300\n },\n tooltip: {\n horizontal: true,\n format: {\n // https://c3js.org/samples/tooltip_format.html\n }\n },\n transition: {\n // duration: 0\n },\n data: {\n order: null,\n selection: {\n enabled: true,\n draggable: true,\n multiple: true\n },\n onselected: (d, element) => {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n },\n },\n grid: {\n y: {\n show: true\n }\n },\n partialIntervalIndicator: {\n show: undefined,\n className: 'partial-interval-indicator'\n },\n timezone: 'UTC',\n table: {\n schema: 'static',\n },\n renderOnVisible: false,\n funnel: {\n lines: true,\n resultValues: true,\n percents: {\n show: false,\n countingMethod: 'absolute',\n decimals: 0\n },\n marginBetweenElements: false,\n hover: true,\n effect3d: 'both-sides',\n minimalSize: false,\n },\n react: false,\n range: false,\n sparkline: false,\n choropleth: {\n map: 'world',\n borders: {\n show: true,\n size: 0.5,\n color: '#000'\n },\n showSlider: false\n },\n heatmap: {},\n };\n\n this.config = { ...extendDeep(defaultOptions, options) };\n\n if (options.palette) {\n if (!palettes[options.palette]){\n console.log('Colors pallete not found', options.palette);\n }\n this.config.colors = palettes[options.palette].colors;\n }\n\n if (this.config.type) {\n // backward compatibility with v2016... areachart -> area\n this.config.type = convertChartTypes(this.config.type);\n }\n\n // overwriting options for range chart\n if(this.config.type && this.config.type.includes('-range')) {\n this.config.range = true;\n this.config.type = this.config.type.replace('-range', '');\n this.config.legend.show = false;\n this.config.stacking = 'normal';\n this.config.labels = ['Max', 'Min'];\n this.config.colors = [\n this.config.colors[0],\n this.config.colors[0],\n ];\n }\n\n // overwriting stacked when stacking added\n if (this.config.stacking) {\n this.config.stacked = true;\n }\n\n // overwriting options for sparkline chart\n if (this.config.sparkline) {\n this.config.legend.show = false;\n this.config.axis = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n this.config.grid = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n }\n\n // get DOM node by query\n if (this.config.container) {\n this.el(this.config.container);\n }\n\n if (options.legend !== undefined && !options.legend) {\n this.config.legend = {\n ...options,\n show: false\n };\n }\n\n if (options.color && options.color.pattern) {\n // to match c3 options\n this.config.colors = options.color.pattern;\n }\n\n if (this.config.legend\n && this.config.legend.tooltip\n && this.config.legend.tooltip.show === false\n && this.config.tooltip.show === undefined) {\n this.config.tooltip = { show: false };\n }\n\n this.dataset = new Dataset(this.config);\n this.view = {\n _prepared: false,\n _rendered: false,\n _artifacts: { /* state bin */ }\n };\n\n Dataviz.visuals.push(this);\n\n if (this.config.showLoadingSpinner) {\n this.prepare();\n }\n\n if (!!this.config.results) {\n this.render(this.config.results);\n }\n this.config.firstVisibilityState = document.visibilityState;\n\n if (!this.config.utils.clickToCopyToClipboard) {\n this.config.data.onselected = () => {};\n }\n\n if (options.data && options.data.onselected) {\n this.config.data.onselected = (d, element) => {\n const callback = options.data.onselected.bind(null, d, element);\n callback();\n\n if (this.config.utils.clickToCopyToClipboard) {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n }\n };\n }\n\n};\n\n\nDataviz.libraries = { default: {} };\nif (typeof window !== 'undefined') {\n Dataviz.libraries.default = libraries(Dataviz);\n}\nDataviz.visuals = [];\n\nDataviz.register = function (name, actions) {\n Dataviz.libraries[name] = Dataviz.libraries[name] || {};\n each(actions, function(method, key){\n Dataviz.libraries[name][key] = method;\n });\n};\n\nDataviz.find = function(target){\n if (!arguments.length) return Dataviz.visuals;\n const el = target.nodeName ? target : document.querySelector(target);\n let match = null;\n each(Dataviz.visuals, function(visual){\n if (el == visual.config.container){\n match = visual;\n return false;\n }\n });\n return match;\n};\n\n\n // Prototype\n // ------------\n\nDataviz.prototype.attributes = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n const view = this.config;\n each(obj, function(prop, key){\n // Handle deprecated property names\n if (key === 'chartType') {\n key = 'type';\n }\n view[key] = prop;\n });\n return this;\n};\n\nDataviz.prototype.call = function(fn){\n fn.call(this);\n return this;\n};\n\nDataviz.prototype.chartOptions = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n this.config = extendDeep(this.config, obj);\n return this;\n};\n\nDataviz.prototype.colors = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.colors;\n this.config.colors = (arr instanceof Array ? arr : []);\n return this;\n};\n\nDataviz.prototype.colorMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })');\n }\n const datavizInstance = this;\n if (!arguments.length) return this.config.colorMapping;\n if (obj === null) {\n this.config.colorMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n datavizInstance.config.colorMapping[key] = (value ? value : null);\n });\n }\n return this;\n};\n\nDataviz.prototype.data = data;\n\nDataviz.prototype.dateFormat = function(val){\n if (this.config.showDeprecationWarnings) {\n console.log('.dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.dateFormat;\n if (typeof val === 'string' || typeof val === 'function') {\n this.config.dateFormat = val;\n }\n else {\n this.config.dateFormat = undefined;\n }\n return this;\n};\n\nDataviz.prototype.destroy = function(){\n const library = this.library();\n const type = this.config.type;\n const element = this.el();\n\n // Call destroy method if present\n if (Dataviz.libraries[library]\n && Dataviz.libraries[library][type]){\n Dataviz.libraries[library][type].destroy.call(this);\n }\n\n // Clear rendered artifacts, state bin\n if (element) {\n element.innerHTML = '';\n }\n this.view._prepared = false;\n this.view._rendered = false;\n this.view._artifacts = {};\n return this;\n};\n\nDataviz.prototype.el = function(target){\n const datavizInstance = this;\n if (!arguments.length) return this.config.containerElement;\n domReady(function(){\n if (target && target !== null) {\n if (target.nodeName) {\n datavizInstance.config.containerElement = target;\n }\n else if (document.querySelector) {\n datavizInstance.config.containerElement = document.querySelector(target);\n }\n }\n else {\n datavizInstance.config.containerElement = undefined;\n }\n });\n return this;\n};\n\nDataviz.prototype.height = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.height() is deprecated - use CSS classes');\n }\n return this;\n};\n\n// IMPORTANT: Must be run before data parsing\nDataviz.prototype.indexBy = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.indexBy;\n this.config.indexBy = (str ? String(str) : 'timeframe.start');\n return this;\n};\n\nDataviz.prototype.labels = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })');\n }\n\n if (!arguments.length) return this.config.labels;\n this.config.labels = (arr instanceof Array ? arr : []);\n\n setLabels(this);\n\n return this;\n};\n\nfunction setLabels(datavizInstance){\n // Write labels\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.updateColumn(0, function(value, index){\n if (datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n else {\n datavizInstance.dataset.updateRow(0, function(value, index){\n if (index > 0 && datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.labelMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.labelMapping;\n if (obj === null) {\n this.config.labelMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n this.config.labelMapping[key] = (value ? value : null);\n }.bind(this));\n }\n\n mapLabels(this);\n\n return this;\n};\n\nfunction mapLabelsExec({ datavizInstance, value }){\n if (datavizInstance.config.labelMappingRegExp){\n let valueAfterMatching = value;\n datavizInstance.config.labelMappingRegExp.forEach(regExpAndLabel => {\n if (regExpAndLabel.length > 1) {\n let regExpObj = regExpAndLabel[0];\n if (regExpObj.test(value)){\n valueAfterMatching = regExpAndLabel[1];\n }\n }\n });\n return stripHtmlTags(valueAfterMatching);\n }\n if (datavizInstance.config.labelMapping[value]) {\n return stripHtmlTags(String(datavizInstance.config.labelMapping[value]));\n }\n return stripHtmlTags(value);\n}\n\nfunction mapLabels(datavizInstance){\n // Write labels\n if (!datavizInstance.config.labelMappingDimension) {\n // if not defined use deprecated auto-detecting\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.config.labelMappingDimension = 'row';\n } else {\n datavizInstance.config.labelMappingDimension = 'column';\n }\n }\n\n if (datavizInstance.config.labelMappingDimension === 'row'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateColumn(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n\n if (datavizInstance.config.labelMappingDimension === 'column'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateRow(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.library = function(str){\n if (!arguments.length) return this.config['library'];\n this.config['library'] = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.message = function(){\n if (this.view._rendered) {\n this.destroy();\n }\n if (this.el()) {\n this.el().innerHTML = '';\n const message = Dataviz.libraries.default.message;\n if (message.render) {\n message.render.apply(this, arguments);\n }\n }\n return this;\n};\n\nDataviz.prototype.notes = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.notes;\n this.config.notes = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.prepare = function(){\n const datavizInstance = this;\n\n if (!this.el()) {\n throw `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n return;\n }\n\n domReady(function(){\n if (datavizInstance.view._rendered) {\n datavizInstance.destroy();\n }\n if (datavizInstance.el()) {\n datavizInstance.el().innerHTML = '';\n const loader = Dataviz.libraries.default.spinner;\n if (loader.render) {\n loader.render.call(datavizInstance);\n }\n datavizInstance.view._prepared = true;\n }\n });\n\n return this;\n};\n\nDataviz.prototype.render = function(results = undefined){\n const datavizInstance = this;\n\n if (!!results) {\n const firstResult = results[0] || results;\n if (\n firstResult.query\n && firstResult.query.interval\n && firstResult.query.timeframe\n && typeof firstResult.query.timeframe === 'string'\n && firstResult.query.timeframe.includes('this_')\n && this.config.partialIntervalIndicator\n && this.config.partialIntervalIndicator.show === undefined\n )\n {\n this.config.partialIntervalIndicator.show = true;\n }\n\n if (Array.isArray(results)) {\n const timeframes = results.map(resultItem => resultItem.query.timeframe);\n timeframes.forEach(resultTimeframe => {\n let foundDifferent = timeframes.find(timeframeItem =>\n JSON.stringify(timeframeItem) !== JSON.stringify(resultTimeframe)\n );\n if (foundDifferent){\n const msg = 'Timeframes of the queries should be the same';\n console.error(msg);\n throw msg;\n }\n });\n // first result is important to prepare X on the chart\n return datavizInstance\n .data(results[0])\n .call(() => {\n const input = results[0];\n this.dataset.deleteColumn(1);\n for (let result of results) {\n let label = `${input.query.event_collection} ${input.query.analysis_type}`;\n let ds2 = Dataset.parser('interval')(result);\n datavizInstance.dataset.appendColumn(label, ds2.selectColumn(1).slice(1));\n }\n })\n .render();\n }\n\n return datavizInstance.data(results).render();\n }\n if (\n (!!this.config.labelMapping && Object.keys(this.config.labelMapping).length > 0)\n ||\n (!!this.config.labelMappingRegExp && this.config.labelMappingRegExp.length > 0)\n ){\n mapLabels(datavizInstance);\n }\n if (!!this.config.labels && Object.keys(this.config.labels).length > 0){\n setLabels(datavizInstance);\n }\n if (!!this.config.sortGroups) {\n sortGroups(datavizInstance);\n }\n if (!!this.config.sortIntervals) {\n sortIntervals(datavizInstance);\n }\n\n const loader = Dataviz.libraries.default.spinner;\n const library = this.config.library;\n const type = this.config.type;\n const containerElement = this.el();\n\n if (!containerElement || containerElement === undefined) {\n const msg = `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n console.error(msg);\n throw msg;\n return;\n }\n\n let returnValue = datavizInstance;\n\n if (datavizInstance.config.renderAsPromise) {\n returnValue = new Promise((resolve, reject) => {\n const customCallback = this.config.onrendered;\n datavizInstance.config.onrendered = () => {\n if (customCallback) {\n customCallback();\n }\n resolve(datavizInstance);\n }\n });\n }\n\n domReady(function(){\n const shouldRenderExecutionMetadata = datavizInstance.execution_metadata\n && datavizInstance.config.ui\n && datavizInstance.config.ui.executionMetadata;\n const shouldRenderDownloadBtn = datavizInstance.config.ui\n && datavizInstance.config.ui.buttons\n && datavizInstance.config.ui.buttons.download\n && datavizInstance.config.ui.buttons.download.type;\n if (datavizInstance.view._prepared && loader.destroy) {\n loader.destroy.apply(datavizInstance, arguments);\n }\n containerElement.innerHTML = '';\n\n if (Dataviz.libraries[library] === 'undefined'){\n // Error: Unregistered library\n const msg = `Incorrect library`;\n datavizInstance.message(msg);\n throw msg;\n return;\n }\n else {\n if (typeof Dataviz.libraries[library][type] === 'undefined') {\n const msg = `Incorrect chart type`;\n const mappedMsg = this.config.errorMapping[msg] || msg;\n datavizInstance.message(mappedMsg);\n throw msg;\n return;\n }\n else {\n buildDomWrapper(containerElement,\n datavizInstance.config\n );\n if (shouldRenderDownloadBtn) {\n renderDownloadButton({\n element: containerElement,\n data: datavizInstance.dataset.matrix,\n type: datavizInstance.config.ui.buttons.download.type,\n label: datavizInstance.config.ui.buttons.download.label,\n })\n }\n if (shouldRenderExecutionMetadata) {\n renderExecutionMetadata({\n element: containerElement,\n data: datavizInstance.execution_metadata,\n })\n }\n const { renderOnVisible } = datavizInstance.config;\n if(renderOnVisible){\n if(typeof IntersectionObserver !== 'undefined'){\n const chartVisibleCallback = (events, observer) => {\n events.forEach(el => {\n if(el.isIntersecting){\n if(!datavizInstance.view._rendered){\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n })\n }\n const observer = new IntersectionObserver(chartVisibleCallback);\n observer.observe(containerElement);\n return;\n }\n }\n if(datavizInstance.config.firstVisibilityState === 'hidden'){\n if(typeof document !== 'undefined') {\n let hidden, visibilityChange;\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n const handleVisibilityChange = () => {\n if(!document[hidden] && datavizInstance.view._artifacts.c3) {\n datavizInstance.view._artifacts.c3.load(datavizInstance.dataset.matrix);\n }\n }\n if(typeof document.addEventListener !== \"undefined\" ||\n hidden !== undefined){\n document.addEventListener(visibilityChange, handleVisibilityChange, {\n once: true\n });\n }\n }\n }\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n });\n\n return returnValue;\n};\n\nDataviz.prototype.sortGroups = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortGroups;\n this.config.sortGroups = (str ? String(str) : null);\n\n sortGroups(this, str);\n\n return this;\n};\n\nfunction sortGroups(datavizInstance){\n // Sort groups\n if (datavizInstance.config.sortGroups && datavizInstance.data().length > 1) {\n if (isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.sortColumns(datavizInstance.config.sortGroups, datavizInstance.dataset.getColumnSum);\n }\n else {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortGroups, datavizInstance.dataset.getRowSum);\n }\n }\n}\n\nDataviz.prototype.sortIntervals = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortIntervals;\n this.config.sortIntervals = (str ? String(str) : null);\n\n sortIntervals(this);\n\n return this;\n};\n\nfunction sortIntervals(datavizInstance){\n if (datavizInstance.config.sortIntervals) {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortIntervals);\n }\n}\n\nDataviz.prototype.stacked = function(bool){\n if (this.config.showDeprecationWarnings) {\n console.log('.stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.stacked;\n this.config.stacked = bool ? true : false;\n return this;\n};\n\nDataviz.prototype.theme = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.theme;\n this.config.theme = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.title = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.title;\n this.config.title = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.type = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.type;\n this.config.type = (str ? convertChartTypes(str) : null);\n return this;\n};\n\nDataviz.prototype.update = function(){\n const library = this.config.library;\n const type = this.config.type;\n const element = this.el();\n if (library && type && element && Dataviz.libraries[library][type].update) {\n Dataviz.libraries[library][type].update.apply(this, arguments);\n }\n return this;\n};\n\nDataviz.prototype.width = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.width() is deprecated - use CSS classes');\n }\n return this;\n};\n\nDataviz.prototype.exportImage = function({ quality = 0, bgcolor = '#fff' } = {}) {\n exportImage({\n node: this.config.containerElement,\n quality,\n bgcolor,\n });\n};\n\nDataviz.prototype.exportData = function(type='json') {\n exportData({\n data: this.dataset.matrix,\n type,\n });\n};\n\n// Deprecations\nDataviz.prototype.chartType = Dataviz.prototype.type;\nDataviz.prototype.error = Dataviz.prototype.message;\nDataviz.prototype.parseRawData = Dataviz.prototype.data;\nDataviz.prototype.parseRequest = function(){\n // this.emit('error', 'This method is no longer supported. Use .data() instead: https://github.com/keen/keen-dataviz.js#data');\n return this;\n};\nDataviz.prototype.initialize = function(){\n // this.emit('error', 'This method is no longer supported, and can be omitted as it has no impact');\n return this;\n};\n\nDataviz.version = pkg.version;\n\n// Private\n\nfunction buildDomWrapper(el, options) {\n let html = '';\n let chart100percentWide = '';\n let rangeChart = '';\n if (options.legend.position === 'top' || options.legend.position === 'bottom') {\n chart100percentWide = 'c3-chart-100-percent';\n }\n if (options.range) {\n rangeChart = 'keen-dataviz-range';\n }\n let container = `
`;\n const verticalAlignment = ['top', 'middle', 'bottom'];\n const horizontalAlignment = ['left', 'center', 'right'];\n let align = 'horizontal';\n let legendItemsAlign = 'center';\n if (horizontalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n if (options.legend.position === 'left' || options.legend.position === 'right') {\n align = 'vertical';\n if (verticalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n }\n if (options.legend && options.legend.show) {\n if (options.legend.position === 'top' || options.legend.position === 'left') {\n container = `
${container}`;\n } else {\n container = `${container}
`;\n }\n }\n if(!options.react){\n html += `
`;\n }\n if (options.title && options.showTitle) {\n html += `
${options.title}
`;\n }\n if (options.subtitle) {\n html += `
${options.subtitle}
`;\n }\n html += `
${container}
`;\n if (options.notes) {\n html += `
${options.notes}
`;\n }\n if(!options.react){\n html += '
';\n }\n\n el.innerHTML = html;\n}\n\nfunction convertChartTypes(str) {\n const map = {\n areachart: 'area',\n barchart: 'horizontal-bar',\n columnchart: 'bar',\n linechart: 'line',\n piechart: 'pie',\n };\n return map[str] || str;\n}\n\nfunction testDom(fn) {\n if (/in/.test(document.readyState)) {\n setTimeout(() => {\n testDom(fn);\n }, 9);\n } else {\n fn();\n }\n}\n\nfunction domReady(fn) {\n if (typeof document !== 'undefined' || typeof window === 'undefined') {\n fn();\n return;\n }\n // Firefox 3.5 shim\n if (document.readyState == null && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', function DOMContentLoaded() {\n document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);\n document.readyState = 'complete';\n }, false);\n document.readyState = 'loading';\n }\n testDom(fn);\n}\n\nexport { Dataset } from './dataset';\n\nexport default Dataviz;\n","import { each } from '../../utils/each';\n\nexport function deleteColumn(q) {\n const self = this;\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n each(self.matrix, function(row, i){\n self.matrix[i].splice(index, 1);\n });\n }\n return self;\n}\n\nexport function deleteRow(q) {\n var index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n this.matrix.splice(index, 1);\n }\n return this;\n}\n","import { each } from '../../utils/each';\n\nexport function filterColumns(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i) {\n clone.push([]);\n });\n\n each(self.matrix[0], function(col, i){\n var selectedColumn = self.selectColumn(i);\n if (i == 0 || fn.call(self, selectedColumn, i)) {\n each(selectedColumn, function(cell, ri){\n clone[ri].push(cell);\n });\n }\n });\n\n self.data(clone);\n return self;\n}\n\nexport function filterRows(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i){\n if (i == 0 || fn.call(self, row, i)) {\n clone.push(row);\n }\n });\n\n self.data(clone);\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function insertColumn(index, str, input) {\n const self = this;\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n\n self.matrix[0].splice(index, 0, label);\n each(self.matrix, function(row, i) {\n var cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].splice(index, 0, cell);\n }\n });\n\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat( createNullList(self.matrix.length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n self.matrix[0].splice(index, 0, label);\n each(input, function(value, i){\n self.matrix[i+1].splice(index, 0, value);\n });\n\n }\n return self;\n}\n\nexport function insertRow(index, str, input) {\n const self = this;\n const newRow = [];\n const label = (str !== undefined) ? str : null;\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i) {\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.splice(index, 0, newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n self.matrix.splice(index, 0, newRow.concat(input) );\n }\n\n return self;\n}\n","import { each } from '../../utils/each';\n\nexport function selectColumn(q) {\n const result = [];\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1 && typeof this.matrix[0][index] !== 'undefined') {\n each(this.matrix, function(row, i) {\n result.push(row[index]);\n });\n }\n return result;\n}\n\nexport function selectRow(q) {\n let result = [];\n const index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1 && typeof this.matrix[index] !== 'undefined') {\n result = this.matrix[index];\n }\n return result;\n}\n","import { each } from '../../utils/each';\nimport analysesUtilMethods from '../utils/analyses';\n\nexport function sortColumns(str, comp) {\n var self = this,\n head = this.matrix[0].slice(1), // minus index\n cols = [],\n clone = [],\n fn = comp || analysesUtilMethods.getColumnLabel;\n\n // Isolate each column (except the index)\n each(head, function(cell, i) {\n cols.push(self.selectColumn(i+1).slice(0));\n });\n cols.sort(function(a,b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n each(cols, function(col, i) {\n self\n .deleteColumn(i+1)\n .insertColumn(i+1, col[0], col.slice(1));\n });\n return self;\n}\n\nexport function sortRows(str, comp) {\n var self = this,\n head = this.matrix.slice(0,1),\n body = this.matrix.slice(1),\n fn = comp || analysesUtilMethods.getRowIndex;\n body.sort(function(a, b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n self.data(head.concat(body));\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function updateColumn(q, input) {\n var self = this,\n index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data(), function(row, i){\n var cell;\n if (i > 0) {\n cell = input.call(self, row[index], i, row);\n if (typeof cell !== 'undefined') {\n self.matrix[i][index] = cell;\n }\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.data().length - 1) {\n input = input.concat( createNullList(self.data().length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[i+1][index] = value;\n });\n\n }\n\n }\n return self;\n}\n\nexport function updateRow(q, input){\n var self = this,\n index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data()[index], function(value, i){\n var col = self.selectColumn(i),\n cell = input.call(self, value, i, col);\n if (typeof cell !== 'undefined') {\n self.matrix[index][i] = cell;\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[index][i+1] = value;\n });\n }\n\n }\n return self;\n}\n","let Dataset; /* injected */\n\nimport { each } from '../../utils/each';\nimport { flatten } from '../utils/flatten';\nimport { valueAtDeepKey } from '../utils/object';\n\nexport default function initialize(lib){\n Dataset = lib;\n return function(name){\n var options = Array.prototype.slice.call(arguments, 1);\n\n if (!parsers[name]) {\n throw 'Requested parser does not exist';\n }\n else {\n return parsers[name].apply(this, options);\n }\n };\n}\n\nfunction parseMetric(){\n return function(res){\n return new Dataset()\n .set(['Value', 'Result'], res.result)\n .type('metric');\n }\n}\n\n//var myParser = Dataset.parser('interval', 'timeframe.end');\nfunction parseInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n dataset.set(['Result', index], record.value);\n });\n return dataset;\n }\n}\n\nfunction parseGroupedMetric(){\n return function(res){\n var dataset = new Dataset()\n .type('grouped-metric');\n each(res.result, function(record, i){\n var label;\n each(record, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set(['Result', String(record[label])], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('grouped-interval', 'timeframe.end');\nfunction parseGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('grouped-interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n if (record.value.length) {\n each(record.value, function(group, j){\n var label;\n each(group, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set([ String(group[label]), index ], group.result);\n });\n }\n else {\n dataset.appendRow(index);\n }\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-metric', ['first', 'second']);\nfunction parseDoubleGroupedMetric(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-metric');\n each(res.result, function(record, i){\n var rowLabel = record[options[0][0]] + ' ' + record[options[0][1]];\n dataset.set([ 'Result', rowLabel ], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-interval', ['first', 'second'], 'timeframe.end');\nfunction parseDoubleGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-interval');\n each(res.result, function(record, i){\n var index = options[1] && options[1] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n each(record['value'], function(value, j){\n var label = value[options[0][0]] + ' ' + value[options[0][1]];\n dataset.set([ label, index ], value.result);\n });\n });\n return dataset;\n }\n}\n\nfunction parseFunnel(){\n return function(res){\n var result, steps, dataset;\n if (typeof res.steps !== 'undefined'\n && typeof res.result !== 'undefined'\n && res.result instanceof Array) {\n // Ad-hoc funnel response\n result = res.result;\n steps = res.steps;\n }\n else if (typeof res.result.steps !== 'undefined'\n && typeof res.result.result !== 'undefined'\n && res.result.result instanceof Array) {\n // Saved funnel response\n result = res.result.result;\n steps = res.result.steps;\n }\n dataset = new Dataset().type('funnel');\n dataset.appendColumn('Step Value');\n each(result, function(value, i){\n if (typeof steps !== 'undefined' && steps[i]) {\n dataset.appendRow(String(steps[i].event_collection), [value]);\n }\n });\n return dataset;\n }\n}\n\nfunction parseList(){\n return function(res){\n var dataset = new Dataset()\n .type('list');\n each(res.result, function(value, i){\n dataset.set( [ 'Result', String(i+1) ], value );\n });\n return dataset;\n }\n}\n\nfunction parseExtraction(){\n let config = this.config;\n return function(res){\n const datasetExtraction = new Dataset()\n .type('extraction');\n\n // get keys of the Object, static schema\n let names = Object.keys(flatten(res.result[0]));\n\n const tableConfig = config && config.table;\n if (tableConfig && tableConfig.schema === 'dynamic') {\n const results = res.result;\n const keys = {};\n results.forEach(resultItem => {\n const resultKeys = Object.keys(flatten(resultItem));\n if (resultKeys && resultKeys.length) {\n resultKeys.forEach(keyName => {\n if (!keys[keyName]) {\n keys[keyName] = true;\n }\n });\n }\n });\n names = Object.keys(keys);\n }\n \n let nameI = 0;\n names.forEach(value => {\n datasetExtraction.set([ value, '0' ], value);\n nameI++;\n });\n \n if (Dataset) {\n if (config\n && config.table\n && config.table.columns) {\n names = config.table.columns;\n }\n }\n\n for (let i=0; i 1) {\n parser = 'double-grouped-metric';\n parserArgs.push(query.group_by);\n }\n else {\n parser = 'grouped-metric';\n }\n }\n else if (query.interval && !query.group_by) {\n parser = 'interval';\n parserArgs.push(indexBy);\n }\n else if (query.group_by && query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-interval';\n parserArgs.push(query.group_by);\n parserArgs.push(indexBy);\n }\n else {\n parser = 'grouped-interval';\n parserArgs.push(indexBy);\n }\n }\n }\n\n if (!parser) {\n\n // Metric\n // -------------------------------\n if (typeof response.result === 'number'){\n parser = 'metric';\n }\n\n // Everything else\n // -------------------------------\n if (response.result instanceof Array && response.result.length > 0){\n\n // Interval w/ single value\n // -------------------------------\n if (response.result[0].timeframe && (typeof response.result[0].value == 'number' || response.result[0].value == null)) {\n parser = 'interval';\n parserArgs.push(indexBy)\n }\n\n // Static GroupBy\n // -------------------------------\n if (typeof response.result[0].result == 'number'){\n parser = 'grouped-metric';\n }\n\n // x, y, value for heatmap\n if (this.config.type === 'heatmap' && Object.keys(response.result[0] === 3 && typeof response.result[0].result === 'number')) {\n parser = 'heatmap-axis';\n }\n\n // Grouped Interval\n // -------------------------------\n if (response.result[0].value instanceof Array){\n parser = 'grouped-interval';\n parserArgs.push(indexBy)\n }\n\n // Funnel\n // -------------------------------\n if (typeof response.result[0] === 'number'\n && typeof response.steps !== 'undefined'){\n parser = 'funnel';\n // Move steps into query object\n query.steps = response.steps;\n }\n\n // Select Unique\n // -------------------------------\n if ((typeof response.result[0] === 'string' || typeof response.result[0] == 'number') && typeof response.steps === 'undefined'){\n parser = 'list';\n }\n\n // Extraction\n // -------------------------------\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n // Set title from saved query body, or create a default title\n if (this.config.title === undefined) {\n if (meta.display_name) {\n title = meta.display_name;\n }\n else {\n title = getDefaultTitle(query);\n }\n this.config.title = title;\n }\n\n // Set type from saved query body, or use a default type\n if (!this.config.type) {\n if (meta.visualization && meta.visualization.chart_type) {\n type = meta.visualization.chart_type;\n }\n else {\n type = getDefaultType(parser);\n }\n this.config.type = type;\n }\n\n // Define the appropriate parser\n selectedParser = Dataset.parser.apply(this, [parser].concat(parserArgs));\n\n // Parse the response with augmented query body\n dataset = selectedParser(extend(response, { 'query': query }));\n\n // Set true dates for 'interval' data\n if (parser.indexOf('interval') > -1) {\n dataset.updateColumn(0, function(value, i){\n return new Date(value);\n });\n }\n\n dataset.updateRow(0, function(value, i){\n return stripHtmlTags(value);\n });\n\n this.dataset = dataset;\n\n if (response.execution_metadata) {\n this.execution_metadata = response.execution_metadata;\n }\n\n return this;\n}\n\nfunction getDefaultTitle(query) {\n var analysis = query.analysis_type ? query.analysis_type.replace('_', ' ') : '',\n title;\n\n title = analysis.replace( /\\b./g, function(a){\n return a.toUpperCase();\n });\n\n if (query.event_collection) {\n title += ' - ' + query.event_collection;\n }\n return title;\n}\n\nfunction getDefaultType(parser) {\n let type;\n switch (parser) {\n case 'metric':\n type = 'metric';\n break;\n case 'interval':\n type = 'area';\n break;\n case 'grouped-metric':\n case 'double-grouped-metric':\n type = 'bar';\n break;\n case 'grouped-interval':\n case 'double-grouped-interval':\n type = 'line';\n break;\n case 'funnel':\n type = 'horizontal-bar';\n break;\n case 'list':\n case 'extraction':\n default:\n type = 'table';\n }\n return type;\n}\n","import c3 from 'c3';\n\nimport { each } from '../utils/each';\nimport { extend } from '../utils/extend';\nimport { extendDeep } from '../utils/extend-deep';\nimport isDateString from '../utils/assert-date-string';\nimport c3DefaultDateFormat from './c3/extensions/default-date-format';\nimport c3PaginatingLegend from './c3/extensions/paginating-legend';\nimport c3TooltipContents from './c3/extensions/tooltip-contents';\n\nimport calculateRange from '../dataset/utils/calculate-range';\nimport { calculateSumForPercents, calculatePercents } from '../dataset/utils/calculate-percents';\n\nimport message from './default/message';\nimport metric from './default/metric';\nimport table from './default/table';\nimport spinner from './default/spinner';\nimport Funnel from './default/funnel';\nimport Funnel3d from './default/funnel-3d';\nimport HorizontalFunnel from './default/horizontal-funnel';\nimport HorizontalFunnel3d from './default/horizontal-funnel-3d';\nimport MetricCombo from './default/metric-combo';\nimport Heatmap from './default/heatmap';\nimport Choropleth from './default/choropleth';\n\nexport default function(lib) {\n let timer;\n bindResizeListener(function(){\n if (timer) {\n clearTimeout(timer);\n }\n const delay = (lib.visuals.length > 12) ? 1000 : 250;\n timer = setTimeout(function(){\n each(lib.visuals, function(chart){\n const c3Chart = chart.view._artifacts.c3;\n if (c3Chart) {\n const parentWidth = c3Chart.element.parentNode.parentNode.offsetWidth;\n let width = parentWidth;\n if (chart.config.legend && chart.config.legend.show && (chart.config.legend.position === 'left' || chart.config.legend.position === 'right')) {\n const nextSiblingWidth = c3Chart.element.nextSibling ? c3Chart.element.nextSibling.offsetWidth : 0;\n const prevSiblingWidth = c3Chart.element.previousSibling ? c3Chart.element.previousSibling.offsetWidth : 0;\n width = parentWidth - prevSiblingWidth - nextSiblingWidth;\n }\n\n c3Chart.resize({\n width,\n });\n\n }\n });\n }, delay);\n });\n\n return defineC3();\n};\n\nfunction defineC3(){\n const types = {\n message,\n metric,\n table,\n spinner,\n 'funnel': new Funnel,\n 'funnel-3d': new Funnel3d,\n 'horizontal-funnel': new HorizontalFunnel,\n 'horizontal-funnel-3d': new HorizontalFunnel3d,\n 'metric-combo': new MetricCombo,\n 'heatmap': new Heatmap,\n 'choropleth': new Choropleth\n };\n\n const c3Types = [\n // Standard types\n 'area',\n 'area-spline',\n 'area-step',\n 'bar',\n 'donut',\n 'gauge',\n 'line',\n 'pie',\n 'step',\n 'spline',\n\n // Horizontal variant types\n 'horizontal-area',\n 'horizontal-area-spline',\n 'horizontal-area-step',\n 'horizontal-bar',\n 'horizontal-line',\n 'horizontal-step',\n 'horizontal-spline',\n ];\n\n const getPaddings = (element, paddingName) => {\n return parseInt(window.getComputedStyle(element)[`padding${paddingName}`].replace('px', ''));\n }\n\n function getDefaultOptions(){\n const ENFORCED_OPTIONS = {\n bindto: this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'),\n color: {\n pattern: this.config.colors\n },\n data: {\n colors: { ...this.config.colorMapping },\n columns: [],\n type: this.config.type.replace('horizontal-', '')\n },\n };\n\n const renderingElement = this.el();\n\n let height = renderingElement.offsetHeight;\n\n height -= (getPaddings(renderingElement, 'Top') + getPaddings(renderingElement, 'Bottom'));\n\n if (this.config.showTitle) {\n const titleElement = this.el().querySelector('.keen-dataviz-title');\n if (titleElement) {\n height -= titleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.subtitle) {\n const subtitleElement = this.el().querySelector('.keen-dataviz-subtitle');\n if (subtitleElement) {\n height -= subtitleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.notes) {\n const notesElement = this.el().querySelector('.keen-dataviz-notes');\n if (notesElement) {\n height -= notesElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n let width = this.el().querySelector('.c3-chart').offsetWidth\n - (getPaddings(renderingElement, 'Left') + getPaddings(renderingElement, 'Right'));\n if (width < 0) {\n width = 0;\n }\n\n const DEFAULT_OPTIONS = {\n size: {\n width,\n height:\n height > 0 ?\n height\n : undefined,\n }\n };\n\n const extendedConfig = extendDeep({}, DEFAULT_OPTIONS, this.config, ENFORCED_OPTIONS);\n\n return extendedConfig;\n }\n\n each(c3Types, function(type, index) {\n types[type] = {\n render: function(){\n const options = getDefaultOptions.call(this);\n\n // 100% for charts\n const sumArray = calculateSumForPercents(this.dataset.matrix);\n let oldMatrix = [];\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' || type === 'area-step' || type === 'area-spline')) {\n oldMatrix = this.dataset.matrix;\n this.dataset.matrix = [this.dataset.matrix[0], ...calculatePercents(this.dataset.matrix, sumArray)];\n if(!options.sparkline){\n options.axis = {\n y: {\n padding: {\n top: 0,\n },\n tick: {\n format: d => `${d}%`,\n },\n },\n };\n }\n }\n\n // range charts\n if (options.range) {\n this.dataset.matrix = [this.dataset.matrix[0], ...calculateRange(this.dataset.matrix)];\n }\n\n if (!!this.config.clearOnRender && options.data.columns.length && this.dataset && this.dataset.meta) {\n const datasetMeta = this.dataset.meta || {};\n const { type = '' } = datasetMeta;\n let spliceFrom = 0;\n const intervalTypes = ['interval'];\n if (intervalTypes.includes(type)) {\n spliceFrom = 1;\n }\n options.data.columns.splice(spliceFrom);\n }\n\n if (this.data()[0].length === 1 || this.data().length === 1) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n let removeLegend = false;\n\n if (type === 'gauge') {\n // Accommodate a neat bug:\n options.legend.show = false;\n options.data.columns = [[\n this.config.title || this.data()[1][0],\n this.data()[1][1]\n ]];\n removeLegend = true;\n }\n else if (type === 'pie' || type === 'donut') {\n options.data.columns = this.data().slice(1);\n }\n else {\n\n // Apply formatting for horizontal variant types\n if (type.indexOf('horizontal-') > -1) {\n options.axis.rotated = type.indexOf('horizontal-') > -1;\n }\n\n if (isDateString(this.data()[1][0])) {\n // TIMESERIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'timeseries';\n options.axis.x.tick = options.axis.x.tick || {\n format: this.config.dateFormat || c3DefaultDateFormat(this.data()[1][0], this.data()[2] ? this.data()[2][0] : this.data()[1][0]),\n culling: { max: 5 }\n };\n\n options.data.columns[0] = [];\n each(this.dataset.selectColumn(0), function(cell, i){\n if (i > 0) {\n cell = new Date(cell);\n }\n options.data.columns[0][i] = cell;\n });\n options.data.columns[0][0] = 'x';\n options.data.x = 'x';\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n else {\n // CATEGORIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'category';\n options.axis.x.categories = this.dataset.selectColumn(0).slice(1);\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n\n if (this.data()[0].length === 2) {\n options.legend.show = false;\n removeLegend = true;\n }\n\n each(this.data()[0], function(cell, i){\n if (i > 0) {\n options.data.columns.push(this.dataset.selectColumn(i));\n }\n }.bind(this));\n }\n\n if (removeLegend){\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n legendElement.remove();\n options.size.width = this.el().querySelector('.c3-chart').offsetWidth;\n }\n options.legend.show = false;\n }\n\n const chartTypesWithPartialIntervalIndicator = ['area', 'area-spline', 'area-step', 'line', 'spline', 'step'];\n\n if (options.partialIntervalIndicator\n && options.partialIntervalIndicator.show\n && chartTypesWithPartialIntervalIndicator.indexOf(options.type) > -1\n ) {\n const results = options.data.columns && options.data.columns[0];\n if (results && results.length > 1) {\n const partialResultsRegion = {\n axis: 'x',\n start: new Date(results[results.length - 2]),\n class: options.partialIntervalIndicator.className\n };\n options.regions = [...(options.regions || []), partialResultsRegion];\n }\n }\n \n if (\n !(options.tooltip && options.tooltip.show === false)\n &&\n (options.legend.show === true ||\n (options.legend\n && options.legend.tooltip\n && options.legend.tooltip.show)\n )) {\n \n // Apply custom tooltip\n options.tooltip = {\n contents: c3TooltipContents,\n format: {\n title: this.config.tooltip.format.title,\n value: (value, ratio, id, index) => {\n let valueFormatted = c3CustomTooltipFiltering.call(this, value, ratio, id, index);\n if (this.config.tooltip && this.config.tooltip.format && this.config.tooltip.format.value)\n {\n valueFormatted = this.config.tooltip.format.value.call(this, valueFormatted, ratio, id, index);\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = parseFloat(((valueFormatted / 100) * sumArray[index]).toFixed(2));\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = ((valueFormatted / 100) * sumArray[index]).toFixed(2);\n return parseFloat(valueFormatted);\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n }\n };\n }\n\n if (options.legend.show === true) {\n const c3options = { ...options };\n // Apply custom color handling\n c3options.data.color = c3CustomDataMapping.bind(this);\n\n c3options.legend.hide = true; // hide default c3 legend\n\n // Render artifacts\n this.view._artifacts['c3'] = c3.generate(c3options);\n\n c3PaginatingLegend.call(this, {...options, onLegendRendered: () => {\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n if (\n options.legend.position === 'top' ||\n options.legend.position === 'bottom'\n ) {\n c3options.size.height -= legendElement.offsetHeight;\n this.view._artifacts['c3'].resize({ height: c3options.size.height });\n } else {\n if (c3options.size.width === 0) {\n c3options.size.width = this.el().offsetWidth\n - getPaddings(this.el(), 'Left')\n - getPaddings(this.el(), 'Right');\n }\n c3options.size.width -= legendElement.offsetWidth;\n this.view._artifacts['c3'].resize({ width: c3options.size.width });\n }\n }\n },\n onPaginated: () => {\n this.view._artifacts['c3'].flush();\n }\n });\n }\n else {\n this.view._artifacts['c3'] = c3.generate(options);\n }\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts['c3']) {\n this.view._artifacts['c3'].destroy();\n this.view._artifacts['c3'] = null;\n }\n }\n };\n });\n\n return types;\n}\n\nfunction c3CustomDataMapping(color, d) {\n const type = this.config.type;\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if ((d.id && scope.indexOf(d.id) > -1)\n || (d && !d.id && scope.indexOf(d) > -1)) {\n return color;\n }\n else {\n if (type === 'donut' || type === 'pie') {\n return 'rgba(0,0,0,.1)';\n }\n else {\n return 'rgba(0,0,0,.07)';\n }\n }\n }\n else {\n return color;\n }\n}\n\nfunction c3CustomTooltipFiltering(value, ratio, id, index) {\n const type = this.config.type;\n\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if (scope.indexOf(id) > -1) {\n return value;\n }\n }\n else {\n return value;\n }\n}\n\nfunction bindResizeListener(fn){\n if (typeof window === 'undefined') return;\n window.onresize = window.resize = function(){};\n if (window.addEventListener) {\n window.addEventListener('resize', fn, true);\n }\n else if (window.attachEvent) {\n window.attachEvent('onresize', fn);\n }\n}\n","export default function (startDate, endDate) {\n const timeDiff = Math.abs(new Date(startDate).getTime() - new Date(endDate).getTime());\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'June',\n 'July',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n // Yearly (31536000000) + Monthly\n if (timeDiff >= 2419200000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getFullYear();\n };\n }\n // Daily\n else if (timeDiff >= 86400000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getDate();\n };\n }\n // Hourly\n else if (timeDiff >= 3600000) {\n return '%I:%M %p';\n }\n // Minutely\n else {\n return '%I:%M:%S %p';\n }\n}\n","import * as d3 from 'd3';\n\nimport isDateString from '../../../utils/assert-date-string';\n\nexport default function (options) {\n const cols = options.data.columns;\n const datavizInstance = this;\n const chart = this.view._artifacts.c3;\n let columns = [];\n const domNode = this.el().querySelector('.' + datavizInstance.config.theme + '-rendering');\n const legendConfig = datavizInstance.config.legend;\n\n const pagination = this.view._artifacts.pagination = {\n ...{\n hidden: [],\n labels: [],\n offset: 0,\n limit: Math.round((domNode.offsetHeight - 78) / 20),\n total: 0\n },\n ...legendConfig.pagination\n };\n\n if (options.legend.sort) {\n columns = options.legend.sort(cols);\n\n // update column order in the data, so tooltip will be the same order\n const columnsSorted = [];\n const dataColumnsSorted = [];\n if (cols[0][0] === 'x') {\n dataColumnsSorted.push(cols[0]);\n }\n columns.forEach(column => {\n let columnData = options.data.columns.find(item => item[0] === column);\n dataColumnsSorted.push(columnData);\n });\n options.data.columns = dataColumnsSorted;\n } else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i][0] !== 'x' && !isDateString(cols[i][1])) {\n columns.push(cols[i][0]);\n }\n }\n }\n\n const legendElement = this.el().querySelector('.keen-c3-legend');\n\n let align = 'vertical';\n if (legendConfig.position === 'top' || legendConfig.position === 'bottom') {\n align = 'horizontal';\n }\n\n const paginateHorizontalLeftElement = document.createElement('div');\n paginateHorizontalLeftElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-left');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalLeftElement);\n }\n\n const legendItemsElement = document.createElement('div');\n legendItemsElement.setAttribute('class', `keen-c3-legend-items keen-c3-legend-${align}-items`);\n legendElement.append(legendItemsElement);\n\n const paginateVerticalElement = document.createElement('div');\n paginateVerticalElement.setAttribute('class', 'keen-c3-legend-pagination keen-c3-legend-pagination-icons');\n if (align === 'vertical') {\n legendElement.append(paginateVerticalElement);\n }\n\n const paginateHorizontalRightElement = document.createElement('div');\n paginateHorizontalRightElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalRightElement);\n }\n\n paginateData();\n\n function paginateData(){\n pagination.labels = columns.slice(pagination.offset, pagination.offset + pagination.limit);\n pagination.total = columns.length;\n renderLegendComponent.call(datavizInstance, pagination.labels);\n if (pagination.total > pagination.limit) {\n renderPaginationComponent.call(datavizInstance);\n }\n if (options.onPaginated){\n options.onPaginated();\n }\n }\n\n function renderLegendComponent(){\n legendItemsElement.innerHTML = '';\n\n pagination.labels.forEach(label => {\n const labelShortened = legendConfig.label.textMaxLength ? label.slice(0, legendConfig.label.textMaxLength - 1) : label;\n const legendItem = document.createElement(\"div\");\n legendItem.innerHTML = `${labelShortened}`;\n legendItem.chartPartId = label;\n legendItem.setAttribute('class', 'legend-item');\n legendItemsElement.append(legendItem);\n\n const legendItemColorSample = document.createElement(\"span\");\n legendItemColorSample.setAttribute('class', 'legend-item-color-sample');\n legendItemColorSample.style.backgroundColor = chart.color(legendItem.chartPartId);\n legendItem.prepend(legendItemColorSample);\n\n const tooltipElement = document.createElement(\"div\");\n legendItem.addEventListener('mouseover', (event) => {\n chart.focus(legendItem.chartPartId);\n if (legendConfig.tooltip.show && legendItem.chartPartId.length > legendConfig.label.textMaxLength) {\n tooltipElement.setAttribute('class', `keen-c3-legend-label-overlay keen-c3-legend-position-${legendConfig.position}`);\n tooltipElement.innerHTML =\n `${\n options.legend.tooltip.pointer ? `
` : ``\n }${legendItem.chartPartId}`;\n legendItem.append(tooltipElement);\n }\n });\n legendItem.addEventListener('mouseout', (event) => {\n chart.revert();\n tooltipElement.remove();\n });\n legendItem.addEventListener('click', (event) => {\n let opacity = 1;\n const isHidden = pagination.hidden.indexOf(legendItem.chartPartId);\n if (isHidden < 0) {\n pagination.hidden.push(legendItem.chartPartId);\n opacity = .35;\n }\n else {\n pagination.hidden.splice(isHidden, 1);\n opacity = 1;\n }\n legendItem.style.opacity = opacity;\n chart.toggle(legendItem.chartPartId);\n });\n });\n\n if (options.onLegendRendered){\n options.onLegendRendered();\n options.onLegendRendered = null;\n }\n\n }\n\n function renderPaginationComponent(){\n paginateVerticalElement.innerHTML = '';\n paginateHorizontalLeftElement.innerHTML = '';\n paginateHorizontalRightElement.innerHTML = '';\n\n const arrowUp = document.createElement('i');\n const arrowDown = document.createElement('i');\n\n const paginate = (direction) => {\n if (direction === 'forward') {\n const diff = pagination.offset + pagination.limit;\n if (diff < pagination.total) {\n pagination.offset = diff;\n return;\n }\n pagination.offset = 0;\n return;\n }\n\n const diff = pagination.offset - pagination.limit;\n if (diff >= 0) {\n pagination.offset = diff;\n return;\n }\n\n pagination.offset = Math.floor(pagination.total/pagination.limit) * pagination.limit;\n };\n\n arrowDown.addEventListener('click', () => {\n paginate('forward');\n paginateData();\n clearSelectedText();\n });\n\n arrowUp.addEventListener('click', () => {\n paginate('backward');\n paginateData();\n clearSelectedText();\n });\n\n if (legendConfig.position === 'left' || legendConfig.position === 'right') {\n arrowUp.setAttribute('class', 'up');\n arrowDown.setAttribute('class', 'down');\n paginateVerticalElement.append(arrowDown);\n paginateVerticalElement.append(arrowUp);\n } else {\n // bottom top\n arrowUp.setAttribute('class', 'left');\n arrowDown.setAttribute('class', 'right');\n paginateHorizontalLeftElement.append(arrowUp);\n paginateHorizontalRightElement.append(arrowDown);\n }\n\n }\n\n function clearSelectedText() {\n let selection;\n if (document.selection && document.selection.empty) {\n selection = document.selection;\n selection.empty();\n }\n else if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n }\n }\n}\n","import { escapeHtml } from '../../../utils/escape-html';\n\nexport default function (d, defaultTitleFormat, defaultValueFormat, color) {\n let text;\n let title;\n // Set config options or defaults\n const nameFormat = this.config.tooltip_format_name || function (name) { return name; };\n const titleFormat = this.config.tooltip_format_title || defaultTitleFormat;\n const valueFormat = this.config.tooltip_format_value || defaultValueFormat;\n\n // Reverse list to match legend\n for (let i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n if (!text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n let name = nameFormat(d[i].name);\n let value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n let bgcolor = this.levelColor ? this.levelColor(d[i].value) : color(d[i].id);\n if (value && !isNaN(value)) {\n text += \"\";\n if (name.indexOf('__tooltip_ignore_name_field__') === -1) {\n text += \"\";\n }\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + escapeHtml(title) + \"
\" + escapeHtml(name) + \"\" + escapeHtml(value) + \"
\";\n}\n","export default function calculateRange(matrix) {\n const newValues = matrix.slice(1).map(d => d.map((e, i) => {\n if (typeof e === 'number') {\n if (i === 1) {\n return e - d[i + 1];\n }\n }\n return e;\n }));\n return newValues;\n}","export function calculateSumForPercents(matrix) {\n const sumArray = [];\n matrix.slice(1).forEach((d, i) => {\n d.forEach((e) => {\n if (typeof e === 'number') {\n if (!sumArray[i]) {\n sumArray[i] = e;\n return sumArray[i];\n }\n sumArray[i] += e;\n }\n return sumArray[i];\n });\n });\n return sumArray;\n}\n\nexport function calculatePercents(matrix, sumArray) {\n const newValues = matrix.slice(1).map((d, i) => d.map((e) => {\n if (typeof e === 'number') {\n return (e / sumArray[i]) * 100;\n }\n return e;\n }));\n return newValues;\n}\n","import { escapeHtml } from '../../utils/escape-html';\nimport renderDownloadButton from '../../utils/render-download-btn';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default {\n render: function(text){\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n const msg = document.createElement('span');\n\n const titleContainer = document.createElement('div');\n const subtitleContainer = document.createElement('div');\n const notesContainer = document.createElement('div');\n\n outer.className = this.config.theme + ' keen-dataviz-box';\n inner.className = this.config.theme + '-message';\n\n // Create title and notes for message\n titleContainer.className = this.config.theme + '-title';\n titleContainer.innerHTML = escapeHtml(this.config.title || '');\n subtitleContainer.className = this.config.theme + '-subtitle';\n subtitleContainer.innerHTML = escapeHtml(this.config.subtitle || '');\n notesContainer.className = this.config.theme + '-notes';\n notesContainer.innerHTML = escapeHtml(this.config.notes || '');\n\n msg.innerHTML = escapeHtml(text) || '';\n inner.appendChild(msg);\n\n if (this.config.title && this.config.showTitle) {\n outer.appendChild(titleContainer);\n }\n\n if (this.config.subtitle) {\n outer.appendChild(subtitleContainer);\n }\n\n outer.appendChild(inner);\n\n if (this.config.notes) {\n outer.appendChild(notesContainer);\n }\n\n if (this.config.ui\n && this.config.ui.buttons\n && this.config.ui.buttons.download\n && this.config.ui.buttons.download.type) {\n renderDownloadButton({\n element: this.el(),\n data: escapeHtml(text) || '',\n type: this.config.ui.buttons.download.type,\n label: this.config.ui.buttons.download.label,\n })\n }\n\n if (this.config.utils\n && this.config.utils.clickToCopyToClipboard) {\n titleContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n notesContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n msg.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n\n this.el().innerHTML = '';\n this.el().appendChild(outer);\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import exportImage from './export-svg';\nimport exportData from './export-data';\n\nexport default function downloadResults(obj) {\n const { event, type, data } = obj;\n event.preventDefault();\n const supportedFormats = ['json', 'csv', 'jpg', 'jpeg', 'png'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = '';\n let content = '';\n\n if (format === 'png') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n });\n return;\n }\n\n if (format === 'jpg' || format === 'jpeg') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n quality: 1,\n bgcolor: '#fff',\n });\n return;\n }\n\n if (format === 'json') {\n exportData({ type: format, data });\n }\n\n if (format === 'csv') {\n exportData({ type: format, data });\n }\n}\n","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { prettyNumber } from '../../utils/pretty-number';\nimport { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nfunction formatExtractionData(res, prop) {\n const { query, result } = res;\n const formattedResult = [];\n if (query.analysis_type !== 'extraction') throw new Error('Analysis type is not an extraction!');\n if (Array.isArray(result)) {\n result.forEach((item) => {\n const itemProp = prop.split('.').reduce((acc, val) => (acc && acc[val]) || null, item);\n const obj = {\n query,\n result: itemProp,\n };\n formattedResult.push(obj);\n });\n }\n return formattedResult;\n}\n\nexport default {\n render: function(){\n let color = this.config.colors[0];\n const theme = this.config.theme;\n const title = this.config.title;\n const subtitle = this.config.subtitle;\n const opts = this.config;\n let value = '-';\n let prevValue= '';\n let html = '';\n let prefix = '';\n let suffix = '';\n let formattedNum;\n let flexDifferenceStyle = '';\n let resultDifference = '';\n let differenceStyle = '';\n let smallerValue = '';\n const { results, previousResults, isExtraction, comparedProp } = this.config;\n if(results && previousResults){\n flexDifferenceStyle = previousResults ? ' metric-comparison' : '';\n smallerValue = previousResults && title ? '-smaller' : '';\n resultDifference = results.result - previousResults.result;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n if (this.data() && this.data()[1] && this.data()[1][1] && typeof this.data()[1][1] === 'number') {\n value = this.data()[1][1];\n }\n\n if (isExtraction && comparedProp) {\n const formattedResult = formatExtractionData(results, comparedProp);\n \n value = formattedResult[0].result;\n prevValue = formattedResult[1].result;\n\n flexDifferenceStyle = prevValue ? ' metric-comparison' : '';\n smallerValue = prevValue && title ? '-smaller' : '';\n resultDifference = value - prevValue;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n formattedNum = value;\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(value)) ) {\n formattedNum = prettyNumber(value);\n if(results && previousResults){\n resultDifference = prettyNumber(resultDifference);\n }\n }\n\n if (opts['prefix']) {\n prefix = '' + opts['prefix'] + '';\n }\n if (opts['suffix']) {\n suffix = '' + opts['suffix'] + '';\n }\n html += '
';\n html += '
';\n if (results && previousResults) {\n html += '
' + escapeHtml(resultDifference) + '
';\n }\n if (isExtraction && comparedProp) {\n if (value && prevValue) {\n html += '
' + escapeHtml(resultDifference) + '
';\n html += '' + prevValue + '';\n } else {\n html += '

No data to display

';\n }\n }\n html += '
' + prefix + escapeHtml(formattedNum) + suffix + '
';\n if (title) {\n html += '
' + escapeHtml(title) + '
';\n }\n if (subtitle) {\n html += '
' + escapeHtml(subtitle) + '
';\n }\n html += '
';\n html += '
';\n\n this.el().innerHTML = html;\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const resultClassName = `.${theme}-metric-value${smallerValue}`;\n document.querySelector(resultClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n\n if (results && previousResults) {\n const previousResultsClassName = `.${theme}-metric${differenceStyle}`;\n document.querySelector(previousResultsClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n }\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nlet currentPage;\nfunction _generateTableRows(datavizInstance, dataset) {\n let html = '';\n const defaultConfig = {\n page: 1,\n limit: 0,\n arrows: true\n };\n let customConfig = {};\n if (datavizInstance.config.table && datavizInstance.config.table.pagination) {\n customConfig = datavizInstance.config.table.pagination;\n }\n const config = {\n ...defaultConfig,\n ...customConfig\n };\n\n if (!currentPage){\n currentPage = config.page;\n }\n\n let datasetPaginated;\n let pages = 0;\n if (config.limit === 0) {\n datasetPaginated = dataset.slice(1); // remove header\n } else {\n const start = config.limit * (currentPage - 1) + 1;\n const end = start + config.limit;\n datasetPaginated = dataset.slice(start, end);\n pages = Math.ceil((dataset.length - 1) / config.limit);\n }\n\n let columnsArray = datavizInstance.config.table.columns ?\n datavizInstance.config.table.columns :\n datavizInstance.dataset.matrix[0];\n\n const colNamesToMap = {};\n const {\n mapValues,\n mapDates,\n } = datavizInstance.config.table;\n for (let key in mapValues){\n colNamesToMap[columnsArray.indexOf(key)] = key;\n }\n\n for (let row of datasetPaginated) {\n html += '';\n for (let [index, rowColValue] of row.entries()) {\n if (mapDates && rowColValue instanceof Date) {\n rowColValue = mapDates(rowColValue);\n }\n\n let rowColValueEscaped = escapeHtml(rowColValue);\n if(colNamesToMap[index]){\n html += `${mapValues[colNamesToMap[index]](rowColValueEscaped)}`;\n continue;\n }\n html += `${rowColValueEscaped}`\n }\n html += '';\n }\n\n if (pages > 1){\n html += ``;\n let pageNumber = 1;\n const prevPage = (currentPage === 1) ? 1 : (currentPage - 1);\n const nextPage = (currentPage === pages) ? pages : (currentPage + 1);\n if (config.arrows){\n html += `«`;\n }\n while (pageNumber <= pages){\n html += `${pageNumber}`;\n pageNumber++;\n }\n if (config.arrows){\n html += `»`;\n }\n html += '';\n }\n\n return html;\n}\n\nfunction _generateTableHeader(datavizInstance, dataset) {\n let html = '';\n let fieldNumber = -1;\n const tableConfig = datavizInstance.config.table;\n const columnNames =\n (tableConfig && tableConfig.columns)\n || dataset[0];\n for (let colName of columnNames) {\n let colNameEscaped = escapeHtml(colName);\n fieldNumber +=1;\n html += `${colNameEscaped}`;\n }\n return html;\n}\n\n\n const render = function() {\n const dataset = this.dataset.matrix;\n\n const el = this.el();\n const theme = this.config.theme;\n const datavizInstance = this;\n\n let html = '';\n\n const isEmpty = dataset.length === 1 && dataset[0].length === 0;\n if (isEmpty) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n // Open wrapper\n html += `
`;\n\n // Static, scrollable table\n html += ``;\n html += '';\n html += '';\n html += _generateTableHeader(datavizInstance, dataset);\n html += '';\n html += '';\n // Table data\n html += '';\n html += _generateTableRows(datavizInstance, dataset);\n html += '';\n html += '
';\n/* */\n // Close wrapper\n html += '
';\n\n // Inject HTML string\n el.querySelector(`.${theme}-rendering`).innerHTML = html;\n\n el\n .querySelectorAll(`.${theme}-rendering th`)\n .forEach((item) => {\n item.addEventListener('click', (event) => {\n let sortOrder = event.target.getAttribute('order') || 'asc';\n let fieldNumber = event.target.getAttribute('fieldNumber');\n let checker = function (a, b) {\n let sortOrderNumber = (sortOrder === 'asc') ? 1 : -1;\n\n if (typeof a[fieldNumber] === 'string') {\n let nameA = a[fieldNumber].toUpperCase(); // ignore upper and lowercase\n let nameB = b[fieldNumber].toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1 * sortOrderNumber;\n }\n if (nameA > nameB) {\n return 1* sortOrderNumber;\n }\n\n // names must be equal\n return 0;\n }\n return (a[fieldNumber] - b[fieldNumber]) * sortOrderNumber;\n };\n\n if (sortOrder === 'asc') {\n sortOrder = 'desc';\n } else {\n sortOrder = 'asc'\n }\n event.target.setAttribute('order', sortOrder);\n\n const first = this.dataset.matrix.shift();\n this.dataset.matrix.sort(checker);\n this.dataset.matrix.unshift(first);\n\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n });\n });\n\n\n const attachBtnEventListeners = () => {\n el.querySelectorAll('.btn').forEach(btn => {\n btn.addEventListener('click', (event) => {\n currentPage = parseInt(event.target.getAttribute('data-page'));\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n }, true);\n });\n };\n\n attachBtnEventListeners(datavizInstance, el, theme);\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const tableClass = `.${theme}-table-dataset`;\n document.querySelector(tableClass)\n .addEventListener('click', (e) => {\n const { nodeName, innerText } = e.target;\n if (nodeName === 'TD') {\n copyToClipboard(innerText, e);\n }\n });\n }\n };\n\n\n\nconst update = function(){\n // no special update handling\n this.render();\n };\n\nconst destroy= function(){};\n\nexport default { render, update, destroy };\n","export default {\n render: function(){\n let html = '';\n const artifacts = this.view._artifacts.spinner = {};\n\n // Build DOM element\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n this.el().innerHTML = html;\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts.spinner) {\n if (this.view._artifacts.spinner.interval) {\n clearInterval(this.view._artifacts.spinner.interval);\n }\n this.view._artifacts.spinner.radius = 0;\n try {\n delete this.view._artifacts.spinner;\n }\n catch (e) {\n this.view._artifacts.spinner = undefined;\n }\n }\n this.el().innerHTML = '';\n }\n};\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 30, left: 200 };\n let yMarginElement = 0;\n if(marginBetweenSteps){\n yMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if (countingMethod === \"relative\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth =\n (prevElemWidth * d[1]) / matrix[i][1]);\n percent = ((d[1] / matrix[i][1]) * 100).toFixed(decimals);\n }\n if (countingMethod === \"absolute\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth = (svgWidth * d[1]) / matrix[1][1]);\n percent = ((d[1] / matrix[1][1]) * 100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n \n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('x2', (d) => { return d.points[1].x + margin.left; })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('x2', polygons[polygons.length-1].points[2].x + margin.left)\n .attr('y2', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2)\n + (margin.left * 0.9);\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 16\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 12\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top;\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement - 5;\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 60, left: 200 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n const yMarginElement = elemHeight * 0.3;\n const shadowCut = (yMarginElement * 2.5);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = prevElemWidth * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = svgWidth * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[3].x,\n y: d.points[3].y\n },\n {\n x: d.points[2].x,\n y: d.points[2].y\n },\n {\n x: effect3d === 'left'\n ? d.points[2].x\n : d.points[2].x - shadowCut < svgWidth/2\n ? svgWidth/2 + 5\n : d.points[2].x - shadowCut,\n y: effect3d === 'left'\n ? d.points[2].y\n : d.points[2].y + (yMarginElement/1.5)\n },\n {\n x: effect3d === 'right'\n ? d.points[3].x\n : d.points[3].x + shadowCut > svgWidth/2\n ? svgWidth/2 - 5\n : d.points[3].x + shadowCut,\n y: effect3d === 'right'\n ? d.points[3].y\n : d.points[3].y + (yMarginElement/1.5)\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('x2', (d, i) => {\n if(i === 0){\n return d.points[1].x + margin.left;\n }\n return d.points[1].x + margin.left - shadowCut;\n })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('x2', polygons[polygons.length-1].points[2].x\n + margin.left - shadowCut )\n .attr('y2', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5 + (yMarginElement/4)\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2) + 130;\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 18\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 3\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n let xMarginElement = 0;\n if(marginBetweenSteps){\n xMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined'\n || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left - (xMarginElement/2))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/2))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight + (margin.bottom * 0.5) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', (d) => {\n if(d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) > svgHeight + margin.bottom - 40 + margin.top){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n return d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n const xMarginElement = elemWidth * 0.3;\n const shadowCut = (xMarginElement/1.5);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[0].x,\n y: d.points[0].y\n },\n {\n x: d.points[1].x,\n y: d.points[1].y\n },\n {\n x: effect3d === 'top'\n ? d.points[1].x\n : d.points[1].x - shadowCut,\n y: effect3d === 'top'\n ? d.points[1].y\n : d.points[1].y - xMarginElement < svgHeight/2\n ? svgHeight/2 + 5\n : d.points[1].y - xMarginElement\n },\n {\n x: effect3d === 'bottom'\n ? d.points[0].x\n : d.points[0].x - shadowCut,\n y: effect3d === 'bottom'\n ? d.points[0].y\n : d.points[0].y + xMarginElement > svgHeight/2\n ? svgHeight/2 - 5\n : d.points[0].y + xMarginElement\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left + (xMarginElement/4))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/4))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', svgHeight + (margin.bottom * 0.4) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', (d) => {\n if(d.points[2].y + (elemWidth/4) >\n svgHeight + margin.bottom - 40){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n if(d.points[2].y + (elemWidth/4) < d.points[1].y){\n return d.points[1].y + 20 + margin.top;\n }\n return d.points[2].y + (elemWidth/4) + 10 + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","/* eslint-env browser */\nimport c3 from 'c3';\nimport { each } from '../../utils/each';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class MetricCombo {\n render() {\n const {\n container,\n metricResults,\n title,\n showTitle,\n subtitle,\n tooltip,\n utils,\n } = this.config;\n\n const colors = ['#c3c4cc'];\n const columns = [];\n columns[0] = [];\n each(this.dataset.selectColumn(0), (c, i) => {\n let cell;\n if (i > 0) {\n cell = new Date(c);\n }\n columns[0][i] = cell;\n });\n columns[0][0] = 'x';\n\n each(this.data()[0], (c, i) => {\n if (i > 0) {\n columns.push(this.dataset.selectColumn(i));\n }\n });\n\n const prevResult = (metricResults && metricResults.previous && metricResults.previous.result)\n || 0;\n const currResult = (metricResults && metricResults.current && metricResults.current.result)\n || 0;\n const count = currResult - prevResult;\n const percentDifference = prevResult === 0 ? '-' : prettyNumber(Math.round((count / prevResult) * 100));\n let labelClass = 'keen-dataviz-metric-green';\n let iconClass = 'arrow-green';\n\n if (percentDifference < 0) {\n labelClass = 'keen-dataviz-metric-red';\n iconClass = 'arrow-red';\n }\n\n const containerTitle = (showTitle && title) ? `
${title}
` : '';\n const containerSubtitle = subtitle ? `
${subtitle}
` : '';\n const containerElement = document.querySelector(container);\n containerElement.innerHTML = `\n
\n
\n
\n ${containerTitle}\n ${containerSubtitle}\n
${percentDifference} %
\n
${prettyNumber(count)}
\n
\n
\n
\n
\n
\n
`;\n const chartRoot = containerElement.querySelector('.c3-chart');\n const chart = c3.generate({\n bindto: chartRoot,\n color: {\n pattern: colors,\n },\n title,\n legend: {\n show: false,\n },\n data: {\n x: 'x',\n columns,\n type: 'area-spline',\n selection: {\n draggable: false,\n enabled: true,\n multiple: true,\n },\n },\n point: {\n r: 0,\n focus: {\n expand: {\n r: 5,\n enabled: true,\n },\n },\n select: {\n r: 5,\n enabled: true,\n },\n },\n axis: {\n y: {\n show: false,\n },\n x: {\n show: false,\n },\n },\n grid: {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n },\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: -4,\n },\n tooltip,\n });\n\n if (utils && utils.clickToCopyToClipboard) {\n const currentCount = document.querySelector('.current-count').innerText;\n document.querySelector('.keen-dataviz-metric-combo')\n .addEventListener('click', e => copyToClipboard(currentCount, e));\n }\n }\n\n update() {\n this.destroy();\n this.render();\n }\n\n destroy() {\n const { container } = this.config;\n const containerElement = document.querySelector(container);\n const chartContainer = containerElement.querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport Rangeable from 'rangeable';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Heatmap {\n render() {\n const {\n colors,\n container,\n heatmap: { showSlider, simpleTooltip },\n } = this.config;\n const {\n matrix,\n meta,\n } = this.dataset;\n const margin = {\n top: 10,\n right: 10,\n bottom: 50,\n left: 50,\n };\n const baseWidth = 600;\n const baseHeight = 600;\n const heatmapContainer = d3.select(container);\n const containerWidth = parseInt(heatmapContainer.style('width'), 10) || baseWidth;\n const containerHeight = parseInt(heatmapContainer.style('height'), 10) || baseHeight;\n const chartContainer = this.el().querySelector('.c3-chart');\n const svgWidth = containerWidth - margin.right - margin.left;\n const svgHeight = containerHeight - margin.top - margin.bottom;\n\n const xLabel = new Set();\n const yLabel = new Set();\n\n const formatData = () => {\n const dateFormat = d3.timeFormat('%B %d');\n const timeFormat = d3.timeFormat('%H:%M');\n const arr = [];\n matrix.forEach((element) => {\n if (meta.type === 'heatmap') {\n if (typeof element[0][2] === 'number') {\n const obj = {\n x: element[0][0],\n y: element[0][1],\n value: element[0][2],\n };\n arr.push(obj);\n }\n } else {\n const timestamp = Date.parse(element[0]);\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(timestamp)) {\n const obj = {\n x: dateFormat(new Date(element[0])),\n y: timeFormat(new Date(element[0])),\n value: element[1],\n };\n arr.push(obj);\n }\n }\n });\n return arr;\n };\n\n const formattedData = formatData();\n\n formattedData.forEach((item) => {\n xLabel.add(item.x);\n yLabel.add(item.y);\n });\n\n const refValue = formattedData[0].value;\n const minRange = formattedData\n .reduce((min, curr) => (curr.value < min ? curr.value : min), refValue);\n const maxRange = formattedData\n .reduce((max, curr) => (curr.value > max ? curr.value : max), refValue);\n\n const getColor = () => {\n const defaultColor = '#00BBDE';\n const baseColor = colors[0];\n let rgb = d3.rgb(defaultColor);\n if (d3.color(baseColor)) {\n rgb = d3.rgb(baseColor);\n }\n return rgb;\n };\n\n const getColorAlpha = d3.scaleLinear()\n .domain([0, d3.max(formattedData, d => d.value)])\n .range([0, 1]);\n\n const convertRGBAtoRGB = (color, bg = [255, 255, 255]) => {\n const opacity = color[3];\n\n return [Math.floor(((1 - opacity) * bg[0]) + (opacity * color[0]) + 0.5),\n Math.floor(((1 - opacity) * bg[1]) + (opacity * color[1]) + 0.5),\n Math.floor(((1 - opacity) * bg[2]) + (opacity * color[2]) + 0.5)];\n };\n\n const getTileColor = (value) => {\n const alpha = getColorAlpha(value);\n const rgb = getColor();\n const solidColor = convertRGBAtoRGB([rgb.r, rgb.g, rgb.b, alpha]);\n const color = `rgb(${solidColor[0]}, ${solidColor[1]}, ${solidColor[2]})`;\n return color;\n };\n\n const svg = d3.select(chartContainer)\n .append('svg')\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${containerWidth} ${containerHeight}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr(\n 'transform',\n `translate(${margin.left},${margin.top})`,\n );\n\n if (showSlider) {\n // eslint-disable-next-line no-unused-vars\n const rangeableInput = d3.select(container)\n .append('input')\n .attr('type', 'range')\n .attr('class', 'keen-dataviz-slider');\n\n const handleSliderChange = (data) => {\n const rects = svg.selectAll('rect');\n const [min, max] = data;\n\n rects.each((d, i, nodes) => {\n d3.select(nodes[i])\n .style('visibility', () => ((d.value > max || d.value < min) ? 'hidden' : 'visible'));\n });\n };\n\n // eslint-disable-next-line no-unused-vars\n const rangeable = new Rangeable('.keen-dataviz-slider', {\n multiple: true,\n min: minRange,\n max: maxRange,\n value: [minRange, maxRange],\n onChange: data => handleSliderChange(data),\n });\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${getColor()};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${getColor()} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${getColor()};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement('style');\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector('script');\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const xLabelBase = 5;\n const yLabelBase = 10;\n\n const getAxisLabelRatio = (base, labelSize) => Math.floor(labelSize / base) + 1;\n const xAxis = d3.scaleBand()\n .range([0, svgWidth])\n .domain([...xLabel])\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .attr('transform', `translate(0, ${svgHeight})`)\n .call(d3.axisBottom(xAxis).tickSize(0))\n .selectAll('text')\n .attr('dy', '1em')\n .filter((d, i) => i % getAxisLabelRatio(xLabelBase, xLabel.size))\n .style('display', 'none');\n\n const yAxis = d3.scaleBand()\n .range([svgHeight, 0])\n .domain([...yLabel].sort())\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .call(d3.axisLeft(yAxis).tickSize(0))\n .selectAll('text')\n .filter((d, i) => i % getAxisLabelRatio(yLabelBase, yLabel.size))\n .style('display', 'none');\n\n const chartTooltip = d3.select(container)\n .append('div')\n .attr('class', 'keen-dataviz-tooltip')\n .style('opacity', 0)\n .style('background-color', 'white')\n .style('border', `2px solid ${getColor().toString()}`)\n .style('font-size', '14px')\n .style('padding', '2px 8px')\n .style('box-shadow', '2px 2px 4px rgba(0,0,0,0.25')\n .style('display', 'none')\n .style('position', 'fixed');\n\n const handleMouseOver = () => {\n d3.select(d3.event.target)\n .raise()\n .style('transition', 'transform 150ms ease-out')\n .style('outline', `1px solid ${getColor()}`)\n .style('transform', 'translate(0px, -4px)');\n\n chartTooltip\n .style('opacity', 1)\n .style('display', 'block');\n };\n\n const handleMouseMove = (d) => {\n let tooltipContent = `\n \n value:\n ${d.value}\n `;\n if (!simpleTooltip) {\n tooltipContent = `\n \n xAxis:\n ${d.x}\n \n \n yAxis:\n ${d.y}\n \n ${tooltipContent}\n `;\n }\n chartTooltip\n .html(`\n \n ${tooltipContent}\n
\n `)\n .style('left', `${d3.event.clientX + 10}px`)\n .style('top', `${d3.event.clientY + 10}px`);\n };\n\n const handleMouseLeave = () => {\n d3.select(d3.event.target)\n .style('outline', 'none')\n .style('transform', 'none');\n\n chartTooltip\n .style('opacity', 0)\n .style('display', 'none');\n };\n\n const handleClick = d => copyToClipboard(d.value);\n\n svg.selectAll()\n .data(formattedData, d => `${d.x}:${d.y}`)\n .enter()\n .append('rect')\n .attr('x', d => xAxis(d.x))\n .attr('y', d => yAxis(d.y))\n .attr('width', xAxis.bandwidth())\n .attr('height', yAxis.bandwidth())\n .style('fill', d => getTileColor(d.value))\n .style('cursor', 'pointer')\n .on('mouseover', handleMouseOver)\n .on('mousemove', handleMouseMove)\n .on('mouseleave', handleMouseLeave)\n .on('click', handleClick);\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = this.el().querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from \"d3\";\nimport Rangeable from \"rangeable\";\nimport { prettyNumber } from \"../../utils/pretty-number\";\nimport copyToClipboard from \"../../utils/copy-to-clipboard\";\n\nexport default class Choropleth {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n utils,\n title,\n choropleth: {\n map,\n borders: { show, size, color },\n showSlider\n }\n } = this.config;\n const opts = this.config;\n const choroplethContainer = d3.select(container);\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n const width = Number(choroplethContainer.style(\"width\").slice(0, -2));\n const height = Number(choroplethContainer.style(\"height\").slice(0, -2));\n let heightChanges = 0;\n if (title) heightChanges += 31;\n if (showSlider) heightChanges += 20;\n const chart = chartContainer\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height - heightChanges);\n\n const onlyValues = matrix.slice(1).map(el => el[1]);\n let minVal = d3.min(onlyValues);\n const maxVal = d3.max(onlyValues);\n if(minVal === maxVal) minVal = 0;\n const lightColor = d3.hsl(colors[0]).brighter(1);\n lightColor.l = 0.95;\n const darkColor = colors[0];\n const ramp = d3\n .scaleLinear()\n .domain([minVal === undefined ? 0 : minVal, maxVal === undefined ? 0 : maxVal])\n .range([lightColor, darkColor]);\n\n d3.json(\n `https://cdn.jsdelivr.net/npm/keen-dataviz-maps@1.0.0/maps/${map}.json`\n ).then(data => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 5])\n .translateExtent([[0, 0], [width, height - 50]])\n .on(\"zoom\", zoomed);\n\n let projection;\n switch (map) {\n case \"world\":\n projection = d3.geoMercator().fitSize([width, height - 50], data);\n break;\n case \"us\":\n projection = d3\n .geoAlbersUsa()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n\n default:\n projection = d3\n .geoMercator()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n }\n\n const path = d3.geoPath().projection(projection);\n\n const usData = data.features.map(el => {\n const theOne = matrix.filter(d => d[0] === el.properties.name);\n if (theOne[0])\n return {\n ...el,\n properties: { ...el.properties, result: theOne[0][1] }\n };\n return {\n ...el,\n properties: { ...el.properties, result: 0 }\n };\n });\n\n if (showSlider) {\n const handleSliderChange = data => {\n const el = chart.selectAll(`.${elementName}`);\n const [min, max] = data;\n\n el.each((d, i, nodes) => {\n d3.select(nodes[i]).style(\"visibility\", () =>\n d.properties.result > max || d.properties.result < min\n ? \"hidden\"\n : \"visible\"\n );\n });\n };\n\n chartContainer\n .style(\"display\", \"flex\")\n .style(\"flex-direction\", \"column\")\n .style(\"justify-content\", \"center\");\n\n const rangeContainer = chartContainer\n .append(\"div\")\n .style(\"width\", \"95%\")\n .style(\"margin\", \"auto\");\n rangeContainer.append(\"input\").attr(\"id\", \"rangeSlider\");\n\n const rangeable = new Rangeable(\"#rangeSlider\", {\n type: \"double\",\n tooltips: true,\n min: 0,\n max: maxVal,\n onChange: data => handleSliderChange(data)\n });\n\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${colors[0]};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${colors[0]} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${colors[0]};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement(\"style\");\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector(\"script\");\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const elementName = map === \"world\" ? \"country\" : \"state\";\n\n chart\n .selectAll(\"path\")\n .data(usData)\n .enter()\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"class\", elementName)\n .attr(\n \"id\",\n d =>\n `${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .attr(\"cursor\", \"pointer\")\n .on(\"mouseover\", handleMouseOver)\n .on(\"mousemove\", handleMouseMove)\n .on(\"mouseout\", handleMouseOut);\n\n //borders\n if (show) {\n chart\n .selectAll(`.${elementName}`)\n .style(\"stroke\", color)\n .style(\"stroke-width\", size);\n }\n\n //tooltip\n const tooltip = d3\n .select(\".c3-chart\")\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"c3-tooltip-container\")\n .style(\"display\", \"none\")\n .style(\"position\", \"fixed\");\n\n //hover handling\n function handleMouseOver(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(1.2 * maxVal))\n .style(\"stroke-width\", 1.5 * size);\n\n tooltip.style(\"opacity\", 1).style(\"display\", \"block\");\n }\n\n function handleMouseMove(d) {\n let result = d.properties.result;\n if (\n (typeof opts[\"prettyNumber\"] === \"undefined\" ||\n opts[\"prettyNumber\"] === true) &&\n !isNaN(parseInt(d.properties.result))\n ) {\n result = prettyNumber(d.properties.result);\n }\n tooltip\n .html(\n `\n \n \n \n \n \n \n \n
${d.properties.name}
${result}
\n `\n )\n .style(\"left\", `${d3.event.clientX + 10}px`)\n .style(\"top\", `${d3.event.clientY + 10}px`);\n }\n function handleMouseOut(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .style(\"stroke-width\", size);\n\n tooltip.style(\"opacity\", 0).style(\"display\", \"none\");\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll(`.${elementName}`);\n\n label.on(\"click\", handleClickToCopy);\n\n function handleClickToCopy(data) {\n const {\n properties: { result }\n } = data;\n copyToClipboard(result, d3.event);\n }\n }\n function zoomed() {\n chart\n .selectAll(`.${elementName}`)\n .attr(\"transform\", d3.event.transform);\n }\n chart.call(zoom);\n chart.call(zoom).on(\"mousedown.zoom\", null);\n });\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n chartContainer.remove();\n }\n}\n","import copyToClipboard from './copy-to-clipboard';\n\nfunction removeClassWithTimeOut(element, className = 'copied', ms = 1000) {\n setTimeout(() => {\n element.classList.remove(className);\n }, ms);\n}\n\nfunction handleCopyToClipboard(event) {\n const { target, target: { nodeName } } = event;\n\n let value;\n if (nodeName === 'DD') {\n value = target.innerText;\n if (!target.classList.contains('copied')) {\n target.classList.add('copied');\n removeClassWithTimeOut(target);\n }\n }\n if (nodeName === 'DT') {\n value = target.nextSibling.innerText;\n if (!target.nextSibling.classList.contains('copied')) {\n target.nextSibling.classList.add('copied');\n removeClassWithTimeOut(target.nextSibling);\n }\n }\n\n copyToClipboard(value);\n}\n\nexport default function renderExecutionMetadata({\n element,\n data,\n} = {}) {\n const dataList = document.createElement('dl');\n dataList.classList = 'keen-dataviz-execution-meta';\n\n if (Object.keys(data).length) {\n Object.keys(data).forEach((item) => {\n const dt = document.createElement('dt');\n dt.innerText = item.replace(/_/g, ' ');\n dt.addEventListener('click', e => handleCopyToClipboard(e));\n\n const dd = document.createElement('dd');\n dd.innerText = data[item];\n dd.addEventListener('click', e => handleCopyToClipboard(e));\n\n dataList.append(dt);\n dataList.append(dd);\n });\n } else {\n dataList.innerText = 'No execution metadata available';\n }\n\n element.append(dataList);\n}\n","import autocollector from './autocollector';\nimport modern from './modern';\nimport dracula from './dracula';\n\nexport default {\n autocollector,\n modern,\n dracula,\n};","const palette = {\n colors: [\n '#5E77FF',\n '#9C60FE',\n '#F162FE',\n '#FD65B7',\n '#FD6768',\n '#FDB86A',\n '#F2FC6C',\n '#A5FC6E',\n '#71FB85',\n '#73FBD0',\n '#76DDFA',\n '#76f4fa',\n '#bb76fa',\n '#fa76bf'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#45B2E8',\n '#D9540D',\n '#2CAB72',\n '#2C4BAB',\n '#EDDD02',\n '#E84545',\n '#E845CE',\n '#5FCEC9',\n '#E89F45',\n '#28E43F',\n '#B765C0',\n '#458AE8',\n '#AB2C2C',\n '#AB2C75',\n '#27E5FF',\n '#7168F2',\n '#FF932B',\n '#855D00',\n '#ACE845',\n '#1C91B4'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#8be9fd',\n '#50fa7b',\n '#ffb86c',\n '#ff79c6',\n '#bd93f9',\n '#ff5555',\n '#f1fa8c',\n ]\n};\n\nexport default palette;"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./lib/utils/each.js","webpack:///./lib/utils/copy-to-clipboard.js","webpack:///./node_modules/d3/dist/package.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/pairs.js","webpack:///./node_modules/d3-array/src/cross.js","webpack:///./node_modules/d3-array/src/descending.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-array/src/variance.js","webpack:///./node_modules/d3-array/src/deviation.js","webpack:///./node_modules/d3-array/src/extent.js","webpack:///./node_modules/d3-array/src/array.js","webpack:///./node_modules/d3-array/src/constant.js","webpack:///./node_modules/d3-array/src/identity.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/threshold/sturges.js","webpack:///./node_modules/d3-array/src/histogram.js","webpack:///./node_modules/d3-array/src/quantile.js","webpack:///./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack:///./node_modules/d3-array/src/threshold/scott.js","webpack:///./node_modules/d3-array/src/max.js","webpack:///./node_modules/d3-array/src/mean.js","webpack:///./node_modules/d3-array/src/median.js","webpack:///./node_modules/d3-array/src/merge.js","webpack:///./node_modules/d3-array/src/min.js","webpack:///./node_modules/d3-array/src/permute.js","webpack:///./node_modules/d3-array/src/scan.js","webpack:///./node_modules/d3-array/src/shuffle.js","webpack:///./node_modules/d3-array/src/sum.js","webpack:///./node_modules/d3-array/src/transpose.js","webpack:///./node_modules/d3-array/src/zip.js","webpack:///./node_modules/d3-array/src/index.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-axis/src/identity.js","webpack:///./node_modules/d3-axis/src/axis.js","webpack:///./node_modules/d3-axis/src/index.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-dispatch/src/index.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-selection/src/create.js","webpack:///./node_modules/d3-selection/src/local.js","webpack:///./node_modules/d3-selection/src/sourceEvent.js","webpack:///./node_modules/d3-selection/src/point.js","webpack:///./node_modules/d3-selection/src/mouse.js","webpack:///./node_modules/d3-selection/src/selectAll.js","webpack:///./node_modules/d3-selection/src/touch.js","webpack:///./node_modules/d3-selection/src/touches.js","webpack:///./node_modules/d3-selection/src/index.js","webpack:///./node_modules/d3-drag/src/noevent.js","webpack:///./node_modules/d3-drag/src/nodrag.js","webpack:///./node_modules/d3-drag/src/constant.js","webpack:///./node_modules/d3-drag/src/event.js","webpack:///./node_modules/d3-drag/src/drag.js","webpack:///./node_modules/d3-drag/src/index.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-color/src/math.js","webpack:///./node_modules/d3-color/src/lab.js","webpack:///./node_modules/d3-color/src/cubehelix.js","webpack:///./node_modules/d3-color/src/index.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-interpolate/src/discrete.js","webpack:///./node_modules/d3-interpolate/src/hue.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-interpolate/src/hsl.js","webpack:///./node_modules/d3-interpolate/src/lab.js","webpack:///./node_modules/d3-interpolate/src/hcl.js","webpack:///./node_modules/d3-interpolate/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/piecewise.js","webpack:///./node_modules/d3-interpolate/src/quantize.js","webpack:///./node_modules/d3-interpolate/src/index.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-timer/src/interval.js","webpack:///./node_modules/d3-timer/src/index.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-ease/src/linear.js","webpack:///./node_modules/d3-ease/src/quad.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-ease/src/poly.js","webpack:///./node_modules/d3-ease/src/sin.js","webpack:///./node_modules/d3-ease/src/exp.js","webpack:///./node_modules/d3-ease/src/circle.js","webpack:///./node_modules/d3-ease/src/bounce.js","webpack:///./node_modules/d3-ease/src/back.js","webpack:///./node_modules/d3-ease/src/elastic.js","webpack:///./node_modules/d3-ease/src/index.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-transition/src/active.js","webpack:///./node_modules/d3-transition/src/index.js","webpack:///./node_modules/d3-brush/src/constant.js","webpack:///./node_modules/d3-brush/src/event.js","webpack:///./node_modules/d3-brush/src/noevent.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-brush/src/index.js","webpack:///./node_modules/d3-chord/src/math.js","webpack:///./node_modules/d3-chord/src/chord.js","webpack:///./node_modules/d3-chord/src/array.js","webpack:///./node_modules/d3-chord/src/constant.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-path/src/index.js","webpack:///./node_modules/d3-chord/src/ribbon.js","webpack:///./node_modules/d3-chord/src/index.js","webpack:///./node_modules/d3-collection/src/map.js","webpack:///./node_modules/d3-collection/src/nest.js","webpack:///./node_modules/d3-collection/src/set.js","webpack:///./node_modules/d3-collection/src/keys.js","webpack:///./node_modules/d3-collection/src/values.js","webpack:///./node_modules/d3-collection/src/entries.js","webpack:///./node_modules/d3-collection/src/index.js","webpack:///./node_modules/d3-contour/src/array.js","webpack:///./node_modules/d3-contour/src/ascending.js","webpack:///./node_modules/d3-contour/src/area.js","webpack:///./node_modules/d3-contour/src/constant.js","webpack:///./node_modules/d3-contour/src/contains.js","webpack:///./node_modules/d3-contour/src/noop.js","webpack:///./node_modules/d3-contour/src/contours.js","webpack:///./node_modules/d3-contour/src/blur.js","webpack:///./node_modules/d3-contour/src/density.js","webpack:///./node_modules/d3-contour/src/index.js","webpack:///./node_modules/d3-dsv/src/dsv.js","webpack:///./node_modules/d3-dsv/src/csv.js","webpack:///./node_modules/d3-dsv/src/tsv.js","webpack:///./node_modules/d3-dsv/src/autoType.js","webpack:///./node_modules/d3-dsv/src/index.js","webpack:///./node_modules/d3-fetch/src/blob.js","webpack:///./node_modules/d3-fetch/src/buffer.js","webpack:///./node_modules/d3-fetch/src/text.js","webpack:///./node_modules/d3-fetch/src/dsv.js","webpack:///./node_modules/d3-fetch/src/image.js","webpack:///./node_modules/d3-fetch/src/json.js","webpack:///./node_modules/d3-fetch/src/xml.js","webpack:///./node_modules/d3-fetch/src/index.js","webpack:///./node_modules/d3-force/src/center.js","webpack:///./node_modules/d3-force/src/constant.js","webpack:///./node_modules/d3-force/src/jiggle.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-quadtree/src/index.js","webpack:///./node_modules/d3-force/src/collide.js","webpack:///./node_modules/d3-force/src/link.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-force/src/manyBody.js","webpack:///./node_modules/d3-force/src/radial.js","webpack:///./node_modules/d3-force/src/x.js","webpack:///./node_modules/d3-force/src/y.js","webpack:///./node_modules/d3-force/src/index.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-format/src/index.js","webpack:///./node_modules/d3-geo/src/adder.js","webpack:///./node_modules/d3-geo/src/math.js","webpack:///./node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3-geo/src/stream.js","webpack:///./node_modules/d3-geo/src/area.js","webpack:///./node_modules/d3-geo/src/cartesian.js","webpack:///./node_modules/d3-geo/src/bounds.js","webpack:///./node_modules/d3-geo/src/centroid.js","webpack:///./node_modules/d3-geo/src/constant.js","webpack:///./node_modules/d3-geo/src/compose.js","webpack:///./node_modules/d3-geo/src/rotation.js","webpack:///./node_modules/d3-geo/src/circle.js","webpack:///./node_modules/d3-geo/src/clip/buffer.js","webpack:///./node_modules/d3-geo/src/pointEqual.js","webpack:///./node_modules/d3-geo/src/clip/rejoin.js","webpack:///./node_modules/d3-geo/src/polygonContains.js","webpack:///./node_modules/d3-geo/src/clip/index.js","webpack:///./node_modules/d3-geo/src/clip/antimeridian.js","webpack:///./node_modules/d3-geo/src/clip/circle.js","webpack:///./node_modules/d3-geo/src/clip/line.js","webpack:///./node_modules/d3-geo/src/clip/rectangle.js","webpack:///./node_modules/d3-geo/src/clip/extent.js","webpack:///./node_modules/d3-geo/src/length.js","webpack:///./node_modules/d3-geo/src/distance.js","webpack:///./node_modules/d3-geo/src/contains.js","webpack:///./node_modules/d3-geo/src/graticule.js","webpack:///./node_modules/d3-geo/src/interpolate.js","webpack:///./node_modules/d3-geo/src/identity.js","webpack:///./node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3-geo/src/path/bounds.js","webpack:///./node_modules/d3-geo/src/path/centroid.js","webpack:///./node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3-geo/src/path/index.js","webpack:///./node_modules/d3-geo/src/transform.js","webpack:///./node_modules/d3-geo/src/projection/fit.js","webpack:///./node_modules/d3-geo/src/projection/resample.js","webpack:///./node_modules/d3-geo/src/projection/index.js","webpack:///./node_modules/d3-geo/src/projection/conic.js","webpack:///./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/albers.js","webpack:///./node_modules/d3-geo/src/projection/albersUsa.js","webpack:///./node_modules/d3-geo/src/projection/azimuthal.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/mercator.js","webpack:///./node_modules/d3-geo/src/projection/conicConformal.js","webpack:///./node_modules/d3-geo/src/projection/equirectangular.js","webpack:///./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/equalEarth.js","webpack:///./node_modules/d3-geo/src/projection/gnomonic.js","webpack:///./node_modules/d3-geo/src/projection/identity.js","webpack:///./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack:///./node_modules/d3-geo/src/projection/orthographic.js","webpack:///./node_modules/d3-geo/src/projection/stereographic.js","webpack:///./node_modules/d3-geo/src/projection/transverseMercator.js","webpack:///./node_modules/d3-geo/src/index.js","webpack:///./node_modules/d3-hierarchy/src/cluster.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack:///./node_modules/d3-hierarchy/src/array.js","webpack:///./node_modules/d3-hierarchy/src/pack/enclose.js","webpack:///./node_modules/d3-hierarchy/src/pack/siblings.js","webpack:///./node_modules/d3-hierarchy/src/accessors.js","webpack:///./node_modules/d3-hierarchy/src/constant.js","webpack:///./node_modules/d3-hierarchy/src/pack/index.js","webpack:///./node_modules/d3-hierarchy/src/treemap/round.js","webpack:///./node_modules/d3-hierarchy/src/treemap/dice.js","webpack:///./node_modules/d3-hierarchy/src/partition.js","webpack:///./node_modules/d3-hierarchy/src/stratify.js","webpack:///./node_modules/d3-hierarchy/src/tree.js","webpack:///./node_modules/d3-hierarchy/src/treemap/slice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack:///./node_modules/d3-hierarchy/src/treemap/index.js","webpack:///./node_modules/d3-hierarchy/src/treemap/binary.js","webpack:///./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack:///./node_modules/d3-hierarchy/src/index.js","webpack:///./node_modules/d3-polygon/src/area.js","webpack:///./node_modules/d3-polygon/src/centroid.js","webpack:///./node_modules/d3-polygon/src/cross.js","webpack:///./node_modules/d3-polygon/src/hull.js","webpack:///./node_modules/d3-polygon/src/contains.js","webpack:///./node_modules/d3-polygon/src/length.js","webpack:///./node_modules/d3-polygon/src/index.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-random/src/index.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/array.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/d3-scale/src/band.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-scale/src/identity.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-scale/src/log.js","webpack:///./node_modules/d3-scale/src/symlog.js","webpack:///./node_modules/d3-scale/src/pow.js","webpack:///./node_modules/d3-scale/src/quantile.js","webpack:///./node_modules/d3-scale/src/quantize.js","webpack:///./node_modules/d3-scale/src/threshold.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time/src/index.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-time-format/src/isoFormat.js","webpack:///./node_modules/d3-time-format/src/isoParse.js","webpack:///./node_modules/d3-time-format/src/index.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale/src/utcTime.js","webpack:///./node_modules/d3-scale/src/sequential.js","webpack:///./node_modules/d3-scale/src/sequentialQuantile.js","webpack:///./node_modules/d3-scale/src/diverging.js","webpack:///./node_modules/d3-scale/src/index.js","webpack:///./node_modules/d3-scale-chromatic/src/colors.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack:///./node_modules/d3-scale-chromatic/src/ramp.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack:///./node_modules/d3-scale-chromatic/src/index.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/arc.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/area.js","webpack:///./node_modules/d3-shape/src/descending.js","webpack:///./node_modules/d3-shape/src/identity.js","webpack:///./node_modules/d3-shape/src/pie.js","webpack:///./node_modules/d3-shape/src/curve/radial.js","webpack:///./node_modules/d3-shape/src/lineRadial.js","webpack:///./node_modules/d3-shape/src/areaRadial.js","webpack:///./node_modules/d3-shape/src/pointRadial.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/link/index.js","webpack:///./node_modules/d3-shape/src/symbol/circle.js","webpack:///./node_modules/d3-shape/src/symbol/cross.js","webpack:///./node_modules/d3-shape/src/symbol/diamond.js","webpack:///./node_modules/d3-shape/src/symbol/star.js","webpack:///./node_modules/d3-shape/src/symbol/square.js","webpack:///./node_modules/d3-shape/src/symbol/triangle.js","webpack:///./node_modules/d3-shape/src/symbol/wye.js","webpack:///./node_modules/d3-shape/src/symbol.js","webpack:///./node_modules/d3-shape/src/noop.js","webpack:///./node_modules/d3-shape/src/curve/basis.js","webpack:///./node_modules/d3-shape/src/curve/basisClosed.js","webpack:///./node_modules/d3-shape/src/curve/basisOpen.js","webpack:///./node_modules/d3-shape/src/curve/bundle.js","webpack:///./node_modules/d3-shape/src/curve/cardinal.js","webpack:///./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack:///./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack:///./node_modules/d3-shape/src/curve/catmullRom.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack:///./node_modules/d3-shape/src/curve/linearClosed.js","webpack:///./node_modules/d3-shape/src/curve/monotone.js","webpack:///./node_modules/d3-shape/src/curve/natural.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/d3-shape/src/offset/none.js","webpack:///./node_modules/d3-shape/src/order/none.js","webpack:///./node_modules/d3-shape/src/stack.js","webpack:///./node_modules/d3-shape/src/offset/expand.js","webpack:///./node_modules/d3-shape/src/offset/diverging.js","webpack:///./node_modules/d3-shape/src/offset/silhouette.js","webpack:///./node_modules/d3-shape/src/offset/wiggle.js","webpack:///./node_modules/d3-shape/src/order/appearance.js","webpack:///./node_modules/d3-shape/src/order/ascending.js","webpack:///./node_modules/d3-shape/src/order/descending.js","webpack:///./node_modules/d3-shape/src/order/insideOut.js","webpack:///./node_modules/d3-shape/src/order/reverse.js","webpack:///./node_modules/d3-shape/src/index.js","webpack:///./node_modules/d3-voronoi/src/constant.js","webpack:///./node_modules/d3-voronoi/src/point.js","webpack:///./node_modules/d3-voronoi/src/RedBlackTree.js","webpack:///./node_modules/d3-voronoi/src/Edge.js","webpack:///./node_modules/d3-voronoi/src/Cell.js","webpack:///./node_modules/d3-voronoi/src/Circle.js","webpack:///./node_modules/d3-voronoi/src/Beach.js","webpack:///./node_modules/d3-voronoi/src/Diagram.js","webpack:///./node_modules/d3-voronoi/src/voronoi.js","webpack:///./node_modules/d3-voronoi/src/index.js","webpack:///./node_modules/d3-zoom/src/constant.js","webpack:///./node_modules/d3-zoom/src/event.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./node_modules/d3-zoom/src/noevent.js","webpack:///./node_modules/d3-zoom/src/zoom.js","webpack:///./node_modules/d3-zoom/src/index.js","webpack:///./node_modules/d3/index.js","webpack:///./lib/utils/pretty-number.js","webpack:///./lib/utils/escape-html.js","webpack:///./lib/utils/extend.js","webpack:///./lib/utils/svg-text-wrap.js","webpack:///(webpack)/buildin/global.js","webpack:///./lib/dataset/modifiers/append.js","webpack:///./lib/dataset/utils/create-null-list.js","webpack:///./node_modules/c3/c3.js","webpack:///./lib/utils/assert-date-string.js","webpack:///./lib/dataset/index.js","webpack:///./lib/dataset/utils/analyses.js","webpack:///./lib/dataset/utils/flatten.js","webpack:///./lib/utils/strip-html-tags.js","webpack:///./lib/utils/extend-deep.js","webpack:///./lib/utils/render-download-btn.js","webpack:///./lib/utils/export-svg.js","webpack:///./lib/utils/export-data.js","webpack:///./node_modules/rangeable/dist/rangeable.min.js","webpack:///./lib/browser.js","webpack:///./lib/index.js","webpack:///./lib/dataset/modifiers/delete.js","webpack:///./lib/dataset/modifiers/filter.js","webpack:///./lib/dataset/modifiers/insert.js","webpack:///./lib/dataset/modifiers/select.js","webpack:///./lib/dataset/modifiers/sort.js","webpack:///./lib/dataset/modifiers/update.js","webpack:///./lib/dataset/utils/parsers.js","webpack:///./lib/dataset/utils/object.js","webpack:///./lib/dataset/utils/create-extraction-keys.js","webpack:///./lib/data.js","webpack:///./lib/libraries/index.js","webpack:///./lib/libraries/c3/extensions/default-date-format.js","webpack:///./lib/libraries/c3/extensions/paginating-legend.js","webpack:///./lib/libraries/c3/extensions/tooltip-contents.js","webpack:///./lib/dataset/utils/calculate-range.js","webpack:///./lib/dataset/utils/calculate-percents.js","webpack:///./lib/libraries/default/message.js","webpack:///./lib/utils/download-results.js","webpack:///./node_modules/dom-to-image/src/dom-to-image.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./lib/libraries/default/metric.js","webpack:///./lib/libraries/default/table.js","webpack:///./lib/libraries/default/spinner.js","webpack:///./lib/libraries/default/funnel.js","webpack:///./lib/libraries/default/funnel-3d.js","webpack:///./lib/libraries/default/horizontal-funnel.js","webpack:///./lib/libraries/default/horizontal-funnel-3d.js","webpack:///./lib/libraries/default/metric-combo.js","webpack:///./lib/libraries/default/heatmap.js","webpack:///./lib/libraries/default/choropleth.js","webpack:///./lib/utils/render-execution-metadata.js","webpack:///./lib/palettes/index.js","webpack:///./lib/palettes/autocollector.js","webpack:///./lib/palettes/modern.js","webpack:///./lib/palettes/dracula.js"],"names":["each","o","cb","s","n","Array","length","call","hasOwnProperty","copyToClipboard","stickTooltip","event","tooltip","style","opacity","top","pageY","left","pageX","value","placeholder","document","createElement","body","appendChild","select","execCommand","removeChild","notification","padding","backgroundColor","fontSize","position","zIndex","transition","innerText","addEventListener","e","setTimeout","prettyNumber","input","Number","sciNo","toPrecision","prefix","suffixes","String","Math","abs","recurse","iteration","split","rhs","charAt","numNumerals","escapeHtml","matchHtmlRegExp","string","str","match","exec","escape","html","index","lastIndex","charCodeAt","substring","extend","target","i","arguments","prop","textWrap","d3","text","width","words","reverse","word","line","lineNumber","lineHeight","x","attr","y","dy","tspan","append","pop","push","join","node","getComputedTextLength","appendColumn","appendRow","self","args","prototype","slice","label","undefined","matrix","row","cell","concat","newRow","col","selectColumn","len","list","testObject","testString","getTime","isNaN","ISO_8601","test","del","filter","insert","sort","update","Dataset","config","meta","type","data","arr","set","coords","Error","colIndex","indexOf","rowIndex","colResult","rowResult","selectRow","analyses","parser","average","start","end","sum","avg","val","parseFloat","maximum","nums","max","apply","minimum","min","getColumnAverage","getRowAverage","getColumnSum","getRowSum","getColumnMaximum","getRowMaximum","getColumnMinimum","getRowMinimum","getColumnLabel","getRowIndex","flatten","ob","toReturn","flatObject","stripHtmlTags","inputString","replace","extendDeep","key","renderDownloadButton","element","btnClass","isBtnRendered","parentNode","children","find","child","className","button","insertBefore","nextSibling","exportImage","obj","quality","bgcolor","domtoimage","toBlob","then","blob","exportData","generateCsvContent","csvContent","forEach","j","encodeURIComponent","supportedFormats","format","toLowerCase","includes","fileName","fileFormat","content","JSON","stringify","htmlElement","setAttribute","click","Dataviz","env","global","window","extendKeenGlobalObject","KeenDataviz","KeenDataset","Keen","keenGlobals","webpackKeenGlobals","options","c3","datavizInstance","defaultOptions","showDeprecationWarnings","showLoadingSpinner","container","containerElement","title","showTitle","subtitle","notes","theme","colors","colorMapping","ui","executionMetadata","utils","clickToCopyToClipboard","indexBy","labels","labelMapping","labelMappingRegExp","errorMapping","showErrorMessages","library","sortGroups","sortIntervals","results","stacked","dateFormat","legend","show","alignment","textMaxLength","pagination","offset","limit","pointer","axis","color","size","point","focus","expand","enabled","r","sensitivity","horizontal","order","selection","draggable","multiple","onselected","d","selectedItems","view","_artifacts","selected","reduce","prev","curr","grid","partialIntervalIndicator","timezone","table","schema","renderOnVisible","funnel","lines","resultValues","percents","countingMethod","decimals","marginBetweenElements","hover","effect3d","minimalSize","react","range","sparkline","choropleth","map","borders","showSlider","heatmap","palette","palettes","console","log","convertChartTypes","stacking","el","pattern","dataset","_prepared","_rendered","visuals","prepare","render","firstVisibilityState","visibilityState","callback","bind","libraries","default","register","name","actions","method","nodeName","querySelector","visual","attributes","fn","chartOptions","destroy","innerHTML","domReady","height","num","setLabels","updateColumn","updateRow","mapLabels","mapLabelsExec","valueAfterMatching","regExpAndLabel","regExpObj","labelMappingDimension","message","loader","spinner","firstResult","query","interval","timeframe","isArray","timeframes","resultItem","foundDifferent","timeframeItem","resultTimeframe","msg","error","deleteColumn","result","event_collection","analysis_type","ds2","Object","keys","returnValue","renderAsPromise","Promise","resolve","reject","customCallback","onrendered","shouldRenderExecutionMetadata","execution_metadata","shouldRenderDownloadBtn","buttons","download","mappedMsg","buildDomWrapper","IntersectionObserver","chartVisibleCallback","events","observer","isIntersecting","observe","hidden","visibilityChange","msHidden","webkitHidden","handleVisibilityChange","load","once","sortColumns","sortRows","bool","chartType","parseRawData","parseRequest","initialize","version","pkg","chart100percentWide","rangeChart","verticalAlignment","horizontalAlignment","align","legendItemsAlign","areachart","barchart","columnchart","linechart","piechart","testDom","readyState","DOMContentLoaded","removeEventListener","deleteRow","q","splice","filterColumns","filterRows","clone","selectedColumn","ri","insertColumn","insertRow","comp","head","cols","analysesUtilMethods","a","b","op","lib","parsers","parseMetric","res","parseInterval","record","parseGroupedMetric","parseGroupedInterval","group","parseDoubleGroupedMetric","rowLabel","parseDoubleGroupedInterval","parseFunnel","steps","parseList","parseExtraction","datasetExtraction","datasetKeys","names","from","tableConfig","resultKeys","keyName","nameI","columns","iNames","parseHeatmapAxis","heatmapDataset","objKeys","metric","extraction","valueAtDeepKey","is","createExtractionKeys","Set","add","parseResponse","response","parserArgs","selectedParser","metadata","filters","group_by","display_name","getDefaultTitle","visualization","chart_type","getDefaultType","Date","analysis","toUpperCase","timer","bindResizeListener","clearTimeout","delay","chart","c3Chart","parentWidth","offsetWidth","nextSiblingWidth","prevSiblingWidth","previousSibling","resize","defineC3","types","Funnel","Funnel3d","HorizontalFunnel","HorizontalFunnel3d","MetricCombo","Heatmap","Choropleth","c3Types","getPaddings","paddingName","parseInt","getComputedStyle","getDefaultOptions","ENFORCED_OPTIONS","bindto","renderingElement","offsetHeight","titleElement","subtitleElement","notesElement","DEFAULT_OPTIONS","extendedConfig","sumArray","oldMatrix","tick","clearOnRender","datasetMeta","spliceFrom","intervalTypes","removeLegend","rotated","culling","groups","categories","legendElement","remove","chartTypesWithPartialIntervalIndicator","partialResultsRegion","class","regions","contents","c3TooltipContents","ratio","id","valueFormatted","c3CustomTooltipFiltering","toFixed","c3options","c3CustomDataMapping","hide","generate","c3PaginatingLegend","onLegendRendered","onPaginated","flush","scope","onresize","attachEvent","startDate","endDate","timeDiff","months","ms","date","getMonth","getFullYear","getDate","domNode","legendConfig","round","total","columnsSorted","dataColumnsSorted","columnData","item","column","paginateHorizontalLeftElement","legendItemsElement","paginateVerticalElement","paginateHorizontalRightElement","paginateData","renderLegendComponent","renderPaginationComponent","labelShortened","legendItem","chartPartId","legendItemColorSample","prepend","tooltipElement","revert","isHidden","toggle","arrowUp","arrowDown","paginate","direction","diff","floor","clearSelectedText","empty","getSelection","removeAllRanges","defaultTitleFormat","defaultValueFormat","nameFormat","tooltip_format_name","titleFormat","tooltip_format_title","valueFormat","tooltip_format_value","CLASS","levelColor","tooltipName","calculateRange","newValues","calculateSumForPercents","calculatePercents","outer","inner","titleContainer","subtitleContainer","notesContainer","downloadResults","preventDefault","currentTarget","previousElementSibling","formatExtractionData","formattedResult","itemProp","acc","opts","prevValue","suffix","formattedNum","flexDifferenceStyle","resultDifference","differenceStyle","smallerValue","previousResults","isExtraction","comparedProp","resultClassName","previousResultsClassName","currentPage","_generateTableRows","defaultConfig","page","arrows","customConfig","datasetPaginated","pages","ceil","columnsArray","colNamesToMap","mapValues","mapDates","entries","rowColValue","rowColValueEscaped","pageNumber","prevPage","nextPage","_generateTableHeader","fieldNumber","columnNames","colName","colNameEscaped","isEmpty","querySelectorAll","sortOrder","getAttribute","checker","sortOrderNumber","nameA","nameB","first","shift","unshift","attachBtnEventListeners","btn","tableClass","artifacts","clearInterval","radius","marginBetweenSteps","margin","right","bottom","yMarginElement","funnelContainer","chartContainer","svgWidth","svgHeight","elemHeight","prevElemWidth","percent","minimalSizeStep","polygons","newPoints","points","selectAll","enter","p","handleMouseOver","polygonsHover","labelHover","thisLabel","handleMouseOut","on","handleClickToCopy","shadowCut","polygonsShadows","polygons3d","rgb","darker","xMarginElement","elemWidth","prevElemHeight","metricResults","c","prevResult","previous","currResult","current","count","percentDifference","labelClass","iconClass","containerTitle","containerSubtitle","chartRoot","currentCount","simpleTooltip","baseWidth","baseHeight","heatmapContainer","containerWidth","containerHeight","xLabel","yLabel","formatData","timeFormat","timestamp","parse","formattedData","refValue","minRange","maxRange","getColor","defaultColor","baseColor","getColorAlpha","scaleLinear","domain","convertRGBAtoRGB","bg","getTileColor","alpha","solidColor","g","svg","rangeableInput","handleSliderChange","rects","nodes","rangeable","Rangeable","onChange","containerToString","customStyle","scriptRef","xLabelBase","yLabelBase","getAxisLabelRatio","base","labelSize","xAxis","scaleBand","axisBottom","tickSize","yAxis","axisLeft","chartTooltip","toString","raise","handleMouseMove","tooltipContent","clientX","clientY","handleMouseLeave","handleClick","bandwidth","choroplethContainer","heightChanges","onlyValues","minVal","maxVal","lightColor","hsl","brighter","l","darkColor","ramp","json","zoom","scaleExtent","translateExtent","zoomed","projection","geoMercator","fitSize","geoAlbersUsa","scale","path","geoPath","usData","features","theOne","properties","elementName","rangeContainer","tooltips","transform","renderExecutionMetadata","removeClassWithTimeOut","classList","handleCopyToClipboard","contains","dataList","dt","dd","autocollector","modern","dracula"],"mappings":"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AACAO,eAASE,IAAT,CAAcI,WAAd,CAA0BC,YAA1B;AACD,KAHD,EAGG,IAHH;AAID;AACF,C;;;;;;;;;;ACnCM,IAAI,YAAI;AACR;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,IAAI,cAAM;AACV,kBAAkB;AAClB;AACA,eAAe,+WAA+W,oBAAoB,sMAAsM,oBAAoB,sBAAsB,oBAAoB,MAAM,oBAAoB;AAChrB,uBAAuB;AACvB,oBAAoB;;;ACfZ;AACf;AACA,CAAC;;;ACFmC;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,WAAW,SAAS;AACpB;AACA;;;AChCoC;AACF;;AAElC,sBAAsB,QAAQ,CAAC,SAAS;AACjC;AACA;AACQ,sDAAW,EAAC;;;ACNZ;AACf;AACA;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA;;;ACT6B;;AAEd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,IAAI;;AAEnC,kBAAkB,SAAS;AAC3B,sCAAsC,SAAS;AAC/C;AACA;AACA;;AAEA;AACA,CAAC;;;ACpBc;AACf;AACA,CAAC;;;ACFc;AACf;AACA,CAAC;;;ACF6B;;AAEf;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AChCiC;;AAEnB;AACf,UAAU,QAAQ;AAClB;AACA,CAAC;;;ACLc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACpCD,IAAI,WAAK;;AAEF,YAAY,WAAK;AACjB,UAAU,WAAK;;;ACHP;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACFc;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACZD;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClDe;AACf;AACA,CAAC;;;ACF6B;AACA;AACI;AACJ;AACI;AACN;AACK;AACS;;AAE3B;AACf,cAAc,QAAQ;AACtB,eAAe,UAAM;AACrB,kBAAkB,OAAO;;AAEzB;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,SAAK,kCAAkC;AAClD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;;AAEA;AACA,qEAAqE,QAAQ;AAC7E;;AAEA;AACA,sEAAsE,QAAQ;AAC9E;;AAEA;AACA,4FAA4F,QAAQ,CAAC,KAAK,YAAY,QAAQ;AAC9H;;AAEA;AACA,CAAC;;;AC1E6B;;AAEf;AACf,iCAAiC,MAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACb4B;AACQ;AACN;AACI;;AAEpB;AACf,WAAW,GAAG,cAAc,MAAM,OAAO,SAAS;AAClD,uCAAuC,QAAQ,iBAAiB,QAAQ;AACxE,CAAC;;;ACRoC;;AAEtB;AACf,wCAAwC,SAAS;AACjD,CAAC;;;ACJc;AACf;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACjC6B;;AAEf;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;;AAEA;AACA,CAAC;;;ACxBmC;AACN;AACI;;AAEnB;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;;AAEA,SAAS,QAAQ,cAAc,SAAS;AACxC,CAAC;;;AC3Bc;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACpBc;AACf;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACjCc;AACf;AACA;AACA;AACA,CAAC;;;ACJmC;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,SAAS;;AAE1C;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnBc;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACbc;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnBuB;;AAET;AACf;AACA,uBAAuB,OAAG,SAAS,gBAAM,4BAA4B,SAAS;AAC9E,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACA,CAAC;;AAED,SAAS,gBAAM;AACf;AACA;;;ACdoC;;AAErB;AACf,SAAS,aAAS;AAClB,CAAC;;;ACJmE;AACnB;AACF;AACN;AACU;AACF;AACN;AACM;AACiC;AACtB;AACI;AAC3B;AACE;AACI;AACF;AACJ;AACI;AACI;AACE;AACN;AACF;AACM;AACR;AAC6B;AACjB;AACF;AACV;;;AC1B9B,IAAI,WAAK;;;ACAD;AACf;AACA,CAAC;;;ACF6B;AACI;;AAElC,IAAI,QAAG;AACP,IAAI,UAAK;AACT,IAAI,WAAM;AACV,IAAI,SAAI;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,WAAM;AACf;AACA;AACA;AACA;;AAEA,SAAS,WAAM;AACf,sDAAsD;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,SAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,QAAG,eAAe,SAAI;AAC3C,qBAAqB,SAAI,eAAe,UAAK;AAC7C,6BAA6B,QAAG,eAAe,WAAM;;AAErD;AACA;AACA,yGAAyG,YAAQ;AACjH;AACA;AACA;AACA;AACA,sCAAsC,WAAM,GAAG,WAAM;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,QAAG,sBAAsB,WAAM;;AAE9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,kFAAkF,EAAE;;AAE9H;AACA;AACA,0CAA0C,gCAAgC,6DAA6D,EAAE;AACzI;;AAEA;;AAEA;AACA,8BAA8B,SAAI,cAAc,UAAK;AACrD;AACA;;AAEA;AACA;AACA,wCAAwC,+BAA+B,EAAE;;AAEzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,UAAK,wBAAwB,SAAI;;AAEzE;AACA,0BAA0B,wBAAwB,EAAE;AACpD;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B,WAAK;AAChC;;AAEA;AACA,gEAAgE,WAAK;AACrE;;AAEA;AACA,+DAA+D,WAAK;AACpE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP,SAAS,SAAI,CAAC,QAAG;AACjB;;AAEO;AACP,SAAS,SAAI,CAAC,UAAK;AACnB;;AAEO;AACP,SAAS,SAAI,CAAC,WAAM;AACpB;;AAEO;AACP,SAAS,SAAI,CAAC,SAAI;AAClB;;;ACxKgB;;;ACLhB,YAAY;;AAEZ;AACA,8CAA8C,IAAI,OAAO;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH;AACA,kFAAkF,OAAO;AACzF;AACA,+CAA+C,OAAO;AACtD,GAAG;AACH;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;;AAEA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA,mCAAmC,4BAA4B;AAC/D;AACA;;AAEe,yDAAQ,EAAC;;;ACnFuB;;;ACAxC;;AAEQ;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACRoC;;AAEvB;AACf;AACA;AACA,SAAS,UAAU,2BAA2B,OAAO,UAAU,sBAAsB;AACrF,CAAC;;;ACNmC;AACD;;AAEnC;AACA;AACA;AACA;AACA,mBAAmB,KAAK,8CAA8C,KAAK;AAC3E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,CAAC;;;ACxBD;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;ACNiC;AACC;;AAEpB;AACf,6CAA6C,YAAQ;;AAErD,qFAAqF,OAAO;AAC5F,+GAA+G,OAAO;AACtH;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB,CAAC;;;AChBD,SAAS,iBAAK;AACd;AACA;;AAEe;AACf,4BAA4B,iBAAK;AACjC;AACA;AACA,CAAC;;;ACRiC;AACO;;AAE1B;AACf,6CAA6C,WAAW;;AAExD,yFAAyF,OAAO;AAChG,8DAA8D,OAAO;AACrE;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB,CAAC;;;AChBc;AACf;AACA;AACA;AACA,CAAC;;;ACJiC;AACD;;AAElB;AACf,2CAA2C,OAAO;;AAElD,qFAAqF,OAAO;AAC5F,4FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB,CAAC;;;ACfc;AACf;AACA,CAAC;;;ACF6B;AACI;;AAEnB;AACf,aAAa,SAAS,iCAAiC,MAAM;AAC7D,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,qDAAqD,EAAE;AACvF,uCAAuC,+CAA+C,EAAE;AACxF,qCAAqC,6CAA6C,EAAE;AACpF,wCAAwC,gDAAgD;AACxF;;;ACrBe;AACf;AACA;AACA;AACA,CAAC;;;ACJiC;AACA;AACC;;AAEnC,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA,KAAK;AACL,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,2BAA2B,eAAe,EAAE;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C,YAAQ;;AAEnD,sGAAsG,OAAO;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;AACA,CAAC;;;ACrH6B;AACI;;AAEnB;AACf,aAAa,SAAS,gCAAgC,MAAM;AAC5D,CAAC;;;ACLc;AACf;AACA;AACA;AACA,oCAAoC;AACpC;AACA,CAAC;;;ACNiC;;AAEnB;;AAEf,8JAA8J,OAAO;AACrK,wHAAwH,OAAO;AAC/H;AACA;AACA;AACA;AACA;;AAEA,QAAQ,QAAQ;AAChB;AACA;;AAEA,aAAa,SAAS;AACtB,CAAC;;;ACjBc;;AAEf,4DAA4D,SAAS;AACrE,4EAA4E,UAAU;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACZiC;;AAEnB;AACf,0BAA0B,cAAS;;AAEnC;AACA;AACA;;AAEA,sFAAsF,OAAO;AAC7F,wGAAwG,OAAO;AAC/G;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB,CAAC;;AAED,SAAS,cAAS;AAClB;AACA;;;ACvBe;AACf;AACA;AACA;AACA;AACA,CAAC;;;ACLc;AACf;AACA,wBAAwB,mBAAmB,EAAE;AAC7C;AACA,CAAC;;;ACJc;;AAEf,2DAA2D,OAAO;AAClE,wDAAwD,OAAO;AAC/D;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACVc;AACf;AACA,wBAAwB,QAAQ,EAAE;AAClC;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACFc;;AAEf,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA;AACA;;AAEA;AACA,CAAC;;;ACToC;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,SAAS;;AAE1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACxDc;AACf;AACA;AACA,0BAA0B;AAC1B,CAAC;;;ACJmC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA,SAAS,UAAW;AACpB;;;AClCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC3BD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;AC1ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACxBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACxBD;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACND;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACNgC;;AAElB;AACf,mDAAmD,OAAO;AAC1D;AACA;AACA,GAAG;AACH,CAAC;;;ACPgC;AACE;;AAEnC;AACA;AACA;;AAEe;AACf,mDAAmD,OAAO;AAC1D,uFAAuF,YAAQ;AAC/F;AACA;AACA,GAAG;AACH,CAAC;;;ACbD,SAAS,aAAM;AACf;AACA;AACA;;AAEe;AACf,mBAAmB,aAAM;AACzB,CAAC;;;ACPD;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACVc;AACf;AACA;AACA;AACA,CAAC;;;ACJD;;AAEO,IAAI,QAAK;;AAEhB;AACA,MAAM,UAAO;AACb,0BAA0B,UAAO;AACjC,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAK,CAAC;AACvB,IAAI,QAAK;AACT;AACA;AACA,KAAK;AACL,MAAM,QAAK;AACX;AACA;AACA;;AAEA,SAAS,iBAAc;AACvB;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEe;AACf,kBAAkB,iBAAc;;AAEhC;AACA;AACA,6CAA6C,OAAO;AACpD,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA,CAAC;;AAEM;AACP,eAAe,QAAK;AACpB,uBAAuB,QAAK;AAC5B,EAAE,QAAK;AACP;AACA;AACA,GAAG;AACH,IAAI,QAAK;AACT;AACA;;;AC1GoC;;AAEpC;AACA,eAAe,UAAW;AAC1B;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;ACjCuC;AACM;AACN;AACJ;A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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,QAAQ,WAAK;AACnB;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe,SAAS,WAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP,iCAAiC,WAAK;AACtC;AACA;AACA;AACA;;AAEO,SAAS,SAAG;AACnB;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,MAAM,MAAM,SAAG,EAAE,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,iCAAiC,WAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,WAAW,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AChXO;AACA;;;ACDiC;AACO;AACP;;AAExC;AACA;AACA;AACA;AACA;AACA,IAAI,MAAE;AACN,IAAI,MAAE;AACN,IAAI,MAAE,OAAO,MAAE,GAAG,MAAE;AACpB,SAAS,MAAE,GAAG,MAAE,GAAG,MAAE;;AAErB;AACA;AACA;AACA,qBAAqB,GAAG,OAAO,UAAU;AACzC;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,MAAM,WAAW,MAAM,CAAC,KAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,2CAA2C,MAAE,GAAG,MAAE;AAClD;;AAEA;AACA,aAAa,MAAE,eAAe,MAAE,QAAQ,MAAE;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;;AAEA,MAAM,WAAW,MAAM,CAAC,KAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;;AC1HuC;AACyB;AACzB;;AAExC,IAAI,WAAC;AACL,IAAI,WAAC;AACL;AACA,IAAI,WAAC;AACL,IAAI,WAAC;AACL,SAAS,WAAC,GAAG,WAAC;AACd,SAAS,WAAC,GAAG,WAAC;AACd,YAAY,WAAC,OAAO,WAAC,GAAG,WAAC;;AAEzB;AACA;AACA,qBAAqB,GAAG,OAAO,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA,WAAW,WAAC,uBAAuB,WAAC;AACpC,wCAAwC,WAAC;AACzC,kCAAkC,OAAO;AACzC;AACA;;AAEe,SAAS,mBAAS;AACjC;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,MAAM,YAAY,mBAAS,EAAE,MAAM,CAAC,KAAK;AACzC;AACA,oBAAoB,QAAQ,YAAY,QAAQ;AAChD;AACA,GAAG;AACH;AACA,oBAAoB,MAAM,YAAY,MAAM;AAC5C;AACA,GAAG;AACH;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,sBAAsB,WAAC,UAAU,WAAC;AAClC,iCAAiC,WAAC;AAClC,sBAAsB,WAAC;AACvB;AACA;AACA;AACA,CAAC;;;AC5DkD;AACE;AACJ;;;ACF1C;AACP;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AClB6B;;AAEf;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACA,CAAC;;;ACZc;AACf;AACA;AACA;AACA,CAAC;;;ACJiC;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO,SAAS,SAAG;AACnB;AACA,kFAAkF,2BAAQ;AAC1F;;AAEO;AACP;AACA,0CAA0C,2BAAQ;AAClD;AACA;;AAEe;AACf;AACA,4BAA4B,2BAAQ;AACpC;;;AC5ByC;AACb;AACY;AACD;;AAExB;AACf,cAAc,KAAK;;AAEnB;AACA,2BAA2B,SAAQ,mBAAmB,SAAQ;AAC9D;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,IAAI,EAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,cAAc,SAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,yBAAyB,SAAK;AAC9B,+BAA+B,WAAW;;;ACtDrB;;AAEb;AACf;AACA;AACA;AACA;AACA;;AAEA,aAAa,QAAQ,aAAa,SAAK;AACvC,QAAQ,QAAQ;;AAEhB;AACA,eAAe,QAAQ;AACvB;AACA;AACA,CAAC;;;AChBc;AACf;AACA;AACA;AACA;AACA,CAAC;;;ACLc;AACf;AACA;AACA;AACA,CAAC;;;ACJ2B;;AAEb;AACf,YAAY;AACZ,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,SAAK;AAClB,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACtB6B;;AAE9B;AACA;;AAEA,SAAS,WAAI;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,2BAA2B;AAC3B;AACA;AACA,wCAAwC;AACxC,2BAA2B;AAC3B;AACA,KAAK,OAAO;AACZ;AACA,cAAc,SAAS,UAAM,SAAS;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,WAAI;AACZ;AACA,4BAA4B,OAAO;AACnC;AACA,SAAS;AACT,CAAC;;;AC/D8B;AACP;AACI;AACF;AACI;AAC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A;AACA;AACA;;;ACPe;AACf;AACA,iBAAiB,OAAO;AACxB;AACA,CAAC;;;ACJ8C;AACK;AACA;AACY;AACd;AACQ;AACV;AACM;AACA;AACF;AACE;AAC6B;AACjC;AAC4E;AAC/C;AAC/B;AAC+B;AACwB;AACtD;AACF;;;ACnB/C,IAAI,WAAK;AACT;AACA,IAAI,cAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qIAAqI,mBAAmB;;AAEjJ;AACP;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP,QAAQ;AACR,IAAI,WAAK,CAAC;AACV;AACA;AACA;AACA;AACA;AACA,IAAI,WAAK;AACT;;AAEA;AACA;AACA,EAAE,WAAK;AACP;AACA;AACA,GAAG;AACH,IAAI,WAAK;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,WAAK,SAAS;AACpB;AACA,8BAA8B;AAC9B;AACA;AACA,QAAQ,cAAQ,EAAE,cAAQ,iBAAiB,cAAQ;AACnD,GAAG;AACH,SAAS,cAAQ,2BAA2B,cAAQ;AACpD,IAAI,WAAK;AACT;AACA;;;AC7G8B;;AAEf;AACf,cAAc,KAAK;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACVkC;;AAEpB;AACf,cAAc,KAAK;AACnB;AACA,wCAAwC,GAAG;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACRgB;;AAIE;;AAIC;;;ACZiB;AACG;;AAExC,cAAc,YAAQ;AACtB;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEQ;AACf;AACA;AACA;AACA,EAAE,eAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAEM,SAAS,aAAI;AACpB,iBAAiB,YAAG;AACpB,0DAA0D;AAC1D;AACA;;AAEO,SAAS,YAAG;AACnB,iBAAiB,YAAG;AACpB,0DAA0D;AAC1D;AACA;;AAEO,SAAS,YAAG;AACnB;AACA;AACA;AACA;;AAEA,SAAS,eAAM;AACf;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C,sCAAsC,WAAO;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAwD;AACxD;AACA,0DAA0D;AAC1D;AACA,IAAI,WAAO;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;;;ACxJ8D;;AAE/C;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,kDAAkD,eAAe,UAAU;AAC3E,8BAA8B,QAAQ,qBAAqB,MAAM;AACjE,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACvBoC;;AAEtB;AACf;AACA,IAAI,SAAS;AACb,GAAG;AACH,CAAC;;;ACNmC;;AAEpC;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB,2BAA2B,OAAO;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;;AAEA;AACA,gBAAgB,YAAG;AACnB,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;AACA,mBAAmB,YAAG;AACtB,2CAA2C;AAC3C,GAAG;;AAEH;AACA,WAAW,YAAG;AACd;AACA;;;AChF+B;AACqD;;AAErE;AACf;AACA,kCAAkC,UAAiB;AACnD,qBAAqB,WAAK,GAAG,OAAc;AAC3C,aAAa,WAAK,eAAe,OAAc;AAC/C,QAAQ,UAAiB;AACzB,CAAC;;;ACT8E;AACxC;AACJ;AACK;;AAExC,SAAS,eAAU;AACnB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,SAAS,uCAAuC,uBAAoB,GAAG,sBAAW;AACnG;AACA,0BAA0B,mBAAc,GAAG,iBAAY,eAAe,UAAU;AAChF,0CAA0C,iBAAY,GAAG,eAAU;AACnE,0BAA0B,mBAAc,GAAG,iBAAY;AACvD,CAAC;;;AC7EsC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA,CAAC;;;AC3CoC;;AAErC;AACA;AACA,IAAI,aAAI;AACR;AACA;;AAEA;AACA;AACA,IAAI,aAAI;AACR;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX,CAAC;;;ACtBmC;;AAEpC;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX,CAAC;;;ACtBmC;;AAEpC;AACA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEe;AACf;;AAEA;AACA;AACA,QAAQ,YAAG;AACX,CAAC;;;ACfoC;AACF;;AAEpB;AACf,2CAA2C,OAAO;;AAElD,qFAAqF,OAAO;AAC5F,4FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;ACfkC;;AAEpB;AACf;;AAEA,+JAA+J,OAAO;AACtK,wHAAwH,OAAO;AAC/H;AACA;AACA;AACA;AACA;;AAEA,QAAQ,QAAQ;AAChB;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;AClByC;;AAE1C,SAAS,QAAK;AACd;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,sBAAsB,QAAK,SAAS,aAAI,GAAG,YAAG;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;AACA,QAAQ,YAAG;AACX;AACA,CAAC;;;AC/BD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACVqC;AACH;AACM;;AAE1B;AACf;AACA;;AAEA,6CAA6C,YAAQ;;AAErD,qFAAqF,OAAO;AAC5F,+GAA+G,OAAO;AACtH;AACA;AACA;AACA,QAAQ,mBAAQ,qCAAqC,YAAG;AACxD;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;ACrBwC;AACN;AACM;;AAE1B;AACf;AACA;;AAEA,6CAA6C,WAAW;;AAExD,yFAAyF,OAAO;AAChG,8DAA8D,OAAO;AACrE;AACA,yFAAyF,YAAG,uCAAuC,OAAO;AAC1I;AACA,YAAY,mBAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;ACzBsC;;AAEvC,IAAI,mBAAS,GAAG,aAAS;;AAEV;AACf,aAAa,mBAAS;AACtB,CAAC;;;ACN8E;AAC5C;AACJ;AACI;AACK;;AAExC;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB,oDAAoD,UAAK;AACzD;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAW;AACpB;AACA;AACA;AACA;;AAEA,SAAS,mBAAa;AACtB;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAa;AACtB;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB;AACA;AACA,6EAA6E,UAAK;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;AACA,qEAAqE,iBAAW;;AAEhF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf,yCAAyC,uBAAoB,GAAG,sBAAW;AAC3E;AACA;AACA,+BAA+B,iBAAW;AAC1C;AACA,wBAAwB,mBAAa,UAAU,UAAU;AACzD;AACA;AACA,wBAAwB,mBAAa;AACrC;AACA,CAAC;;;AC/ED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACvBkC;;AAEnC,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,QAAQ,iBAAY,CAAC,UAAU;AAC/B,QAAQ,iBAAY;AACpB,CAAC;;;ACnByC;AACD;;AAE1B;AACf;AACA;AACA,YAAY,KAAK;;AAEjB,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA,sBAAsB,YAAG;AACzB,QAAQ,mBAAQ;AAChB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;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O;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD,mBAAmB,UAAU,WAAW,WAAI;AAC5C;AACA;AACA;;AAEA;AACA,CAAC;;;ACpB0B;AAC8B;AACd;AACM;;;ACHlC;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA,CAAC;;;ACJkC;;AAE5B,SAAS,qBAAa;AAC7B,EAAE,QAAK;AACP;;AAEe;AACf,EAAE,QAAK;AACP,EAAE,QAAK;AACP,CAAC;;;ACToC;AACW;AACL;AAC2B;AAC9B;AACH;AACD;AACgB;;AAEpD,iBAAiB,aAAa;AAC9B,kBAAkB,cAAc;AAChC,mBAAmB,eAAe;AAClC,mBAAmB;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAK,SAAS,QAAK;AAC9B;AACA;;AAEA,IAAI,OAAC;AACL;AACA,0BAA0B,UAAI;AAC9B,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA,IAAI,OAAC;AACL;AACA,0BAA0B,UAAI;AAC9B,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA;AACA;AACA,4DAA4D,UAAI;AAChE,uBAAuB,wCAAwC,EAAE;AACjE,wBAAwB,WAAW;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,UAAI;AACb,UAAU;AACV;;AAEA;AACA,SAAS,mBAAa;AACtB,UAAU,QAAK,aAAa,QAAK;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,sBAAgB;AACzB;AACA;;AAEA;AACA,SAAS,WAAK;AACd;AACA;AACA;;AAEA,SAAS,WAAK;AACd;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP,SAAS,WAAK,CAAC,OAAC;AAChB;;AAEO;AACP,SAAS,WAAK,CAAC,OAAC;AAChB;;AAEe;AACf,SAAS,WAAK;AACd,CAAC;;AAED,SAAS,WAAK;AACd;AACA,eAAe,mBAAa;AAC5B,kBAAkB,sBAAgB;AAClC;AACA,kBAAkB,YAAQ;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,UAAI;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAK;AAC5B,UAAU,UAAM;AAChB;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,aAAa,UAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,eAAe,EAAE;;AAEvD;;AAEA;AACA,oCAAoC,mCAAmC,EAAE;AACzE,qCAAqC,wBAAwB,EAAE;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,gDAAgD,EAAE;AAC3F,uDAAuD,gCAAgC,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAW;;AAE/B;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,SAAS;AACrB;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,UAAM;AACtB,oBAAoB,WAAK;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,gHAAgH,EAAE;AACpJ,kCAAkC,gGAAgG,EAAE;AACpI,sCAAsC,uGAAuG,EAAE;AAC/I,uCAAuC,uGAAuG,EAAE;AAChJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,WAAW,KAAK,SAAU;AAChC;AACA;;AAEA;AACA,wBAAwB,QAAK;AAC7B;;AAEA;AACA,eAAe,QAAK;AACpB,wBAAwB,QAAK,2EAA2E,QAAK;AAC7G,wBAAwB,OAAC;AACzB,wBAAwB,OAAC;AACzB,gBAAgB,WAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAK;AAClD;AACA;AACA,kBAAkB,QAAK,mBAAmB,QAAK,iCAAiC,KAAK;AACrF;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,OAAC,+BAA+B,OAAC;AACvD,sBAAsB,OAAC,wBAAwB,OAAC;AAChD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAM;AACtB;;AAEA;AACA;;AAEA,QAAQ,QAAK;AACb;AACA;AACA,KAAK;AACL,iBAAiB,UAAM,CAAC,QAAK;AAC7B;AACA;AACA;AACA;AACA;;AAEA,MAAM,MAAW,CAAC,QAAK;AACvB;;AAEA,IAAI,qBAAa;AACjB,IAAI,SAAS;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAO;AACb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,qBAAa;AACnB,UAAU,QAAK;AACf,YAAY,QAAK;AACjB;AACA,6CAA6C,oBAAoB,EAAE,OAAO;AAC1E,OAAO;AACP,QAAQ,OAAU,CAAC,QAAK;AACxB;AACA;AACA;AACA;AACA,uDAAuD;AACvD,UAAU,WAAK;AACf;AACA;;AAEA;AACA,cAAc,QAAK;AACnB,kBAAkB;AAClB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA,wCAAwC;AACxC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAO;AACb;;AAEA;AACA,cAAc,QAAK;AACnB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,gBAAgB,QAAK;AACrB;AACA;AACA;AACA,aAAa;AACb,qCAAqC;AACrC,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAO;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;ACnkBoB;;;ACLb;AACA;AACA,IAAI,OAAE;AACN,IAAI,WAAM,GAAG,OAAE;AACf,IAAI,QAAG,GAAG,OAAE;AACZ,IAAI,QAAG;;;ACLiB;AACC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB,oBAAoB;AACpB;AACA;AACA;AACA,yBAAyB,SAAK;AAC9B;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,QAAQ,QAAG,IAAI,QAAG;AAClB,wBAAwB,QAAG;;AAE3B;AACA;AACA,kBAAkB;AAClB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,gBAAgB;AAChB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB,+BAA+B;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C,QAAG;AAC7C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACxHM,IAAI,eAAK;;;ACAD;AACf;AACA;AACA;AACA,CAAC;;;ACJD,IAAI,OAAE;AACN,IAAI,QAAG,OAAO,OAAE;AAChB,IAAI,YAAO;AACX,iBAAiB,QAAG,GAAG,YAAO;;AAE9B;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA,SAAS,SAAI;AACb;AACA;;AAEA,iBAAiB,SAAI;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,YAAO;;AAE9B;AACA;AACA;AACA,iDAAiD,YAAO;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAE;AAC9B;AACA;;AAEA;AACA,8BAA8B,YAAO;AACrC;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,YAAO,8BAA8B,YAAO;AACnF;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B,QAAG,GAAG,QAAG;;AAEnC;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,YAAO;AACzB,qDAAqD,OAAE;AACvD;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,sDAAI,EAAC;;;ACjImB;;;ACAT;AACI;AACM;AACX;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,eAAK;AACpB;AACA;AACA;AACA,6CAA6C,WAAM;AACnD,2CAA2C,WAAM;AACjD,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB;AACA,6CAA6C,WAAM;AACnD,2CAA2C,WAAM;;AAEjD,qCAAqC,QAAI;;AAEzC;AACA;AACA,qCAAqC;AACrC,0CAA0C,GAAG,YAAY,GAAG;AAC5D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,0EAA0E,qBAAQ;AAClF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACtFwC;AACE;;;ACDpC,IAAI,UAAM;;AAEjB;;AAEA,gBAAgB,OAAG;AACnB;AACA;AACA,YAAY,UAAM;AAClB,GAAG;AACH;AACA,gBAAgB,UAAM;AACtB,GAAG;AACH;AACA,SAAS,UAAM;AACf;AACA,GAAG;AACH;AACA,mBAAmB,UAAM;AACzB;AACA,GAAG;AACH;AACA,mDAAmD,UAAM;AACzD,GAAG;AACH;AACA;AACA,mDAAmD,UAAM;AACzD;AACA,GAAG;AACH;AACA;AACA,mDAAmD,UAAM;AACzD;AACA,GAAG;AACH;AACA;AACA,mDAAmD,UAAM,gBAAgB,8CAA8C;AACvH;AACA,GAAG;AACH;AACA;AACA,mDAAmD,UAAM;AACzD;AACA,GAAG;AACH;AACA,mDAAmD,UAAM;AACzD;AACA,GAAG;AACH;AACA,mDAAmD,UAAM;AACzD;AACA;;AAEA,SAAS,OAAG;AACZ;;AAEA;AACA,+DAA+D,qBAAqB,EAAE;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEe,mDAAG,EAAC;;;AC1EK;;AAET;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAG;AACzB;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,aAAa,kCAAkC,EAAE,EAAE;AACjG,wDAAwD,8BAA8B,EAAE;AACxF;;AAEA;AACA,6BAA6B,iDAAiD,EAAE;AAChF,0BAA0B,2CAA2C,EAAE;AACvE,8BAA8B,uDAAuD,EAAE;AACvF,sBAAsB,cAAc,aAAa,EAAE;AACnD,+BAA+B,mCAAmC,aAAa,EAAE;AACjF,iCAAiC,oBAAoB,aAAa,EAAE;AACpE,yBAAyB,YAAY,aAAa;AAClD;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,OAAG;AACZ;;AAEA;AACA;AACA;;;ACxE6C;;AAE7C;;AAEA,YAAY,OAAG;;AAEf,gBAAgB,OAAG;AACnB;AACA;AACA;AACA;AACA,SAAS,UAAM;AACf;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,OAAG;AACZ;;AAEA;AACA,0DAA0D,gBAAgB,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEe,mDAAG,EAAC;;;ACtCJ;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,qCAAqC,0BAA0B;AAC/D;AACA,CAAC;;;ACJsC;AACF;AACA;AACE;AACI;AACE;;;ACL7C,IAAI,eAAK;;AAEF,IAAI,0BAAK,GAAG,eAAK;;;ACFT;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AC1Be,0DAAa;;;ACAuC;AACrC;AACM;AACV;AACQ;AACA;AACR;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,kBAAkB,OAAgB;AAClC;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,UAAM;AACzB,WAAW,QAAQ;AACnB,WAAW,SAAK;AAChB,KAAK;AACL,2BAA2B,aAAS;AACpC;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,QAAI;AACd;AACA,KAAK;;AAEL;AACA,mDAAmD,OAAO;AAC1D,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,iEAAiE;AACjE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAA4F,uBAAQ,CAAC,0BAAK,YAAY,uBAAQ;AAC9H;;AAEA;AACA,2DAA2D,QAAI;AAC/D;;AAEA;AACA,CAAC;;;AC1MD;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1C8C;AAChB;AACM;AACF;AACA;;AAElC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAQ;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;;AAEpF;;AAEA;AACA;AACA,iBAAiB,OAAG;AACpB,WAAW,QAAQ;AACnB,WAAW,SAAK;AAChB;AACA;;AAEA,WAAW,YAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA,sEAAsE,uBAAQ;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAA4F,uBAAQ,CAAC,0BAAK,YAAY,uBAAQ;AAC9H;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACpI8C;AACK;;;ACDpD,YAAY;AACZ,YAAY;AACZ;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA,GAAG,gBAAgB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,cAAU;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,cAAU;AAClB;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACjKuB;;AAExB,UAAU,GAAG;;AAEN;AACA;AACA;AACA;AACA;;;ACRiB;;AAExB,UAAU,GAAG;;AAEN;AACA;AACA;AACA;AACA;;;ACRQ;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE;AACpG;AACA;AACA;AACA;AACA;;;ACb2C;AAC2C;AACA;AACvC;;;ACH/C;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPD;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPD;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPoD;AAC3B;;AAE1B;AACA;AACA;AACA,WAAW,QAAI;AACf;AACA,KAAK;AACL;AACA;;AAEe,SAAS,OAAG;AAC3B;AACA,eAAe,GAAS;AACxB,SAAS,QAAI;AACb;AACA,GAAG;AACH;;AAEO,IAAI,OAAG,YAAY,QAAQ;AAC3B,IAAI,OAAG,YAAY,QAAQ;;;ACrBnB;AACf;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA,GAAG;AACH,CAAC;;;ACRD;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPyB;;AAE1B;AACA;AACA,WAAW,QAAI;AACf;AACA,KAAK;AACL;AACA;;AAEe,iEAAyB,EAAC;;AAElC,IAAI,QAAI;;AAER;;;ACdgC;AACI;AACI;AACN;AACF;AACA;AACS;;;ACNjC;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA,iDAAiD,OAAO;AACxD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnCc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA,SAAS,OAAG;AACZ,CAAC;;AAED,SAAS,OAAG;AACZ,wCAAwC;;AAExC;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD,GAAG;AACH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,IAAI,OAAG;AACP;;AAEA;AACA;;;ACnFe;AACf,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC1Cc;AACf;AACA;AACA,8CAA8C;AAC9C,GAAG;AACH;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACNyB;;AAEX;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACrEc;AACf,0FAA0F;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP,kCAAkC,OAAO;AACzC;AACA;;;AC7De;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA,gCAAgC;AAChC,GAAG;AACH;AACA,CAAC;;;ACNyB;;AAEX;AACf;AACA,2BAA2B,QAAI;AAC/B;AACA;AACA;AACA,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C;AACA;AACA;AACA,CAAC;;;ACfyB;;AAEX;AACf;AACA,iCAAiC,QAAI;AACrC;AACA;AACA;AACA;AACA,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACpBM,SAAS,UAAQ;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;ACNM,SAAS,UAAQ;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;ACNqD;AACrB;AACF;AACI;AACJ;AACmC;AACnC;AACA;AACE;AACU;AACN;AACA;;AAEtB;AACf,sCAAsC,UAAQ,kBAAkB,UAAQ;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,gBAAgB;AAC9B,+CAA+C;AAC/C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,YAAY,gDAAgD;AAC5D;AACA,mBAAmB,OAAO;AAC1B;AACA,sCAAsC,qDAAqD;AAC3F;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,GAAQ;AACxB,mBAAmB,MAAW;AAC9B,kBAAkB,SAAU;AAC5B,iBAAiB,QAAS;AAC1B,mBAAmB,sBAAW;AAC9B,iBAAiB,IAAS;AAC1B,mBAAmB,UAAW;AAC9B,sBAAsB,SAAc;AACpC,iBAAiB,QAAS;AAC1B,iBAAiB,QAAS;AAC1B,kBAAkB,KAAU;AAC5B,uBAAuB,UAAe;AACtC,cAAc,KAAM;AACpB,cAAc,KAAM;;;ACxE2B;;;ACAb;AACJ;AACO;;AAErC,SAAS,SAAC;AACV;AACA;;AAEA,SAAS,SAAC;AACV;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA,6CAA6C,qBAAQ;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC,aAAa,QAAQ,QAAQ,SAAC,EAAE,SAAC;AACjC,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,MAAM;AACnC,6BAA6B,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,CAAC;;;ACjGiC;AACJ;AACI;;AAElC,SAAS,UAAK;AACd;AACA;;AAEA,SAAS,SAAI;AACb;AACA;AACA;AACA;;AAEe;AACf,WAAW,UAAK;AAChB;AACA;AACA,iBAAiB,qBAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,gBAAgB;AACrD,uDAAuD,OAAO;AAC9D;AACA,2DAA2D,MAAM;AACjE,2DAA2D,MAAM;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAG;AACtB;;AAEA,qCAAqC,OAAO;AAC5C;AACA,yDAAyD,SAAI;AAC7D,yDAAyD,SAAI;AAC7D;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,CAAC;;;ACnHoC;AACH;AACH;;AAExB,SAAS,YAAC;AACjB;AACA;;AAEO,SAAS,YAAC;AACjB;AACA;;AAEA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAG;AAClB,gBAAgB,KAAK;AACrB,cAAc,YAAQ;;AAEtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA,OAAO;;AAEP,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,CAAC;;;ACtJiC;AACJ;AACO;AACH;;AAEnB;AACf;AACA;AACA;AACA,iBAAiB,qBAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,QAAQ,QAAQ,YAAC,EAAE,YAAC;AACxD,0BAA0B,OAAO;AACjC;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA,yBAAyB,MAAM;AAC/B,yBAAyB,MAAM;AAC/B;AACA;AAC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A,gBAAgB,eAAe;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,WAAW;;AAEzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,UAAU;;AAEpC;AACA;;AAEA;AACA;AACA,mDAAmD,cAAc;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sEAAsE;AACtE,sEAAsE;AACtE,qIAAqI;AACrI,qEAAqE;AACrE;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC,eAAe;AAClD,gDAAgD,YAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;AC7ImC;;AAEpC,IAAI,oBAAM;AACH,IAAI,oBAAM;AACV,IAAI,0BAAY;;AAEvB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc;AACf,EAAE,oBAAM,GAAG,UAAY;AACvB,EAAE,oBAAM,GAAG,oBAAM;AACjB,EAAE,0BAAY,GAAG,oBAAM;AACvB,SAAS,oBAAM;AACf;;;AClBkC;;AAEnB;AACf,sBAAsB,YAAQ;AAC9B,CAAC;;;ACJiC;;AAEnB;AACf,yDAAyD,YAAQ,qBAAqB,YAAQ;AAC9F,CAAC;;;ACJiC;;AAEnB;AACf;AACA,qBAAqB,YAAQ,QAAQ,YAAQ;AAC7C,CAAC;;;ACLoF;AACpC;AACY;AACF;AACE;AACF;;;ACL3D;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf,GAAG;AACH;AACA,IAAI,SAAG;AACP,IAAI,SAAG;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,SAAG;AACZ;AACA;AACA;AACA;AACA;;;ACvCO,IAAI,YAAO;AACX,IAAI,aAAQ;AACZ,IAAI,WAAE;AACN,IAAI,eAAM,GAAG,WAAE;AACf,gBAAgB,WAAE;AAClB,IAAI,YAAG,GAAG,WAAE;;AAEZ,IAAI,YAAO,SAAS,WAAE;AACtB,cAAc,WAAE;;AAEhB;AACA;AACA;AACA,IAAI,QAAG;AACP;AACA;AACA;AACA;AACA;AACA,IAAI,QAAG;AACP,IAAI,SAAI,6BAA6B,mCAAmC;AACxE;AACA;;AAEA;AACP,8BAA8B,WAAE;AAChC;;AAEO;AACP,iBAAiB,eAAM,aAAa,eAAM;AAC1C;;AAEO;AACP,cAAc,QAAG;AACjB;;;AClCe,SAAS,SAAI;;;ACA5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;ACpE2B;AACoC;AACtC;AACI;;AAEvB,kBAAkB,KAAK;;AAE9B,cAAc,KAAK;AACnB,IAAI,aAAQ;AACZ;AACA,IAAI,YAAO;AACX,IAAI,YAAO;AACX,IAAI,YAAO;;AAEJ;AACP,SAAS,SAAI;AACb,aAAa,SAAI;AACjB,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,+BAA+B,YAAG;AAClC,iDAAiD,SAAI;AACrD,GAAG;AACH;AACA,gBAAgB,YAAG;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,aAAQ;AACpB;;AAEA;AACA;AACA,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AClD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA,SAAS,wBAAmB;AAC5B,oCAAoC,eAAM,GAAG,YAAO,GAAG,eAAM;AAC7D,oCAAoC,eAAM,GAAG,YAAO,GAAG,eAAM;AAC7D;;;AClI2B;AACsC;;AAElD,8DAAI;AACnB,cAAc,aAAa,EAAE;AAC7B;AACA;AACA,IAAI,WAAE,GAAG,eAAM;AACf,CAAC,EAAC;;AAEF;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gCAAgC,WAAE,IAAI,WAAE;AACxC,kBAAkB,GAAG;AACrB,UAAU,GAAG,SAAS,WAAE,IAAI,YAAO,GAAG;AACtC,6DAA6D,eAAM,IAAI,eAAM;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,sCAAsC,WAAE,GAAG;AAClD,YAAY,GAAG,oBAAoB,YAAO,qBAAqB,YAAO,CAAC;AACvE,YAAY,GAAG,oBAAoB,YAAO,qBAAqB,YAAO;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,QAAG;AAC7B,SAAS,GAAG,sBAAsB,YAAO;AACzC,QAAQ,IAAI,EAAE,QAAG,oBAAoB,QAAG,UAAU,QAAG;AACrD,YAAY,QAAG,oBAAoB,QAAG,UAAU,QAAG;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,eAAM;AAC5B,kBAAkB,WAAE;AACpB;AACA,iBAAiB,WAAE;AACnB,iBAAiB,WAAE;AACnB,iBAAiB,WAAE;AACnB;AACA,kBAAkB,WAAE;AACpB,kBAAkB,WAAE;AACpB,kBAAkB,WAAE;AACpB,GAAG,UAAU,GAAG,oBAAoB,YAAO;AAC3C,mCAAmC,WAAE,IAAI,WAAE;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AC3FqH;AAC9E;AACsB;AACtB;AACZ;;AAEZ;AACf,WAAW,QAAG;AACd,kBAAkB,OAAO;AACzB;AACA,sBAAsB,GAAG,OAAO,YAAO,CAAC;;AAExC;AACA,IAAI,YAAY;AAChB;;AAEA;AACA,WAAW,QAAG,WAAW,QAAG;AAC5B;;AAEA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,WAAE,IAAI,WAAE;AACxD;AACA;AACA;AACA;AACA;AACA,yBAAyB,UAAU,oBAAoB,UAAU;AACjE,yBAAyB,YAAO;AAChC,yBAAyB,YAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,mBAAS;AACtB,aAAa,mBAAS;;AAEtB;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,cAAc;AAC9B,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,IAAI,mBAAmB;;AAEvB;AACA;AACA,YAAY,YAAY;AACxB,aAAa,YAAY;AACzB,2BAA2B,YAAY;;AAEvC;;AAEA,YAAY,IAAI;AAChB,YAAY,cAAc;AAC1B,IAAI,mBAAmB;AACvB,QAAQ,mBAAS;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,GAAG,SAAS,WAAE,IAAI,YAAO;AACzC,oCAAoC,YAAO;;AAE3C;;AAEA;AACA;AACA;AACA,sCAAsC,GAAG,mBAAmB,YAAO;AACnE;AACA,kBAAkB,WAAE;AACpB,eAAe,cAAc;AAC7B,MAAM,mBAAmB;AACzB,iBAAiB,mBAAS;AAC1B;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,WAAE;AACrC;AACA,+BAA+B;AAC/B,mCAAmC;AACnC,4BAA4B;AAC5B,gCAAgC;AAChC;AACA;;AAEA,SAAS,QAAI,gEAAgE,WAAE,WAAW,WAAE;AAC5F,CAAC;;;ACrLc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;AC1DoC;AACH;AACJ;AACI;AACH;;AAE/B;;AAEA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,WAAW,GAAG,cAAc,YAAO;AACnC,UAAU,GAAG,cAAc,YAAO;AAClC,UAAU,GAAG,cAAc,YAAO;AAClC,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,WAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,OAAO;AAChD,kHAAkH,OAAO;AACzH;AACA,yBAAyB,yEAAyE;AAClG,gBAAgB,0EAA0E;AAC1F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,SAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,MAAU;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,cAAc,SAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;ACvKwC;;AAEzB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,aAAa;AAC5E,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;;;ACnB2B;AAC+B;AACjC;AACI;;AAE9B,gBAAgB,KAAK;AACrB,IAAI,cAAO;AACX,IAAI,cAAO;AACX,IAAI,cAAO;;AAEX;AACA,UAAU,SAAI;AACd,SAAS,SAAI;AACb;AACA,WAAW,SAAI;AACf,gBAAgB,SAAI;AACpB,cAAc,SAAI;AAClB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,SAAI;AAClD;;AAEA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,EAAE,cAAO,WAAW,cAAO,GAAG,QAAG,OAAO,cAAO,GAAG,QAAG;AACrD;AACA;;AAEA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,eAAe,QAAG;AAClB,eAAe,QAAG;AAClB,cAAc,GAAG,UAAU,cAAO;AAClC,iBAAiB,QAAG;AACpB,iBAAiB,QAAG;AACpB;AACA,UAAU,cAAO,YAAY,cAAO;AACpC,UAAU,cAAO,YAAY,cAAO;AACpC,gBAAgB,KAAK,CAAC,IAAI;AAC1B,EAAE,cAAO,WAAW,cAAO,WAAW,cAAO;AAC7C;;AAEe;AACf;AACA,EAAE,UAAM;AACR;AACA,CAAC;;;ACpD6B;;AAE9B,IAAI,oBAAW;AACf,IAAI,eAAM,IAAI,iCAAiC,oBAAW;;AAE3C;AACf,EAAE,oBAAW;AACb,EAAE,oBAAW;AACb,SAAS,UAAM,CAAC,eAAM;AACtB,CAAC;;;ACT4D;AACd;AACN;;AAEzC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,YAAQ;AACjB;;AAEA;AACA;AACA,yCAAyC,OAAO;AAChD,SAAS,YAAQ;AACjB;AACA;AACA,WAAW,YAAQ;AACnB;AACA;AACA;AACA;AACA,6DAA6D,aAAQ;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,OAAO,aAAa,OAAO;AAChD;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;AChG8B;AACW;;AAE1C;AACA,UAAU,SAAK,UAAU,YAAO;AAChC,sBAAsB,2BAA2B,eAAe,EAAE,EAAE;AACpE;;AAEA;AACA,UAAU,SAAK,UAAU,YAAO;AAChC,sBAAsB,2BAA2B,eAAe,EAAE,EAAE;AACpE;;AAEe,SAAS,mBAAS;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA,WAAW,SAAK,CAAC,IAAI;AACrB,gBAAgB,SAAK,CAAC,IAAI;AAC1B,gBAAgB,SAAK,CAAC,IAAI,4CAA4C,QAAQ,GAAG,WAAW,YAAO,CAAC,EAAE;AACtG,gBAAgB,SAAK,CAAC,IAAI,4CAA4C,QAAQ,GAAG,WAAW,YAAO,CAAC,EAAE;AACtG;;AAEA;AACA,8CAA8C,SAAS,8CAA8C,EAAE;AACvG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,YAAO,cAAc,YAAO;AAC7D,iCAAiC,YAAO,cAAc,YAAO;AAC7D;;AAEO;AACP,SAAS,mBAAS;AAClB;;;ACxG+E;;AAEhE;AACf,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,YAAY,QAAG;AACf,YAAY,QAAG;AACf,YAAY,QAAG;AACf,YAAY,QAAG;AACf,kBAAkB,QAAG;AACrB,kBAAkB,QAAG;AACrB,kBAAkB,QAAG;AACrB,kBAAkB,QAAG;AACrB,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,wBAAwB,QAAQ;AAChE,UAAU,QAAG;;AAEb;AACA,YAAY,QAAG;AACf,YAAY,QAAG;AACf;AACA;AACA;AACA;AACA,MAAM,KAAK,SAAS,YAAO;AAC3B,MAAM,KAAK,IAAI,IAAI,mBAAmB,YAAO;AAC7C;AACA,GAAG;AACH,iBAAiB,YAAO,OAAO,YAAO;AACtC;;AAEA;;AAEA;AACA,CAAC;;;ACnCc;AACf;AACA,CAAC;;;ACF4B;AACD;AACD;;AAE3B,IAAI,YAAO,GAAG,KAAK;AACnB,IAAI,gBAAW,GAAG,KAAK;AACvB,IAAI,QAAG;AACP,IAAI,QAAG;AACP,IAAI,OAAE;AACN,IAAI,OAAE;;AAEN,IAAI,eAAU;AACd,SAAS,SAAI;AACb,aAAa,SAAI;AACjB,WAAW,SAAI;AACf;AACA,IAAI,eAAU,aAAa,kBAAa;AACxC,IAAI,eAAU,WAAW,gBAAW;AACpC,GAAG;AACH;AACA,IAAI,eAAU,aAAa,eAAU,WAAW,eAAU,SAAS,SAAI;AACvE,IAAI,YAAO,KAAK,GAAG,CAAC,gBAAW;AAC/B,IAAI,gBAAW;AACf,GAAG;AACH;AACA,eAAe,YAAO;AACtB,IAAI,YAAO;AACX;AACA;AACA;;AAEA,SAAS,kBAAa;AACtB,EAAE,eAAU,SAAS,mBAAc;AACnC;;AAEA,SAAS,mBAAc;AACvB,EAAE,eAAU,SAAS,cAAS;AAC9B,EAAE,QAAG,GAAG,OAAE,MAAM,QAAG,GAAG,OAAE;AACxB;;AAEA,SAAS,cAAS;AAClB,EAAE,gBAAW,KAAK,OAAE,OAAO,OAAE;AAC7B,EAAE,OAAE,MAAM,OAAE;AACZ;;AAEA,SAAS,gBAAW;AACpB,EAAE,cAAS,CAAC,QAAG,EAAE,QAAG;AACpB;;AAEe,6DAAU,EAAC;;;ACjDC;;AAE3B,IAAI,SAAE;AACN,IAAI,SAAE,GAAG,SAAE;AACX,IAAI,SAAE,IAAI,SAAE;AACZ,IAAI,SAAE,GAAG,SAAE;;AAEX,IAAI,mBAAY;AAChB,SAAS,kBAAW;AACpB,aAAa,SAAI;AACjB,WAAW,SAAI;AACf,gBAAgB,SAAI;AACpB,cAAc,SAAI;AAClB;AACA,mBAAmB,SAAE,EAAE,SAAE,IAAI,SAAE,EAAE,SAAE;AACnC,IAAI,SAAE,GAAG,SAAE,KAAK,SAAE,GAAG,SAAE;AACvB;AACA;AACA;;AAEA,SAAS,kBAAW;AACpB,UAAU,SAAE,EAAE,SAAE;AAChB,UAAU,SAAE,EAAE,SAAE;AAChB,UAAU,SAAE,EAAE,SAAE;AAChB,UAAU,SAAE,EAAE,SAAE;AAChB;;AAEe,mEAAY,EAAC;;;AC3BC;;AAE7B;;AAEA,IAAI,gBAAE;AACN,IAAI,gBAAE;AACN,IAAI,WAAE;AACN,IAAI,gBAAE;AACN,IAAI,gBAAE;AACN,IAAI,WAAE;AACN,IAAI,WAAE;AACN,IAAI,WAAE;AACN,IAAI,WAAE;AACN,IAAI,YAAG;AACP,IAAI,YAAG;AACP,IAAI,gBAAE;AACN,IAAI,gBAAE;;AAEN,IAAI,uBAAc;AAClB,SAAS,sBAAa;AACtB,aAAa,0BAAiB;AAC9B,WAAW,wBAAe;AAC1B;AACA,IAAI,uBAAc,aAAa,0BAAiB;AAChD,IAAI,uBAAc,WAAW,wBAAe;AAC5C,GAAG;AACH;AACA,IAAI,uBAAc,SAAS,sBAAa;AACxC,IAAI,uBAAc,aAAa,0BAAiB;AAChD,IAAI,uBAAc,WAAW,wBAAe;AAC5C,GAAG;AACH;AACA,mBAAmB,WAAE,IAAI,WAAE,GAAG,WAAE,EAAE,WAAE,GAAG,WAAE;AACzC,UAAU,WAAE,IAAI,gBAAE,GAAG,WAAE,EAAE,gBAAE,GAAG,WAAE;AAChC,UAAU,WAAE,IAAI,gBAAE,GAAG,WAAE,EAAE,gBAAE,GAAG,WAAE;AAChC;AACA,IAAI,gBAAE,GAAG,gBAAE,GAAG,WAAE;AAChB,IAAI,gBAAE,GAAG,gBAAE,GAAG,WAAE;AAChB,IAAI,WAAE,GAAG,WAAE,GAAG,WAAE;AAChB;AACA;AACA;;AAEA,SAAS,sBAAa;AACtB,EAAE,gBAAE;AACJ,EAAE,gBAAE;AACJ,IAAI,WAAE;AACN;;AAEA,SAAS,0BAAiB;AAC1B,EAAE,uBAAc;AAChB;;AAEA;AACA,EAAE,uBAAc;AAChB,EAAE,sBAAa,CAAC,gBAAE,MAAM,gBAAE;AAC1B;;AAEA;AACA,eAAe,gBAAE,WAAW,gBAAE,MAAM,IAAI;AACxC,EAAE,gBAAE,SAAS,gBAAE;AACf,EAAE,gBAAE,SAAS,gBAAE;AACf,EAAE,WAAE;AACJ,EAAE,sBAAa,CAAC,gBAAE,MAAM,gBAAE;AAC1B;;AAEA,SAAS,wBAAe;AACxB,EAAE,uBAAc,SAAS,sBAAa;AACtC;;AAEA,SAAS,0BAAiB;AAC1B,EAAE,uBAAc;AAChB;;AAEA,SAAS,wBAAe;AACxB,oBAAoB,YAAG,EAAE,YAAG;AAC5B;;AAEA;AACA,EAAE,uBAAc;AAChB,EAAE,sBAAa,CAAC,YAAG,GAAG,gBAAE,MAAM,YAAG,GAAG,gBAAE;AACtC;;AAEA;AACA,eAAe,gBAAE;AACjB,eAAe,gBAAE;AACjB,UAAU,IAAI;;AAEd,EAAE,gBAAE,SAAS,gBAAE;AACf,EAAE,gBAAE,SAAS,gBAAE;AACf,EAAE,WAAE;;AAEJ,MAAM,gBAAE,OAAO,gBAAE;AACjB,EAAE,WAAE,SAAS,gBAAE;AACf,EAAE,WAAE,SAAS,gBAAE;AACf,EAAE,WAAE;AACJ,EAAE,sBAAa,CAAC,gBAAE,MAAM,gBAAE;AAC1B;;AAEe,yEAAc,EAAC;;;ACnGF;AACD;;AAEZ;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,YAAG;AACpD;AACA;AACA;AACA,GAAG;AACH,UAAU,SAAI;AACd;;;AC5C6B;AACA;AACF;;AAE3B,IAAI,iBAAS,GAAG,KAAK;AACrB;AACA,IAAI,WAAG;AACP,IAAI,WAAG;AACP,IAAI,UAAE;AACN,IAAI,UAAE;;AAEN,IAAI,oBAAY;AAChB,SAAS,SAAI;AACb;AACA,IAAI,oBAAY,SAAS,wBAAgB;AACzC,GAAG;AACH;AACA,oBAAoB,mBAAW,CAAC,WAAG,EAAE,WAAG;AACxC,IAAI,oBAAY,SAAS,SAAI;AAC7B,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,kBAAkB,iBAAS;AAC3B,IAAI,iBAAS;AACb;AACA;AACA;;AAEA,SAAS,wBAAgB;AACzB,EAAE,oBAAY,SAAS,mBAAW;AAClC,EAAE,WAAG,GAAG,UAAE,MAAM,WAAG,GAAG,UAAE;AACxB;;AAEA,SAAS,mBAAW;AACpB,EAAE,UAAE,OAAO,UAAE;AACb,EAAE,iBAAS,KAAK,IAAI,CAAC,UAAE,GAAG,UAAE,GAAG,UAAE,GAAG,UAAE;AACtC,EAAE,UAAE,MAAM,UAAE;AACZ;;AAEe,gEAAY,EAAC;;;AC5Cb;AACf;AACA;;AAEA;AACA;AACA,WAAW,aAAM;AACjB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,aAAM;AACvD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,SAAS,aAAM;AACf;AACA;AACA;AACA;AACA;;;AC1DmC;AACJ;AACD;AACI;AACI;AACF;AACA;AACF;;AAEnB;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,UAAM;AACZ;AACA;AACA;;AAEA;AACA,IAAI,UAAM,0BAA0B,SAAQ;AAC5C,WAAW,SAAQ;AACnB;;AAEA;AACA,IAAI,UAAM,0BAA0B,OAAW;AAC/C,WAAW,OAAW;AACtB;;AAEA;AACA,IAAI,UAAM,0BAA0B,WAAU;AAC9C,WAAW,WAAU;AACrB;;AAEA;AACA,IAAI,UAAM,0BAA0B,aAAY;AAChD,WAAW,aAAY;AACvB;;AAEA;AACA,kFAAkF,mBAAQ;AAC1F;;AAEA;AACA;AACA,qDAAqD,UAAU,QAAQ,WAAW;AAClF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AC5Dc;AACf;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAyB,yBAAyB,EAAE;AACpD,sBAAsB,sBAAsB,EAAE;AAC9C,yBAAyB,yBAAyB,EAAE;AACpD,uBAAuB,uBAAuB,EAAE;AAChD,4BAA4B,4BAA4B,EAAE;AAC1D,0BAA0B,0BAA0B;AACpD;;;ACzB+C;AACL;;AAE1C;AACA;AACA;AACA;AACA,EAAE,UAAS,2BAA2B,WAAY;AAClD,YAAY,WAAY;AACxB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AC9CuC;AAC+B;AAC7B;;AAEzC;AACA,qBAAqB,QAAG,MAAM,OAAO,EAAE;;AAExB;AACf,mBAAmB,iBAAQ;AAC3B,CAAC;;AAED;AACA,SAAS,WAAW;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,SAAS,iBAAQ;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,IAAI;AAClB,iBAAiB,IAAI;AACrB,oBAAoB,GAAG,CAAC,GAAG,WAAW,YAAO,IAAI,GAAG,sBAAsB,YAAO,6BAA6B,KAAK;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG;AAChB,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,sCAAsC,EAAE;AAC/F,8BAA8B,qBAAqB,sCAAsC;AACzF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,mBAAS;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;ACrGoD;AACZ;AACM;AACb;AACE;AACsB;AACf;AACD;AACqB;AAC5B;;AAElC,uBAAuB,WAAW;AAClC;AACA,0BAA0B,OAAO,MAAM,OAAO;AAC9C;AACA,CAAC;;AAED;AACA,SAAS,WAAW;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,QAAG;AACpB,iBAAiB,QAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,SAAS,qBAAU;AAClC,uCAAuC,gBAAgB,EAAE;AACzD;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,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EA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnFD,SAAS,WAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,wBAAwB,WAAK;AAC7B,CAAC;;;ACXc;AACf;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACZc;AACf;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,CAAC;;;ACTc;AACf;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACZc;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;ACRc;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;ACNc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7Be;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACRc;AACf;AACA;AACA,wBAAwB;AACxB,kBAAkB,kCAAkC;AACpD;AACA,GAAG;AACH;AACA,CAAC;;;ACRgC;AACF;AACY;AACF;AACZ;AACE;AACA;AACU;AACI;AACV;AACF;;AAElB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,eAAU;AACnB,QAAQ,cAAS;AACjB,aAAa,SAAc;AAC3B,cAAc,UAAe;AAC7B,OAAO,aAAQ;AACf,QAAQ,cAAS;AACjB,QAAQ,cAAS;AACjB,aAAa,SAAc;AAC3B,eAAe,WAAgB;AAC/B,UAAU,MAAW;AACrB,SAAS,eAAU;AACnB;AACA;;;AC9EO,IAAI,4BAAK;;AAET,SAAS,aAAO;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;ACfwC;;AAEzB;AACf,4BAA4B,aAAO,CAAC,4BAAK;;AAEzC;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,kBAAkB;AAC/B,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrHgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,aAAI;AACb;AACA;AACA;AACA;;AAEO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,aAAI,aAAa,aAAI,aAAa,aAAI;AAChD;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B,6CAA6C,aAAI;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,wCAAwC,KAAK,OAAO;;AAEvE;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEe;AACf;AACA;AACA,CAAC;;;ACrHM;AACP;AACA;;AAEO;AACP;AACA;AACA;;;ACPO;AACP;AACA;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;ACRsC;AACD;AACa;;AAEnD,SAAS,kBAAa;AACtB;AACA;;AAEe;AACf;AACA;AACA;AACA,gBAAgB,YAAY;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iCAAiC,kBAAa;AAC9C,kCAAkC,YAAY;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,QAAQ;AAChD;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,yBAAQ;AAC/E;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,OAAO;AAC/B,UAAU,WAAW;AACrB,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9Ee;AACf;AACA;AACA;AACA;AACA,CAAC;;;ACLc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACXuC;AACC;;AAE1B;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnDoC;AACiB;;AAEtD,IAAI,kBAAS;AACb,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,yCAAyC,IAAI;AAC7C;AACA,kBAAkB,kBAAS;AAC3B;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,OAAO;AACP,2BAA2B,kBAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,oCAAoC,KAAK,EAAE,aAAa,aAAa;AACzG;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;;AAEA;AACA,0CAA0C,QAAQ;AAClD;;AAEA;AACA,CAAC;;;ACxEsC;;AAEvC,SAAS,sBAAiB;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,gBAAgB;AAChB,aAAa;AACb;;AAEA,mCAAmC,IAAI;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACe;AACf,mBAAmB,sBAAiB;AACpC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AC5Oc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACXgC;AACE;;AAE5B,IAAI,YAAG;;AAEP;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA,UAAU,QAAQ;AAClB;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,OAAO;AAC9D;AACA;;AAEA;AACA,qBAAqB,8DAA8D;AACnF,kBAAkB,IAAW;AAC7B,SAAS,aAAY;AACrB;AACA;;AAEA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,EAAE,YAAG,CAAC,EAAC;;;ACjEwB;AACE;AACI;AACa;;AAEpC;AACf,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC,mBAAmB,YAAY;AAC/B,qBAAqB,YAAY;AACjC,sBAAsB,YAAY;AAClC,oBAAoB,YAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA,4EAA4E,yBAAQ;AACpF;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,yBAAQ;AAClF;;AAEA;AACA,4EAA4E,yBAAQ;AACpF;;AAEA;AACA,6EAA6E,yBAAQ;AACrF;;AAEA;AACA,2EAA2E,yBAAQ;AACnF;;AAEA;AACA,CAAC;;;AC7Fc;AACf;AACA;AACA;;AAEA,6BAA6B,OAAO;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC7CyB;AACE;;AAEb;AACf,sBAAsB,aAAK,GAAG,IAAI;AAClC,CAAC;;;ACLgC;AACE;AACW;;AAE/B;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,OAAO;AACxD,sBAAsB,IAAW;AACjC,aAAa,aAAY;AACzB;AACA;AACA,KAAK;AACL,gCAAgC,aAAa;AAC7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,EAAE,YAAG,CAAC,EAAC;;;ACnCqC;AACU;AACV;AACW;AACF;AACL;AACF;AACR;AACY;AACO;AACJ;AACE;AACQ;AACF;AACI;;;ACdnD;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACdc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnBD;AACA;AACA;AACA;AACe;AACf;AACA,CAAC;;;ACN2B;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB,uBAAuB,SAAK;AAC5B;AACA;;AAEA,gCAAgC;AAChC;;AAEe;AACf;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,QAAQ;AAC3C,qBAAqB,qCAAqC;;AAE1D;AACA,CAAC;;;AChDc;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACfc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACtB6C;AACQ;AACR;AACQ;AACJ;;;ACJnC;AACf;AACA,CAAC;;;ACF2C;;AAE7B;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;AChB0B;;AAE7B;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;AC3B0B;AACd;;AAEf;AACf;AACA,uBAAuB,UAAM;AAC7B;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACd0B;;AAE7B;AACf;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACb0B;AACR;;AAErB;AACf;AACA,0BAA0B,SAAS;AACnC;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACd0B;;AAE7B;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACZiC;AACF;AACM;AACR;AACQ;AACI;;;ACLpD;AACP;AACA;AACA,+BAA+B;AAC/B,8CAA8C;AAC9C;AACA;AACA;;AAEO;AACP;AACA;AACA,sCAAsC;AACtC,4DAA4D;AAC5D;AACA;AACA;;;AChBA,IAAI,wBAAK;;AAEF,IAAI,SAAG,GAAG,wBAAK;AACf,IAAI,wBAAK,GAAG,wBAAK;;;ACHU;AACJ;AACG;;AAE1B,gBAAgB;;AAER;AACf,cAAc,OAAG;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,OAAG;AAC5B;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,wBAAK;AAC5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,SAAS;;AAEX;AACA;;;AC5C2C;AACV;AACD;;AAEjB;AACf,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAQ,qBAAqB,yBAAyB,EAAE;AACzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO,SAAS,UAAK;AACrB;AACA;;;ACnGe;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACF+B;AACoE;AACjE;AACD;AACJ;;AAE9B;;AAEO,SAAS,mBAAQ;AACxB;AACA;;AAEA;AACA;AACA,qBAAqB,oBAAoB;AACzC,QAAQ,qBAAQ;AAChB;;AAEA;AACA;AACA;AACA,sBAAsB,oCAAoC;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,MAAM;AAClB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAAS,sBAAW;AAC3B;AACA;AACA,oBAAoB,SAAgB;AACpC;AACA;AACA;AACA,cAAc,mBAAQ;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wFAAwF,UAAiB;AACzG;;AAEA;AACA,wCAAwC,SAAG,SAAS,mBAAM,aAAa,mBAAQ;AAC/E;;AAEA;AACA,uCAAuC,wBAAK;AAC5C;;AAEA;AACA,mBAAmB,wBAAK,wBAAwB,SAAgB;AAChE;;AAEA;AACA,6DAA6D,mBAAQ,qBAAqB,mBAAQ;AAClG;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf,SAAS,sBAAW;AACpB;;;AC3HkC;AAC+E;;AAElG;AACf,aAAa,QAAQ;AACrB;AACA,cAAc,eAAe;AAC7B;AACA;AACA;AACA,4DAA4D,eAAe;AAC3E,aAAa,0BAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA,SAAS,oBAAM;AACf,CAAC;;;AC5B6C;AACU;AACvB;AACK;;AAE/B;AACP;;AAEA;AACA;AACA,WAAW,KAAK;AAChB;;AAEA;AACA;AACA,WAAW,cAAU;AACrB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,aAAa;;AAExB;AACA;AACA;AACA,aAAa,aAAa;AAC1B,KAAK;AACL;AACA;AACA,aAAa,aAAa;AAC1B;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEe,SAAS,iBAAM;AAC9B,cAAc,UAAU,CAAC,mBAAQ,EAAE,mBAAQ;;AAE3C;AACA,WAAW,IAAI,QAAQ,iBAAM;AAC7B;;AAEA,EAAE,SAAS;;AAEX;AACA;;;ACvE4B;AACO;AACL;;AAEf,SAAS,iBAAQ;AAChC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,wCAAwC,SAAG,SAAS,mBAAM;AAC1D;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,iBAAQ;AACnB;;AAEA,8BAA8B,SAAG,cAAc,mBAAM;;AAErD,SAAS,SAAS;AAClB;;;AC5Be;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;ACjB8B;AACE;AACP;AACqB;AACd;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,2BAA2B,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA,OAAO,YAAY,OAAO;AAC1B,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,KAAK;AACf;;AAEA;AACA;;AAEA;AACA;AACA,qDAAqD,oBAAM;AAC3D;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,IAAI;AACtB,0BAA0B,kCAAkC,EAAE;AAC9D,yBAAyB,iCAAiC;AAC1D,KAAK;AACL;;AAEA;AACA;;AAEe,SAAS,OAAG;AAC3B,sBAAsB,sBAAW;;AAEjC;AACA,WAAW,IAAI,QAAQ,OAAG;AAC1B;;AAEA,EAAE,SAAS;;AAEX;AACA;;;AChJmC;AACY;AACd;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEe;AACf,wBAAwB,sBAAW;;AAEnC;AACA,WAAW,IAAI;AACf;;AAEA,SAAS,SAAS;AAClB;;;AClCmC;AACsB;AACxB;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP,wBAAwB,mBAAQ,EAAE,mBAAQ;AAC1C;;AAEA;AACA,sCAAsC,mBAAQ,EAAE,mBAAQ;AACxD;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEe,SAAS,OAAG;AAC3B,qBAAqB,sBAAW;;AAEhC;AACA,WAAW,IAAI,QAAQ,OAAG;AAC1B;;AAEA,EAAE,SAAS;;AAEX;AACA;;AAEO,SAAS,QAAI;AACpB,SAAS,OAAG;AACZ;;;ACjDkE;AACpC;AACG;;AAElB,SAAS,iBAAQ;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,QAAS;AACjD;AACA;;AAEA;AACA,2CAA2C,MAAM;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA,uCAAuC,wBAAK;AAC5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,iBAAQ;AACnB;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;;ACzDgC;AACF;AACK;AACF;;AAElB,SAAS,iBAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,MAAM;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,wBAAK;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,iBAAQ;AACnB;AACA;AACA;AACA;;AAEA,SAAS,SAAS,OAAO,SAAS;AAClC;;;ACxDgC;AACF;AACG;;AAElB,SAAS,mBAAS;AACjC;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,MAAM;AAChC;;AAEA;AACA,wCAAwC,wBAAK;AAC7C;;AAEA;AACA,uCAAuC,wBAAK;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,mBAAS;AACpB;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;;ACvCA,IAAI,WAAE;AACN,IAAI,WAAE;;AAES;;AAEf;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mDAAmD;AACnD,SAAS;AACT,mDAAmD;AACnD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,MAAM,WAAE,kBAAkB,WAAE;AAC5B,aAAa,WAAE,UAAU,WAAE;AAC3B,8BAA8B,WAAE,EAAE,WAAE;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8BAA8B;AAC3D,6BAA6B,0CAA0C,EAAE;AACzE;AACA;;AAEA;AACA;;;ACnEkC;;AAElC,IAAI,uBAAW,GAAG,WAAQ;AAC1B;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA,uBAAW;AACX;AACA;AACA,uBAAuB,uBAAW;AAClC,SAAS,WAAQ;AACjB;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEe,2EAAW,EAAC;AACpB,mBAAmB,uBAAW;;;ACzB9B;AACA;AACA;AACA;AACA;;;ACJ2B;AACQ;;AAE1C,IAAI,aAAM,GAAG,WAAQ;AACrB;AACA,CAAC;AACD,8BAA8B,cAAc;AAC5C,CAAC;AACD,yBAAyB,cAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAEc,4DAAM,EAAC;AACf,cAAc,aAAM;;;ACdO;AACwB;;AAE1D,IAAI,aAAM,GAAG,WAAQ;AACrB,mEAAmE,cAAc;AACjF,CAAC;AACD,8BAA8B,cAAc;AAC5C,CAAC;AACD,yBAAyB,cAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAEc,4DAAM,EAAC;AACf,cAAc,aAAM;;;ACdO;AACsC;;AAExE,IAAI,SAAI,GAAG,WAAQ;AACnB,mEAAmE,cAAc,uBAAuB,cAAc;AACtH,CAAC;AACD,8BAA8B,YAAY;AAC1C,CAAC;AACD,yBAAyB,YAAY;AACrC,CAAC;AACD;AACA,CAAC;;AAEc,sDAAI,EAAC;AACb,YAAY,SAAI;;;ACdW;AACqB;;AAEvD,IAAI,OAAG,GAAG,WAAQ;AAClB;AACA,CAAC;AACD;AACA,CAAC;AACD,gFAAgF,cAAc,IAAI,WAAW;AAC7G,CAAC;AACD;AACA,CAAC;;AAEc,mDAAG,EAAC;AACZ,WAAW,OAAG;;;ACda;AACsB;;AAExD;AACA,SAAS,WAAQ;AACjB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,kFAAkF,cAAc,IAAI,YAAY;AAChH,GAAG;AACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5B2B;;AAElC,IAAI,WAAK,GAAG,WAAQ;AACpB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAEc,yDAAK,EAAC;AACd,aAAa,WAAK;;;ACdS;;AAElC,IAAI,SAAI,GAAG,WAAQ;AACnB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA,SAAI;AACJ,2DAA2D,WAAQ;AACnE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEe,sDAAI,EAAC;AACb,YAAY,SAAI;;;ACzBW;AACQ;;AAE1C,gBAAgB,WAAQ;AACxB;AACA,CAAC;AACD,8BAA8B,cAAc;AAC5C,CAAC;AACD,yBAAyB,cAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAEc,2DAAS,EAAC;AAClB;;;ACd2B;AACM;;AAExC,cAAc,WAAQ;AACtB;AACA,CAAC;AACD,8BAA8B,YAAY;AAC1C,CAAC;AACD,yBAAyB,YAAY;AACrC,CAAC;AACD;AACA,CAAC;;AAEc,uDAAO,EAAC;AAChB;;;ACd2B;AACK;;AAEvC,aAAa,WAAQ;AACrB;AACA,CAAC;AACD;AACA,CAAC;AACD,yBAAyB,WAAW;AACpC,CAAC;AACD;AACA,CAAC;;AAEc,qDAAM,EAAC;AACf;;;ACd2B;AACM;;AAExC;AACA,SAAS,WAAQ;AACjB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,2BAA2B,YAAY;AACvC,GAAG;AACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5B2B;;AAElC,eAAe,WAAQ;AACvB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAEc,yDAAQ,EAAC;AACjB;;;ACd2B;;AAElC,cAAc,WAAQ;AACtB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA,2DAA2D,WAAQ;AACnE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEe,uDAAO,EAAC;AAChB;;;ACvBa;;AAOG;;AAOL;;AAKA;;AAKF;;AAKD;;AAmBC;;AAKC;;AAKD;;AAKK;;AAKF;;AAKD;;AAmBC;;AAKC;;AAKD;;;AC7FF;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAU;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS,cAAc,SAAS;AACxE,iBAAiB,UAAM;AACvB;AACA;AACA;AACA,SAAS;AACT;AACA,wCAAwC,MAAU,cAAc,MAAU;AAC1E,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;;AAEA,YAAY,4BAA4B;AACxC;AACA;AACA,kCAAkC;;AAElC,SAAS,UAAG;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS,UAAG;AACZ;;AAEA;AACA,SAAS,UAAG;AACZ;;AAEA;AACA,SAAS,UAAG;AACZ;;AAEA;AACA,SAAS,UAAG,KAAK,OAAO,OAAO,QAAQ;AACvC;;AAEA;AACA,SAAS,UAAG;AACZ;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,UAAG;AACZ;;AAEA;AACA,S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AAqgD,EAAC;;AAEzhD,YAAY,YAAI,CAAC,UAAM;;AAEvB,cAAc,YAAI,CAAC,UAAM;;AAEzB,aAAa,YAAI,CAAC,UAAM;;;ACfyC;AACR;AACF;AACE;AACE;AACA;AACN;AACA;AACA;AACU;AACe;AACA;AACA;AACA;AACA;AACA;AACM;AACA;AACM;AACL;AACA;AACA;AACA;AACM;AACN;AACA;AACA;AACM;AACN;AACM;AACA;AACF;AACG;AACH;AACM;AACT;AACS;AAC1B;AACW;AACuC;AAClD;AACJ;AAC2F;;;AC1CpJ;AACf;AACA;AACA;AACA,CAAC;;;ACJM,IAAI,QAAG;AACP,IAAI,UAAK;AACT,IAAI,YAAG;AACP,IAAI,YAAG;AACP,IAAI,QAAG;AACP,IAAI,YAAG;AACP,IAAI,SAAI;;AAER,IAAI,gBAAO;AACX,IAAI,oBAAE;AACN,IAAI,wBAAM,GAAG,oBAAE;AACf,IAAI,qBAAG,OAAO,oBAAE;;AAEhB,SAAS,SAAI;AACpB,8BAA8B,oBAAE;AAChC;;AAEO,SAAS,SAAI;AACpB,kBAAkB,wBAAM,cAAc,wBAAM;AAC5C;;;ACnB6B;AACK;AACgE;;AAElG;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;;AAEA,SAAS,aAAS;AAClB;AACA;AACA;AACA,cAAc,gBAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAI,CAAC,YAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,qBAAqB,qBAAQ;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,wBAAM;AACvD,+CAA+C,wBAAM;AACrD,aAAa,QAAG;AAChB;;AAEA,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AEA;AACA;AACA,qCAAqC,QAAI;AACzC;AACA;AACA;;AAEA;AACA,oEAAoE,qBAAQ;AAC5E;;AAEA;AACA,oEAAoE,qBAAQ;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AC7Cc,mEAAa;;;ACArB,SAAS,WAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc,WAAK,2BAA2B;AAC9C,uDAAuD;AACvD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,oFAAoF;AAClH,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;AClD0B;AACG;;AAE9B;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B,4FAA4F;AACtJ,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACnD6B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,oFAAoF,0EAA0E;AAC5L,8BAA8B;AAC9B,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACtC6B;;AAE9B;AACA,oBAAoB,KAAK;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4BAA4B,KAAK;AACjC;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,OAAO,EAAC;;;ACvDF,SAAS,cAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,cAAc,cAAK,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B,4BAA4B;AAC1D,8BAA8B;AAC9B,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AC5DqB;AACM;;AAE1B;AACP;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AC5D2B;;AAE1B;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AChD0B;AACI;;AAE7B,SAAS,gBAAK;AACrB;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,6CAA6C;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B;AAC9B,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,wDAAwD,QAAQ;AAChE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;ACvFwC;AACrB;AACQ;;AAEnC;AACA;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,8DAA8D,cAAc;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;ACzEoC;AACT;;AAEnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4DAA4D,YAAY;AACxE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;AC7DmB;;AAE3B;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACxBD,SAAS,aAAI;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,aAAI,OAAO,aAAI;AACzB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,cAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,cAAc,cAAK,yCAAyC;AAC5D;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,CAAC,cAAK,kDAAkD;AACtF,eAAe,cAAK,0CAA0C;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,4BAA4B,EAAE;AACxD,yBAAyB,2BAA2B,EAAE;AACtD,0BAA0B,4BAA4B,EAAE;AACxD,iDAAiD,mDAAmD;AACpG;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;ACvGA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA,aAAa,OAAO;AACpB;AACA,iBAAiB,QAAQ;AACzB;AACA,aAAa,WAAW;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;AChED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;;;ACpDe;AACf;AACA,iEAAiE,OAAO;AACxE;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,CAAC;;;ACRc;AACf;AACA;AACA;AACA,CAAC;;;ACJ6B;AACI;AACK;AACF;;AAErC;AACA;AACA;;AAEe;AACf,aAAa,qBAAQ;AACrB,cAAc,UAAS;AACvB,eAAe,WAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,iEAAiE,OAAO;AACxE;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oEAAoE,qBAAQ,CAAC,wBAAK;AAClF;;AAEA;AACA,qEAAqE,qBAAQ;AAC7E;;AAEA;AACA,mDAAmD,UAAS,iCAAiC,qBAAQ,CAAC,wBAAK;AAC3G;;AAEA;AACA,oDAAoD,WAAU;AAC9D;;AAEA;AACA,CAAC;;;ACxDyB;;AAEX;AACf;AACA,gDAAgD,OAAO;AACvD,mBAAmB,OAAO;AAC1B,sBAAsB,OAAO;AAC7B;AACA,EAAE,WAAI;AACN,CAAC;;;ACTc;AACf;AACA,mEAAmE,OAAO;AAC1E,4BAA4B,OAAO;AACnC;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,CAAC;;;ACbyB;;AAEX;AACf;AACA,0DAA0D,OAAO;AACjE,0BAA0B,OAAO;AACjC;AACA;AACA,EAAE,WAAI;AACN,CAAC;;;ACTyB;;AAEX;AACf;AACA,kCAAkC,OAAO;AACzC,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAI;AACN,CAAC;;;ACvByB;;AAEX;AACf;AACA,SAAS,UAAI,8BAA8B,4BAA4B,EAAE;AACzE,CAAC;;AAED;AACA;AACA;AACA;AACA;;;ACX0B;;AAEX;AACf,wBAAwB,aAAG;AAC3B,SAAS,UAAI,8BAA8B,0BAA0B,EAAE;AACvE,CAAC;;AAEM,SAAS,aAAG;AACnB;AACA;AACA;AACA;;;ACXoC;;AAErB;AACf,SAAS,eAAS;AAClB,CAAC;;;ACJqC;AACN;;AAEjB;AACf;AACA;AACA;AACA,wBAAwB,aAAG;AAC3B,cAAc,UAAU;AACxB;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AC1ByB;;AAEX;AACf,SAAS,UAAI;AACb,CAAC;;;ACJoC;AACE;AACA;AACF;AACqC;AACA;AACrB;AACiB;;AAElB;AACI;AACF;AACI;AACF;AACJ;AACQ;AACV;;AAEc;AACJ;AACR;AACE;AACgB;AACJ;AACR;AACgB;AACJ;AACR;AACI;AACZ;AACoC;AAClC;AACsD;;AAErE;AACoB;AACM;AACV;AACY;AACR;AACM;AACF;AACE;AACF;AACV;AACM;;;AC7C9C;AACf;AACA;AACA;AACA,CAAC;;;ACJM,SAAS,WAAC;AACjB;AACA;;AAEO,SAAS,WAAC;AACjB;AACA;;;ACNA;AACA,gBAAgB;AAChB;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gBAAgB,QAAQ;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe,iEAAY,EAAC;;;AC5OoB;;AAEzC;AACP;AACA,cAAc,aAAK;AACnB;AACA;AACA;AACA;AACA,EAAE,KAAK;AACP,EAAE,KAAK;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP,UAAU,aAAK;AACf;;AAEA;AACA,4BAA4B,aAAK;AACjC;AACA,iDAAiD,eAAO;AACxD,mDAAmD,eAAO;AAC1D,aAAa,aAAK;AAClB;AACA;AACA;;;ACvKwC;AACQ;;AAEzC;AACP,SAAS,KAAK;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP,sBAAsB,KAAK,+BAA+B,OAAO;AACjE,gBAAgB,KAAK;AACrB;AACA;AACA,iBAAiB,OAAO,uDAAuD,aAAK;AACpF,iCAAiC,4BAA4B,EAAE;AAC/D,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEO;AACP,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC,eAAe,KAAK;AACpB;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,aAAK;AACzC,wCAAwC,aAAK;AAC7C,sCAAsC,eAAO,8BAA8B,eAAO;AAClF,yCAAyC,aAAK,MAAM,gBAAgB;AACpE,oCAAoC,eAAO,gBAAgB,eAAO,gCAAgC,eAAO;AACzG,sCAAsC,eAAO,gBAAgB,eAAO,4BAA4B,eAAO;AACvG,sCAAsC,eAAO,gBAAgB,eAAO,gCAAgC,eAAO;AAC3G,sCAAsC,eAAO,gBAAgB,eAAO,4BAA4B,eAAO;AACvG;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iCAAiC,gBAAgB;AACjD,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,aAAK,MAAM,gBAAgB;AACnC,QAAQ,aAAK,MAAM,gBAAgB;AACnC,QAAQ,aAAK,MAAM,gBAAgB;AACnC,QAAQ,aAAK,MAAM,gBAAgB;AACnC;AACA;AACA;;AAEA,2CAA2C;AAC3C,iBAAiB,gBAAgB;AACjC,eAAe,KAAK;AACpB;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA;;;AC7H4C;AACA;;AAE5C;;AAEO;;AAEP;AACA,EAAE,YAAY;AACd;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,gBAAQ;;AAEpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;;AAEA;AACA,aAAa,eAAO;;AAEpB;AACA;AACA;AACA,YAAY,iBAAiB,OAAO;AACpC,KAAK;AACL;AACA,YAAY,eAAe,OAAO;AAClC;AACA;;AAEA,EAAE,eAAO;AACT;AACA;;AAEO;AACP;AACA;AACA;AACA,IAAI,eAAO;AACX;AACA,IAAI,YAAY;AAChB;AACA;AACA;;;AC7E4C;AACV;AACkB;AACN;AACH;;AAE3C;;AAEA;AACA,EAAE,YAAY;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,YAAY;AACd,EAAE,OAAO;AACT;AACA,EAAE,YAAY;AACd;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC,eAAO;AAC9C,wCAAwC,eAAO;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,YAAY;;AAEd;AACA;AACA,uCAAuC,eAAO;AAC9C,wCAAwC,eAAO;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,YAAY;;AAEd;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA,IAAI,UAAU;AACd;;AAEA;AACA;AACA,cAAc,UAAU;;AAExB,EAAE,YAAY;AACd,EAAE,YAAY;AACd;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;;AAEpB;AACA;AACA,cAAc,eAAO,gBAAgB;AACrC;AACA,gBAAgB,eAAO;AACvB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,mBAAmB,eAAO;AAC1B;AACA;AACA,SAAS,iBAAiB,eAAO;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,UAAU;AACZ;AACA,EAAE,OAAO;;AAET;;AAEA;AACA,IAAI,YAAY;AAChB;AACA,IAAI,OAAO;AACX,8BAA8B,UAAU;AACxC,IAAI,YAAY;AAChB,IAAI,YAAY;AAChB;AACA;;AAEA,cAAc;AACd,kBAAkB,UAAU;AAC5B;AACA;;AAEA;AACA,EAAE,YAAY;AACd,EAAE,YAAY;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,UAAU;AACZ,gBAAgB,UAAU;AAC1B,cAAc,UAAU;AACxB,EAAE,YAAY;AACd,EAAE,YAAY;AACd;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AChM8C;AACyB;AAClC;AACJ;AACS;;AAEnC,IAAI,eAAO;AACX,IAAI,gBAAQ;AACZ;AACA;AACA,IAAI,eAAO;AACX,IAAI,aAAK;;AAEhB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA,EAAE,aAAK;AACP;AACA,gBAAgB,gBAAY;AAC5B,EAAE,eAAO,OAAO,gBAAY;;AAE5B;AACA,aAAa,WAAW;AACxB;AACA;AACA,QAAQ,QAAQ;AAChB;AACA;AACA;AACA,KAAK;AACL,MAAM,WAAW;AACjB,KAAK;AACL;AACA;AACA;;AAEA,EAAE,iBAAiB;;AAEnB;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS;AACb,IAAI,SAAS;AACb;;AAEA,eAAe,aAAK;AACpB;;AAEA;AACA,EAAE,eAAO;AACT,EAAE,aAAK;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oDAAoD,QAAQ,iBAAiB,iBAAiB,EAAE;AAChG;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA;AACA;AACA;;;AC7IkC;AACe;AACN;;AAE5B;AACf,UAAU,WAAM;AAChB,UAAU,WAAM;AAChB;;AAEA;AACA,eAAe,OAAO;AACtB,0CAA0C,eAAO,IAAI,eAAO,6BAA6B,eAAO,IAAI,eAAO;AAC3G;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AC/C4C;;;ACA9B;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA;;;ACJO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO,IAAI,kBAAQ;;AAEnB,mBAAS;;AAEM,SAAS,mBAAS;AACjC,6DAA6D,kBAAQ;AACrE;AACA;;;AClDmC;;AAE5B,SAAS,yBAAa;AAC7B,EAAE,QAAK;AACP;;AAEe;AACf,EAAE,QAAK;AACP,EAAE,QAAK;AACP,CAAC;;;ACToC;AACW;AACD;AACuB;AAC9B;AACH;AACF;AACgB;AACC;;AAEpD;AACA,SAAS,kBAAa;AACtB,UAAU,QAAK,aAAa,QAAK;AACjC;;AAEA,SAAS,kBAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,kBAAQ;AAChC;;AAEA;AACA,UAAU,QAAK,WAAW,QAAK,0BAA0B,QAAK;AAC9D;;AAEA,SAAS,qBAAgB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,eAAe,kBAAa;AAC5B,eAAe,kBAAa;AAC5B;AACA;AACA,kBAAkB,qBAAgB;AAClC;AACA;AACA;AACA,oBAAoB,QAAe;AACnC,kBAAkB,YAAQ;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAQ;AAC/B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,+CAA+C,SAAS;AACxD;;AAEA;AACA;AACA,oEAAoE,SAAS;AAC7E;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,kCAAkC,EAAE;AAC1E,mDAAmD,gCAAgC,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,kBAAkB,4BAA4B,SAAS,SAAS,sCAAsC;AACtG;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,WAAW,KAAK,SAAS;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAK;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM,SAAS;AACf;AACA;;AAEA,IAAI,mBAAO;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,UAAM,CAAC,QAAK;AACxB,YAAY,KAAK;AACjB,aAAa,QAAK;AAClB,aAAa,QAAK;;AAElB,IAAI,MAAW,CAAC,QAAK;AACrB,IAAI,yBAAa;AACjB;AACA,IAAI,SAAS;AACb;;AAEA;AACA,MAAM,mBAAO;AACb;AACA,iBAAiB,QAAK,oBAAoB,QAAK;AAC/C;AACA;AACA,sEAAsE,KAAK;AAC3E;;AAEA;AACA;AACA,MAAM,OAAU,CAAC,QAAK;AACtB,MAAM,mBAAO;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA,qBAAqB,QAAK;AAC1B;;AAEA,IAAI,mBAAO;AACX,sBAAsB,UAAM;AAC5B,SAAS,UAAM;AACf;;AAEA;AACA;AACA,kBAAkB,QAAK;AACvB;AACA,qCAAqC,QAAK;AAC1C;;AAEA,IAAI,yBAAa;AACjB,eAAe,OAAO;AACtB,0BAA0B,SAAK;AAC/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6DAA6D,sBAAsB,EAAE;AACrF,MAAM,SAAS;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,QAAK;AACvB;;AAEA,IAAI,mBAAO;AACX;AACA;AACA,eAAe,OAAO;AACtB,0BAA0B,SAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,QAAK;AACvB;;AAEA,IAAI,yBAAa;AACjB;AACA,yCAAyC,oBAAoB,EAAE;AAC/D,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAM;AACtB;AACA;AACA;AACA;;AAEA;AACA,0EAA0E,oBAAQ;AAClF;;AAEA;AACA,sEAAsE,oBAAQ;AAC9E;;AAEA;AACA,yEAAyE,oBAAQ;AACjF;;AAEA;AACA,sEAAsE,oBAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AClayC;AACwC;;;ACDlF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACjB;AACD;AACC;AACA;AACK;AACL;AACE;AACC;AACJ;AACD;AACC;AACC;AACA;AACC;AACH;AACM;AACE;AACP;AACG;AACC;AACF;AACD;AACU;AACN;AACJ;AACD;AACO;AACN;AACK;AACH;AACH;;;;;;;;;;;;;QC/BRW,Y,GAAAA,Y;AAAT,SAASA,YAAT,CAAsBC,KAAtB,EAA6B;AAClC;AACA,MAAIA,QAAQC,OAAOD,KAAP,CAAZ;AAAA,MACIE,QAAQF,MAAMG,WAAN,CAAkB,CAAlB,CADZ;AAAA,MAEIC,SAAS,EAFb;AAAA,MAGIC,WAAW,CAAC,EAAD,EAAK,GAAL,EAAU,GAAV,EAAe,GAAf,EAAoB,GAApB,CAHf;;AAKA,MAAIJ,OAAOC,KAAP,KAAiBF,KAAjB,IAA0BM,OAAON,KAAP,EAAclC,MAAd,IAAwB,CAAtD,EAAyD;AACvD,WAAOwC,OAAON,KAAP,CAAP;AACD;;AAED,MAAIO,KAAKC,GAAL,CAASR,KAAT,KAAmB,gBAAvB,EAAyC;AACvC,WAAOE,KAAP;AACD;;AAED,MAAIF,SAAS,CAAT,IAAcA,SAAS,CAAC,CAA5B,EAA+B;AAC7B,QAAIA,QAAQ,CAAZ,EAAc;AACZ;AACAA,cAAQ,CAACA,KAAT;AACAI,eAAS,GAAT;AACD;AACD,WAAOA,SAASK,QAAQT,KAAR,EAAe,CAAf,CAAhB;AACD,GAPD,MAQK;AACH,WAAOA,MAAMG,WAAN,CAAkB,CAAlB,CAAP;AACD;;AAED,WAASM,OAAT,CAAiBT,KAAjB,EAAwBU,SAAxB,EAAmC;AACjC,QAAIV,QAAQM,OAAON,KAAP,CAAZ;AACA,QAAIW,QAAQX,MAAMW,KAAN,CAAY,GAAZ,CAAZ;AACA;AACA,QAAIA,MAAM7C,MAAN,GAAe,CAAnB,EAAsB;AACpB;AACAkC,cAAQW,MAAM,CAAN,CAAR;AACA,UAAIC,MAAMD,MAAM,CAAN,CAAV;AACA;AACA,UAAIX,MAAMlC,MAAN,IAAgB,CAAhB,IAAqB8C,IAAI9C,MAAJ,GAAa,CAAtC,EAAyC;AACvC;AACA,YAAI8C,IAAI9C,MAAJ,GAAa,CAAjB,EAAoB;AAClBkC,kBAAQA,QAAQ,GAAR,GAAcY,IAAIC,MAAJ,CAAW,CAAX,CAAtB;AACD;AACD;AAHA,aAIK;AACHb,qBAAS,GAAT;AACD;AACF,OATD,MAUK,IAAIA,MAAMlC,MAAN,IAAgB,CAAhB,IAAqB8C,IAAI9C,MAAJ,GAAa,CAAtC,EAAyC;AAC5CkC,gBAAQA,QAAQ,GAAR,GAAcY,IAAIC,MAAJ,CAAW,CAAX,CAAtB;AACA;AACA,YAAID,IAAI9C,MAAJ,GAAa,CAAjB,EAAoB;AAClBkC,mBAASY,IAAIC,MAAJ,CAAW,CAAX,CAAT;AACD;AACD;AAHA,aAIK;AACHb,qBAAS,GAAT;AACD;AACF;AACF;AACD,QAAIc,cAAcd,MAAMlC,MAAxB;AACA;AACA,QAAIkC,MAAMW,KAAN,CAAY,GAAZ,EAAiB7C,MAAjB,GAA0B,CAA9B,EAAiC;AAC/BgD;AACD;AACD,QAAIA,eAAe,CAAnB,EAAsB;AACpB,aAAOR,OAAON,KAAP,IAAgBK,SAASK,SAAT,CAAvB;AACD,KAFD,MAGK;AACH,aAAOD,QAAQR,OAAOD,KAAP,IAAgB,IAAxB,EAA8BU,YAAY,CAA1C,CAAP;AACD;AACF;AACF,C;;;;;;;;;;;;QC5DeK,U,GAAAA,U;AAVhB,IAAMC,kBAAkB,SAAxB;;AAEA;;;;;;;;AAQO,SAASD,UAAT,CAAoBE,MAApB,EAA4B;AACjC,MAAIC,MAAM,KAAKD,MAAf;AACA,MAAIE,QAAQH,gBAAgBI,IAAhB,CAAqBF,GAArB,CAAZ;;AAEA,MAAI,CAACC,KAAL,EAAY;AACV,WAAOD,GAAP;AACD;;AAED,MAAIG,MAAJ;AACA,MAAIC,OAAO,EAAX;AACA,MAAIC,QAAQ,CAAZ;AACA,MAAIC,YAAY,CAAhB;;AAEA,OAAKD,QAAQJ,MAAMI,KAAnB,EAA0BA,QAAQL,IAAIpD,MAAtC,EAA8CyD,OAA9C,EAAuD;AACrD,YAAQL,IAAIO,UAAJ,CAAeF,KAAf,CAAR;AACE,WAAK,EAAL;AAAS;AACPF,iBAAS,QAAT;AACA;AACF,WAAK,EAAL;AAAS;AACPA,iBAAS,OAAT;AACA;AACF,WAAK,EAAL;AAAS;AACPA,iBAAS,OAAT;AACA;AACF,WAAK,EAAL;AAAS;AACPA,iBAAS,MAAT;AACA;AACF,WAAK,EAAL;AAAS;AACPA,iBAAS,MAAT;AACA;AACF;AACE;AAjBJ;;AAoBA,QAAIG,cAAcD,KAAlB,EAAyB;AACvBD,cAAQJ,IAAIQ,SAAJ,CAAcF,SAAd,EAAyBD,KAAzB,CAAR;AACD;;AAEDC,gBAAYD,QAAQ,CAApB;AACAD,YAAQD,MAAR;AACD;;AAED,SAAOG,cAAcD,KAAd,GACHD,OAAOJ,IAAIQ,SAAJ,CAAcF,SAAd,EAAyBD,KAAzB,CADJ,GAEHD,IAFJ;AAGD,C;;;;;;;;;;;;QCvDeK,M,GAAAA,M;AAAT,SAASA,MAAT,CAAgBC,MAAhB,EAAwB;AAC7B,OAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIC,UAAUhE,MAA9B,EAAsC+D,GAAtC,EAA2C;AACzC,SAAK,IAAIE,IAAT,IAAiBD,UAAUD,CAAV,CAAjB,EAA8B;AAC5BD,aAAOG,IAAP,IAAeD,UAAUD,CAAV,EAAaE,IAAb,CAAf;AACD;AACF;AACD,SAAOH,MAAP;AACD,C;;;;;;;;;;;;QCLeI,Q,GAAAA,Q;;AAFhB;;IAAYC,E;;;;AAEL,SAASD,QAAT,CAAkBE,IAAlB,EAAwBC,KAAxB,EAA+B;AACpCD,SAAK1E,IAAL,CAAU,YAAY;AACpB,YAAI0E,OAAOD,GAAGhD,MAAH,CAAU,IAAV,CAAX;AAAA,YACImD,QAAQF,KAAKA,IAAL,GAAYvB,KAAZ,CAAkB,KAAlB,EAAyB0B,OAAzB,EADZ;AAAA,YAEIC,aAFJ;AAAA,YAGIC,OAAO,EAHX;AAAA,YAIIC,aAAa,CAJjB;AAAA,YAKIC,aAAa,GALjB;AAAA,YAKsB;AAClBC,YAAIR,KAAKS,IAAL,CAAU,GAAV,CANR;AAAA,YAOIC,IAAIV,KAAKS,IAAL,CAAU,GAAV,CAPR;AAAA,YAQIE,KAAK,CART;AAAA,YAQY;AACRC,gBAAQZ,KAAKA,IAAL,CAAU,IAAV,EACKa,MADL,CACY,OADZ,EAEKJ,IAFL,CAEU,GAFV,EAEeD,CAFf,EAGKC,IAHL,CAGU,GAHV,EAGeC,CAHf,EAIKD,IAJL,CAIU,IAJV,EAIgBE,KAAK,IAJrB,CATZ;AAcA,eAAOP,OAAOF,MAAMY,GAAN,EAAd,EAA2B;AACvBT,iBAAKU,IAAL,CAAUX,IAAV;AACAQ,kBAAMZ,IAAN,CAAWK,KAAKW,IAAL,CAAU,GAAV,CAAX;AACA,gBAAIJ,MAAMK,IAAN,GAAaC,qBAAb,KAAuCjB,KAA3C,EAAkD;AAC9CI,qBAAKS,GAAL;AACAF,sBAAMZ,IAAN,CAAWK,KAAKW,IAAL,CAAU,GAAV,CAAX;AACAX,uBAAO,CAACD,IAAD,CAAP;AACAQ,wBAAQZ,KAAKa,MAAL,CAAY,OAAZ,EACKJ,IADL,CACU,GADV,EACeD,CADf,EAEKC,IAFL,CAEU,GAFV,EAEeC,CAFf,EAGKD,IAHL,CAGU,IAHV,EAGgB,EAAEH,UAAF,GAAeC,UAAf,GAA4BI,EAA5B,GAAiC,IAHjD,EAIKX,IAJL,CAIUI,IAJV,CAAR;AAKH;AACJ;AACF,KA7BD;AA8BD,C;;;;;;ACjCD;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;QChBgBe,Y,GAAAA,Y;QA6CAC,S,GAAAA,S;;AAhDhB;;;;AACA;;;;AAEO,SAASD,YAAT,CAAsBnC,GAAtB,EAA2BlB,KAA3B,EAAkC;AACvC,MAAMuD,OAAO,IAAb;AACA,MAAMC,OAAO3F,MAAM4F,SAAN,CAAgBC,KAAhB,CAAsB3F,IAAtB,CAA2B+D,SAA3B,EAAsC,CAAtC,CAAb;AACA,MAAM6B,QAASzC,QAAQ0C,SAAT,GAAsB1C,GAAtB,GAA4B,IAA1C;;AAEA,MAAI,OAAOlB,KAAP,KAAiB,UAArB,EAAiC;AAC/BuD,SAAKM,MAAL,CAAY,CAAZ,EAAeZ,IAAf,CAAoBU,KAApB;AACA,oBAAKJ,KAAKM,MAAV,EAAkB,UAASC,GAAT,EAAcjC,CAAd,EAAiB;AACjC,UAAIkC,aAAJ;AACA,UAAIlC,IAAI,CAAR,EAAW;AACTkC,eAAO/D,MAAMjC,IAAN,CAAWwF,IAAX,EAAiBO,GAAjB,EAAsBjC,CAAtB,CAAP;AACA,YAAI,OAAOkC,IAAP,KAAgB,WAApB,EAAiC;AAC/BA,iBAAO,IAAP;AACD;AACDR,aAAKM,MAAL,CAAYhC,CAAZ,EAAeoB,IAAf,CAAoBc,IAApB;AACD;AACF,KATD;AAUD,GAZD,MAcK,IAAI,CAAC/D,KAAD,IAAUA,iBAAiBnC,KAA/B,EAAsC;AACzCmC,YAAQA,SAAS,EAAjB;;AAEA,QAAIA,MAAMlC,MAAN,IAAgByF,KAAKM,MAAL,CAAY/F,MAAZ,GAAqB,CAAzC,EAA4C;AAC1CkC,cAAQA,MAAMgE,MAAN,CAAa,8BAAeT,KAAKM,MAAL,CAAY/F,MAAZ,GAAqB,CAArB,GAAyBkC,MAAMlC,MAA9C,CAAb,CAAR;AACD,KAFD,MAGK;AACH;AACA;AACA,sBAAKkC,KAAL,EAAY,UAASrB,KAAT,EAAgBkD,CAAhB,EAAkB;AAC5B,YAAI0B,KAAKM,MAAL,CAAY/F,MAAZ,GAAoB,CAApB,GAAwBkC,MAAMlC,MAAlC,EAA0C;AACxCwF,oBAAUvF,IAAV,CAAewF,IAAf,EAAqBjD,OAAOiD,KAAKM,MAAL,CAAY/F,MAAnB,CAArB;AACD;AACF,OAJD;AAKD;;AAEDyF,SAAKM,MAAL,CAAY,CAAZ,EAAeZ,IAAf,CAAoBU,KAApB;AACA,oBAAK3D,KAAL,EAAY,UAASrB,KAAT,EAAgBkD,CAAhB,EAAkB;AAC5B0B,WAAKM,MAAL,CAAYhC,IAAE,CAAd,EAAiB0B,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAsB,CAAvC,IAA4Ca,KAA5C;AACD,KAFD;AAID;;AAED,SAAO4E,IAAP;AACD;;AAEM,SAASD,SAAT,CAAmBpC,GAAnB,EAAwBlB,KAAxB,EAA+B;AACpC,MAAMuD,OAAO,IAAb;AACA,MAAMC,OAAO3F,MAAM4F,SAAN,CAAgBC,KAAhB,CAAsB3F,IAAtB,CAA2B+D,SAA3B,EAAsC,CAAtC,CAAb;AACA,MAAM6B,QAASzC,QAAQ0C,SAAT,GAAsB1C,GAAtB,GAA4B,IAA1C;AACA,MAAM+C,SAAS,EAAf;;AAEAA,SAAOhB,IAAP,CAAYU,KAAZ;;AAEA,MAAI,OAAO3D,KAAP,KAAiB,UAArB,EAAiC;AAC/B,oBAAKuD,KAAKM,MAAL,CAAY,CAAZ,CAAL,EAAqB,UAASF,KAAT,EAAgB9B,CAAhB,EAAkB;AACrC,UAAIqC,YAAJ;AACA,UAAIH,aAAJ;AACA,UAAIlC,IAAI,CAAR,EAAW;AACTqC,cAAMX,KAAKY,YAAL,CAAkBtC,CAAlB,CAAN;AACAkC,eAAO/D,MAAMjC,IAAN,CAAWwF,IAAX,EAAiBW,GAAjB,EAAsBrC,CAAtB,CAAP;AACA,YAAI,OAAOkC,IAAP,KAAgB,WAApB,EAAiC;AAC/BA,iBAAO,IAAP;AACD;AACDE,eAAOhB,IAAP,CAAYc,IAAZ;AACD;AACF,KAXD;AAYAR,SAAKM,MAAL,CAAYZ,IAAZ,CAAiBgB,MAAjB;AACD,GAdD,MAgBK,IAAI,CAACjE,KAAD,IAAUA,iBAAiBnC,KAA/B,EAAsC;AACzCmC,YAAQA,SAAS,EAAjB;;AAEA,QAAIA,MAAMlC,MAAN,IAAgByF,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAwB,CAA5C,EAA+C;AAC7CkC,cAAQA,MAAMgE,MAAN,CAAc,8BAAgBT,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAwB,CAAxB,GAA4BkC,MAAMlC,MAAlD,CAAd,CAAR;AACD,KAFD,MAGK;AACH,sBAAKkC,KAAL,EAAY,UAASrB,KAAT,EAAgBkD,CAAhB,EAAkB;AAC5B,YAAI0B,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAuB,CAAvB,GAA2BkC,MAAMlC,MAArC,EAA6C;AAC3CuF,uBAAatF,IAAb,CAAkBwF,IAAlB,EAAwBjD,OAAQiD,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAvB,CAAxB;AACD;AACF,OAJD;AAKD;;AAEDyF,SAAKM,MAAL,CAAYZ,IAAZ,CAAiBgB,OAAOD,MAAP,CAAchE,KAAd,CAAjB;AACD;;AAED,SAAOuD,IAAP;AACD,C;;;;;;;;;;;;;kBC1Fc,UAAUa,GAAV,EAAe;AAC5B,MAAMC,OAAO,EAAb;AACA,OAAK,IAAIxC,IAAI,CAAb,EAAgBA,IAAIuC,GAApB,EAAyBvC,GAAzB,EAA8B;AAC5BwC,SAAKpB,IAAL,CAAU,IAAV;AACD;AACD,SAAOoB,IAAP;AACD,C;;;;;;ACND;AACA;AACA,EAAE,KAA4D;AAC9D,EAAE,SACgD;AAClD,CAAC,oBAAoB;;AAErB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oCAAoC,KAA8B,GAAG,mBAAO,CAAC,CAAI,IAAI,SAAS;AAC9F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,kCAAkC,eAAe;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,iBAAiB;AACtC;AACA;AACA;;AAEA;AACA,iEAAiE;;AAEjE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB,QAAQ;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yFAAyF;;AAEzF;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,sBAAsB;AAClF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oEAAoE;;AAEpE;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,+CAA+C;;AAE/C;;AAEA,mBAAmB,WAAW;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,oDAAoD;AACpD;;AAEA,mDAAmD;AACnD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;;AAEhD;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA,yCAAyC;AACzC;;AAEA,oBAAoB;;AAEpB,kBAAkB;;AAElB,+EAA+E;;AAE/E;AACA;AACA;;AAEA,8BAA8B;;AAE9B,uBAAuB;;AAEvB,2BAA2B;;AAE3B,mBAAmB;;AAEnB,sCAAsC;;AAEtC;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL,oBAAoB;;AAEpB,yBAAyB;;AAEzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC,oCAAoC;;AAEpC,qCAAqC;;AAErC;AACA;AACA;AACA;;;AAGA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;;AAE9E;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL,8CAA8C;;AAE9C,yCAAyC;;AAEzC;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA,iFAAiF;;AAEjF,uBAAuB;;AAEvB;AACA,qEAAqE;;AAErE;AACA;AACA;AACA,KAAK;;;AAGL,0BAA0B;;AAE1B,0MAA0M;;AAE1M;AACA;AACA,KAAK;;;AAGL;AACA,wCAAwC;;AAExC,8BAA8B;;AAE9B,kCAAkC;;AAElC;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS,EAAE;;AAEX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA,iEAAiE;;AAEjE;AACA;AACA;AACA,kHAAkH;;AAElH,qBAAqB;;AAErB;AACA,gHAAgH;;AAEhH;AACA,yBAAyB;;AAEzB;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,2DAA2D;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6IAA6I;;AAE7I;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,4CAA4C;;AAE5C;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;;;AAGP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;;AAElE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO,EAAE;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;;AAEjF;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0EAA0E;;AAE1E;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO,EAAE;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO,EAAE;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ;;;AAGR;AACA;;AAEA;;AAEA;AACA,QAAQ;;;AAGR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,4CAA4C;;;AAG5C;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,0CAA0C;;AAE1C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,QAAQ;;;AAGR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C;;AAE/C;AACA,UAAU;AACV;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;;AAGrC,0HAA0H;AAC1H;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA,iCAAiC;;AAEjC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;;;AAGX;AACA,iCAAiC;;AAEjC;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;;;AAGb;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,4CAA4C,sCAAsC;;AAElF;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,IAAI;AACP;AACA;AACA;;;AAGA;AACA;AACA,uCAAuC;;AAEvC;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA,yEAAyE;AACzE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,oCAAoC;;AAEpC;AACA;AACA;AACA,KAAK;;;AAGL,+BAA+B;;AAE/B;AACA,iDAAiD;;AAEjD;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,qBAAqB,YAAY;AACjC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;;AAEA,oDAAoD,UAAU;AAC9D;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;;AAEA,sDAAsD;AACtD;;AAEA;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;;AAEA,2FAA2F;;AAE3F,wBAAwB;;AAExB;AACA;AACA,OAAO,EAAE;;AAET,qDAAqD;;AAErD;AACA;AACA;;AAEA,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH;;AAEhH;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,iEAAiE;;AAEjE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,yCAAyC;;AAEzC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,uKAAuK;AACvK;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+EAA+E,WAAW;AAC1F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,sDAAsD;AACtD,kDAAkD;AAClD;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,0CAA0C;AAC1C,sCAAsC;AACtC,wCAAwC;AACxC,kCAAkC;AAClC,0CAA0C;AAC1C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,oBAAoB;AACpB,sBAAsB;AACtB;AACA,mBAAmB;AACnB;AACA,oBAAoB;AACpB,qBAAqB;AACrB;AACA,sBAAsB;AACtB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,8CAA8C;AAC9C,sDAAsD;AACtD,oDAAoD;AACpD,oDAAoD;AACpD,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,kDAAkD;AAClD,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,SAAS,IAAI;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,6CAA6C;;AAE7C,mCAAmC;;AAEnC;;AAEA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;;;AAGA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;;AAEA,qBAAqB,oBAAoB;AACzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;;;AAGA;AACA;AACA;;AAEA,mBAAmB,oBAAoB;AACvC;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,cAAc;AACd;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;;AAEb,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;;;AAGX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,KAAK,EAAE;;AAEP;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;;AAGP;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA,OAAO;AACP,KAAK,EAAE;;AAEP;AACA,gEAAgE;;AAEhE;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,eAAe,gBAAgB;AAC/B;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;;;AAGA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA,KAAK,EAAE;;AAEP;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;;AAGP;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,wDAAwD;AACxD,KAAK;;;AAGL,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,+BAA+B;AAChD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;AACA;AACA,WAAW;AACX,SAAS;;;AAGT,mBAAmB,uBAAuB;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,+BAA+B;AAChD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;AACA;AACA,WAAW;AACX,SAAS;;;AAGT,mBAAmB,uBAAuB;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;;AAE1E;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uDAAuD;;AAEvD;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6HAA6H;;AAE7H;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;;AAE5C;AACA;;AAEA;AACA;AACA;;AAEA,+GAA+G;;AAE/G;AACA;AACA,KAAK;AACL;AACA,yQAAyQ;;AAEzQ,oDAAoD;AACpD;;AAEA,kFAAkF;;AAElF;AACA;AACA;;AAEA,+GAA+G;;AAE/G;AACA;AACA,KAAK;AACL;AACA,yQAAyQ;;AAEzQ;AACA;AACA;AACA;AACA,KAAK,sBAAsB;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,eAAe;AACxC;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wGAAwG;;AAExG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;AACP,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,qDAAqD;;AAErD,sCAAsC;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK,kBAAkB;AACvB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,mBAAmB;AACnB,oBAAoB;AACpB;AACA,kBAAkB;AAClB;AACA;AACA,wCAAwC;;AAExC;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,8cAA8c;;AAE9c;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;;;AAGZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qGAAqG;;AAErG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iIAAiI;;AAEjI;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;;AAE1D;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA,+DAA+D;;AAE/D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sCAAsC;;AAEtC,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,6GAA6G;;AAE7G;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,iBAAiB,+BAA+B;AAChD;AACA;AACA;;AAEA,mBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oIAAoI;;AAEpI,wDAAwD;;AAExD,wDAAwD;;AAExD;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA,OAAO;AACP,KAAK,EAAE;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA,iBAAiB,qBAAqB;AACtC;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL,eAAe,cAAc;AAC7B;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,QAAQ;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iEAAiE;;AAEjE,4CAA4C;;AAE5C,6FAA6F;;AAE7F,iFAAiF;;AAEjF,kFAAkF;;AAElF,kFAAkF;AAClF;;AAEA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qEAAqE;;AAErE,2DAA2D;;AAE3D;AACA;AACA,wEAAwE;;AAExE,6DAA6D;;AAE7D,6DAA6D;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;;AAEhF;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK,EAAE;;AAEP;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB,sCAAsC;;AAEtC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;;AAE9D,yKAAyK;;AAEzK;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK,sBAAsB;;AAE3B;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK,sBAAsB;;AAE3B,qFAAqF;;AAErF,0HAA0H;;AAE1H;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK,sBAAsB;;AAE3B;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK,sBAAsB;;AAE3B,qFAAqF;;AAErF,kIAAkI;;AAElI;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK,sBAAsB;;AAE3B;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK,wFAAwF;;AAE7F;AACA;;AAEA;AACA;AACA;AACA;AACA,yMAAyM;;AAEzM;AACA;AACA;;AAEA,mBAAmB,sCAAsC;AACzD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;;AAGR;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO,EAAE;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,eAAe,cAAc;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;;AAE5C;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA,6JAA6J;;AAE7J;AACA;AACA,iFAAiF;;AAEjF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;;;;;QC/6VeC,U,GAAAA,U;QAOAC,U,GAAAA,U;;kBAKD,UAAUvE,KAAV,EAAiB;AAC9B,MAAI,QAAOA,KAAP,yCAAOA,KAAP,OAAiB,QAArB,EAA+B;AAC7B,WAAOsE,WAAWtE,KAAX,CAAP;AACD,GAFD,MAEO,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AACpC,WAAOuE,WAAWvE,KAAX,CAAP;AACD;AACD,SAAO,KAAP;AACD,C;;AAnBM,SAASsE,UAAT,CAAoBtE,KAApB,EAA2B;AAChC,MAAIA,UAAU,IAAV,IAAkB,OAAOA,MAAMwE,OAAb,KAAyB,UAA3C,IAAyD,CAACC,MAAMzE,MAAMwE,OAAN,EAAN,CAA9D,EAAsF;AACpF,WAAO,IAAP;AACD;AACD,SAAO,KAAP;AACD;;AAEM,SAASD,UAAT,CAAoBvE,KAApB,EAA2B;AAChC,MAAM0E,WAAW,+DAAjB;AACA,SAAOA,SAASC,IAAT,CAAc3E,KAAd,CAAP;AACD,C;;;;;;;;;;;;;;ACTD;;IAAY+C,M;;AACZ;;IAAY6B,G;;AACZ;;IAAYC,M;;AACZ;;IAAYC,M;;AACZ;;IAAY7F,M;;AACZ;;IAAY8F,I;;AACZ;;IAAYC,M;;AAGZ;;;;AACA;;AACA;;;;;;;;AAZA;AAcO,IAAMC,4BAAU,SAAVA,OAAU,GAAuB;AAAA,MAAbC,MAAa,uEAAJ,EAAI;;AAC5C,MAAI,gBAAgBD,OAAhB,KAA4B,KAAhC,EAAuC;AACrC,WAAO,IAAIA,OAAJ,CAAYC,MAAZ,CAAP;AACD;;AAED,OAAKrB,MAAL,GAAc,CACZ,CAAC,OAAD,CADY,CAAd;AAGA,OAAKsB,IAAL,GAAY;AACVC,UAAMxB;AADI,GAAZ;AAGA,OAAKsB,MAAL,GAAcA,MAAd;AACD,CAZM;;AALP;;;AAmBAD,QAAQxB,SAAR,CAAkB4B,IAAlB,GAAyB,UAAUC,GAAV,EAAe;AACtC,MAAI,CAACxD,UAAUhE,MAAf,EAAuB,OAAO,KAAK+F,MAAZ;AACvB,OAAKA,MAAL,GAAeyB,eAAezH,KAAf,GAAuByH,GAAvB,GAA6B,IAA5C;AACA,SAAO,IAAP;AACD,CAJD;;AAMAL,QAAQxB,SAAR,CAAkB8B,GAAlB,GAAwB,UAAUC,MAAV,EAAkB7G,KAAlB,EAAyB;AAC/C,MAAImD,UAAUhE,MAAV,GAAmB,CAAnB,IAAwB0H,OAAO1H,MAAP,GAAgB,CAA5C,EAA+C;AAC7C,UAAM2H,MAAM,8CAAN,CAAN;AACD;;AAED,MAAIC,WAAW,aAAa,OAAOF,OAAO,CAAP,CAApB,GAAgCA,OAAO,CAAP,CAAhC,GAA4C,KAAK3B,MAAL,CAAY,CAAZ,EAAe8B,OAAf,CAAuBH,OAAO,CAAP,CAAvB,CAA3D;AAAA,MACII,WAAW,aAAa,OAAOJ,OAAO,CAAP,CAApB,GAAgCA,OAAO,CAAP,CAAhC,GAA4CvG,OAAOkF,YAAP,CAAoBpG,IAApB,CAAyB,IAAzB,EAA+B,CAA/B,EAAkC4H,OAAlC,CAA0CH,OAAO,CAAP,CAA1C,CAD3D;;AAGA,MAAIK,YAAY5G,OAAOkF,YAAP,CAAoBpG,IAApB,CAAyB,IAAzB,EAA+ByH,OAAO,CAAP,CAA/B,CAAhB;AAAA,MACIM,YAAY7G,OAAO8G,SAAP,CAAiBhI,IAAjB,CAAsB,IAAtB,EAA4ByH,OAAO,CAAP,CAA5B,CADhB;;AAGA;AACA,MAAIK,UAAU/H,MAAV,GAAmB,CAAvB,EAA0B;AACxBiF,WAAOM,YAAP,CAAoBtF,IAApB,CAAyB,IAAzB,EAA+BuC,OAAOkF,OAAO,CAAP,CAAP,CAA/B;AACAE,eAAW,KAAK7B,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAwB,CAAnC;AACD;;AAED;AACA,MAAIgI,UAAUhI,MAAV,GAAmB,CAAvB,EAA0B;AACxBiF,WAAOO,SAAP,CAAiBvF,IAAjB,CAAsB,IAAtB,EAA4BuC,OAAOkF,OAAO,CAAP,CAAP,CAA5B;AACAI,eAAW,KAAK/B,MAAL,CAAY/F,MAAZ,GAAqB,CAAhC;AACD;;AAED;AACA,OAAK+F,MAAL,CAAa+B,QAAb,EAAyBF,QAAzB,IAAsC/G,KAAtC;AACA,SAAO,IAAP;AACD,CA1BD;;AA4BAsG,QAAQxB,SAAR,CAAkB2B,IAAlB,GAAyB,UAASlE,GAAT,EAAa;AACpC,MAAI,CAACY,UAAUhE,MAAf,EAAuB,OAAO,KAAKqH,IAAL,CAAU,MAAV,CAAP;AACvB,OAAKA,IAAL,CAAU,MAAV,IAAqBjE,MAAMZ,OAAOY,GAAP,CAAN,GAAoB0C,SAAzC;AACA,SAAO,IAAP;AACD,CAJD;;AAMA,oBAAOqB,QAAQxB,SAAf,EAA0BV,MAA1B;AACA,oBAAOkC,QAAQxB,SAAf,EAA0BmB,GAA1B;AACA,oBAAOK,QAAQxB,SAAf,EAA0BoB,MAA1B;AACA,oBAAOI,QAAQxB,SAAf,EAA0BqB,MAA1B;AACA,oBAAOG,QAAQxB,SAAf,EAA0BxE,MAA1B;AACA,oBAAOgG,QAAQxB,SAAf,EAA0BsB,IAA1B;AACA,oBAAOE,QAAQxB,SAAf,EAA0BuB,MAA1B;AACA,oBAAOC,QAAQxB,SAAf,EAA0BuC,kBAA1B;AACAf,QAAQgB,MAAR,GAAiB,uBAAQhB,OAAR,CAAjB;;kBAEeA,O;;;;;;;;;;;;;AC9Ef;;AACA;;AAEA,SAASiB,OAAT,CAAiBZ,GAAjB,EAAsBa,KAAtB,EAA6BC,GAA7B,EAAiC;AAC/B,MAAIb,MAAMD,IAAI5B,KAAJ,CAAUyC,SAAO,CAAjB,EAAqBC,MAAMA,MAAI,CAAV,GAAcd,IAAIxH,MAAvC,CAAV;AAAA,MACIuI,MAAM,CADV;AAAA,MAEIC,MAAM,IAFV;;AAIA;AACA,kBAAKf,GAAL,EAAU,UAASgB,GAAT,EAAc1E,CAAd,EAAgB;AACxB,QAAI,OAAO0E,GAAP,KAAe,QAAf,IAA2B,CAAC9B,MAAM+B,WAAWD,GAAX,CAAN,CAAhC,EAAwD;AACtDF,aAAOG,WAAWD,GAAX,CAAP;AACD;AACF,GAJD;AAKA,SAAOF,MAAMd,IAAIzH,MAAjB;AACD;;AAED,SAAS2I,OAAT,CAAiBnB,GAAjB,EAAsBa,KAAtB,EAA6BC,GAA7B,EAAiC;AAC/B,MAAIb,MAAMD,IAAI5B,KAAJ,CAAUyC,SAAO,CAAjB,EAAqBC,MAAMA,MAAI,CAAV,GAAcd,IAAIxH,MAAvC,CAAV;AAAA,MACI4I,OAAO,EADX;;AAGA;AACA,kBAAKnB,GAAL,EAAU,UAASgB,GAAT,EAAc1E,CAAd,EAAgB;AACxB,QAAI,OAAO0E,GAAP,KAAe,QAAf,IAA2B,CAAC9B,MAAM+B,WAAWD,GAAX,CAAN,CAAhC,EAAwD;AACtDG,WAAKzD,IAAL,CAAUuD,WAAWD,GAAX,CAAV;AACD;AACF,GAJD;AAKA,SAAOhG,KAAKoG,GAAL,CAASC,KAAT,CAAerG,IAAf,EAAqBmG,IAArB,CAAP;AACD;;AAED,SAASG,OAAT,CAAiBvB,GAAjB,EAAsBa,KAAtB,EAA6BC,GAA7B,EAAiC;AAC/B,MAAIb,MAAMD,IAAI5B,KAAJ,CAAUyC,SAAO,CAAjB,EAAqBC,MAAMA,MAAI,CAAV,GAAcd,IAAIxH,MAAvC,CAAV;AAAA,MACI4I,OAAO,EADX;;AAGA;AACA,kBAAKnB,GAAL,EAAU,UAASgB,GAAT,EAAc1E,CAAd,EAAgB;AACxB,QAAI,OAAO0E,GAAP,KAAe,QAAf,IAA2B,CAAC9B,MAAM+B,WAAWD,GAAX,CAAN,CAAhC,EAAwD;AACtDG,WAAKzD,IAAL,CAAUuD,WAAWD,GAAX,CAAV;AACD;AACF,GAJD;AAKA,SAAOhG,KAAKuG,GAAL,CAASF,KAAT,CAAerG,IAAf,EAAqBmG,IAArB,CAAP;AACD;;AAED,SAASL,GAAT,CAAaf,GAAb,EAAkBa,KAAlB,EAAyBC,GAAzB,EAA6B;AAC3B;AACA,MAAIb,MAAMD,IAAI5B,KAAJ,CAAUyC,SAAO,CAAjB,EAAqBC,MAAMA,MAAI,CAAV,GAAcd,IAAIxH,MAAvC,CAAV;AAAA,MACIuI,MAAM,CADV;;AAGA;AACA,kBAAKd,GAAL,EAAU,UAASgB,GAAT,EAAc1E,CAAd,EAAgB;AACxB,QAAI,OAAO0E,GAAP,KAAe,QAAf,IAA2B,CAAC9B,MAAM+B,WAAWD,GAAX,CAAN,CAAhC,EAAwD;AACtDF,aAAOG,WAAWD,GAAX,CAAP;AACD;AACF,GAJD;AAKA,SAAOF,GAAP;AACD;;AAED,IAAMU,mBAAmB,SAAnBA,gBAAmB,CAAUzB,GAAV,EAAe;AACtC,SAAOY,QAAQZ,GAAR,EAAa,CAAb,CAAP;AACD,CAFD;AAGA,IAAM0B,gBAAgBD,gBAAtB;;AAEA,IAAME,eAAe,SAAfA,YAAe,CAAU3B,GAAV,EAAe;AAClC,SAAOe,IAAIf,GAAJ,EAAS,CAAT,CAAP;AACD,CAFD;AAGA,IAAM4B,YAAYD,YAAlB;;AAEA,IAAME,mBAAmB,SAAnBA,gBAAmB,CAAU7B,GAAV,EAAe;AACtC,SAAOmB,QAAQnB,GAAR,EAAa,CAAb,CAAP;AACD,CAFD;AAGA,IAAM8B,gBAAgBD,gBAAtB;;AAEA,IAAME,mBAAmB,SAAnBA,gBAAmB,CAAU/B,GAAV,EAAe;AACtC,SAAOuB,QAAQvB,GAAR,EAAa,CAAb,CAAP;AACD,CAFD;AAGA,IAAMgC,gBAAgBD,gBAAtB;;AAEA,IAAME,iBAAiB,SAAjBA,cAAiB,CAAUjC,GAAV,EAAe;AACpC,SAAOA,IAAI,CAAJ,CAAP;AACD,CAFD;AAGA,IAAMkC,cAAcD,cAApB;;kBAEe;AACbrB,kBADa;AAEbO,kBAFa;AAGbI,kBAHa;AAIbR,UAJa;AAKbU,oCALa;AAMbC,8BANa;AAObC,4BAPa;AAQbC,sBARa;AASbC,oCATa;AAUbC,8BAVa;AAWbC,oCAXa;AAYbC,8BAZa;AAabC,gCAba;AAcbC;AAda,C;;;;;;;;;;;;;;;QC/ECC,O,GAAAA,O;AAHhB;AACA;;AAEO,SAASA,OAAT,CAAiBC,EAAjB,EAAoB;AACzB,MAAIC,WAAW,EAAf;AACA,OAAK,IAAI9F,CAAT,IAAc6F,EAAd,EAAkB;AAChB,QAAI,CAACA,GAAG1J,cAAH,CAAkB6D,CAAlB,CAAL,EAA2B;AAC3B,QAAI,QAAQ6F,GAAG7F,CAAH,CAAR,KAAkB,QAAlB,IAA8B6F,GAAG7F,CAAH,MAAU,IAA5C,EAAkD;AAChD,UAAI+F,aAAaH,QAAQC,GAAG7F,CAAH,CAAR,CAAjB;AACA,WAAK,IAAIa,CAAT,IAAckF,UAAd,EAA0B;AACxB,YAAI,CAACA,WAAW5J,cAAX,CAA0B0E,CAA1B,CAAL,EAAmC;AACnCiF,iBAAS9F,IAAI,GAAJ,GAAUa,CAAnB,IAAwBkF,WAAWlF,CAAX,CAAxB;AACD;AACF,KAND,MAMO;AACLiF,eAAS9F,CAAT,IAAc6F,GAAG7F,CAAH,CAAd;AACD;AACF;AACD,SAAO8F,QAAP;AACD,E;;;;;;;;;;;;QCVeE,a,GAAAA,a;AARhB;;;;;;;;AAQO,SAASA,aAAT,CAAuBC,WAAvB,EAAoC;AACzC,MAAI,OAAOA,WAAP,KAAuB,QAA3B,EAAqC;AACnC,WAAOA,WAAP;AACD;AACD,SAAOA,YAAYC,OAAZ,CAAoB,eAApB,EAAqC,EAArC,CAAP;AACD,C;;;;;;;;;;;;;;;QCXeC,U,GAAAA,U;;AAFhB;;AAEO,SAASA,UAAT,CAAoBpG,MAApB,EAA4B;AACjC,OAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIC,UAAUhE,MAA9B,EAAsC+D,GAAtC,EAA2C;AACzC,oBAAKC,UAAUD,CAAV,CAAL,EAAmB,UAASE,IAAT,EAAekG,GAAf,EAAmB;AACpC,UAAM,OAAOrG,OAAOqG,GAAP,CAAP,KAAuB,WAAvB,IAAsC,OAAOlG,IAAP,KAAgB,WAAxD,IACE,QAAOH,OAAOqG,GAAP,CAAP,MAAuB,QAAvB,IAAsC,QAAOlG,IAAP,yCAAOA,IAAP,OAAgB,QADxD,IAEEH,OAAOqG,GAAP,MAAgB,IAAhB,IAAsClG,SAAS,IAFrD,EAE6D;AACvDiG,mBAAWpG,OAAOqG,GAAP,CAAX,EAAwBlG,IAAxB;AACL,OAJD,MAKK;AACHH,eAAOqG,GAAP,IAAclG,IAAd;AACD;AACF,KATD;AAUD;AACD,SAAOH,MAAP;AACD,C;;;;;;;;;;;;kBCduBsG,oB;;AAFxB;;;;;;;;AAEe,SAASA,oBAAT,GAKP;AAAA,iFAAJ,EAAI;AAAA,MAJNC,OAIM,QAJNA,OAIM;AAAA,wBAHNxE,KAGM;AAAA,MAHNA,KAGM,8BAHE,UAGF;AAAA,uBAFNyB,IAEM;AAAA,MAFNA,IAEM,6BAFC,MAED;AAAA,MADNC,IACM,QADNA,IACM;;AACN,MAAM+C,WAAW,qBAAjB;AACA,MAAMC,gBAAgB,6BAAIF,QAAQG,UAAR,CAAmBC,QAAvB,GACnBC,IADmB,CACd;AAAA,WAASC,MAAMC,SAAN,KAAoBN,QAA7B;AAAA,GADc,CAAtB;AAEA,MAAIC,aAAJ,EAAmB;;AAEnB,MAAMM,SAAS9J,SAASC,aAAT,CAAuB,QAAvB,CAAf;AACA6J,SAAOhJ,SAAP,GAAmBgE,KAAnB;AACAgF,SAAOD,SAAP,GAAmBN,QAAnB;AACAO,SAAO/I,gBAAP,CAAwB,OAAxB,EAAiC;AAAA,WAAS,+BAAgB,EAAEzB,YAAF,EAASiH,UAAT,EAAeC,UAAf,EAAhB,CAAT;AAAA,GAAjC;AACA8C,UAAQG,UAAR,CAAmBM,YAAnB,CAAgCD,MAAhC,EAAwCR,QAAQU,WAAhD;AACD,E;;;;;;;;;;;;kBCfuBC,W;;AAHxB;;;;AACA;;;;AAEe,SAASA,WAAT,CAAqBC,GAArB,EAA0B;AAAA,MAC/B5F,IAD+B,GACJ4F,GADI,CAC/B5F,IAD+B;AAAA,MACzB6F,OADyB,GACJD,GADI,CACzBC,OADyB;AAAA,MAChBC,OADgB,GACJF,GADI,CAChBE,OADgB;;AAEvC,MAAID,OAAJ,EAAa;AACX,QAAIA,UAAU,CAAV,IAAeA,UAAU,CAA7B,EAAgC,MAAMvD,MAAM,8CAAN,CAAN;AAChCyD,yBAAWC,MAAX,CAAkBhG,IAAlB,EAAwB,EAAE6F,gBAAF,EAAWC,gBAAX,EAAxB,EACGG,IADH,CACQ,UAACC,IAAD,EAAU;AACd,6BAAOA,IAAP,EAAa,YAAb;AACD,KAHH;AAID;;AAED,MAAI,CAACL,OAAL,EAAc;AACZE,yBAAWC,MAAX,CAAkBhG,IAAlB,EACGiG,IADH,CACQ,UAACC,IAAD,EAAU;AACd,6BAAOA,IAAP,EAAa,WAAb;AACD,KAHH;AAID;AACF,C;;;;;;;;;;;;kBCFuBC,U;AAjBxB,SAASC,kBAAT,CAA4BlE,IAA5B,EAAkC;AAChC,MAAImE,aAAa,EAAjB;;AAEAnE,OAAKoE,OAAL,CAAa,UAAC3F,GAAD,EAAMjC,CAAN,EAAY;AACvBiC,QAAI2F,OAAJ,CAAY,UAAC1F,IAAD,EAAO2F,CAAP,EAAa;AACvBF,oBAAclJ,OAAOyD,IAAP,EAAagE,OAAb,CAAqB,IAArB,EAA2B,EAA3B,CAAd;AACA,UAAIjE,IAAIhG,MAAJ,GAAa4L,IAAI,CAArB,EAAwB;AACtBF,sBAAc,GAAd;AACD;AACF,KALD;AAMA,QAAInE,KAAKvH,MAAL,GAAc+D,IAAI,CAAtB,EAAyB;AACvB2H,oBAAc,IAAd;AACD;AACF,GAVD;AAWA,0CAAsCG,mBAAmBH,UAAnB,CAAtC;AACD;;AAEc,SAASF,UAAT,CAAoBP,GAApB,EAAyB;AAAA,MAC9B3D,IAD8B,GACf2D,GADe,CAC9B3D,IAD8B;AAAA,MACxBC,IADwB,GACf0D,GADe,CACxB1D,IADwB;;AAEtC,MAAMuE,mBAAmB,CAAC,MAAD,EAAS,KAAT,CAAzB;AACA,MAAMC,SAASzE,KAAK0E,WAAL,EAAf;AACA,MAAI,CAACF,iBAAiBG,QAAjB,CAA0B3E,IAA1B,CAAL,EAAsC;AACpC,UAAM,IAAIK,KAAJ,CAAU,4BAAV,CAAN;AACD;;AAED,MAAMuE,WAAW,OAAjB;AACA,MAAIC,aAAaL,iBAAiB,CAAjB,CAAjB;AACA,MAAIM,UAAU,EAAd;;AAEA,MAAIL,WAAW,MAAf,EAAuB;AACrBK,iDAA2CP,mBAAmBQ,KAAKC,SAAL,CAAe/E,IAAf,CAAnB,CAA3C;AACD;;AAED,MAAIwE,WAAW,KAAf,EAAsB;AACpBK,cAAUX,mBAAmBlE,IAAnB,CAAV;AACA4E,iBAAaJ,MAAb;AACD;;AAED,MAAMQ,cAAcxL,SAASC,aAAT,CAAuB,GAAvB,CAApB;AACAuL,cAAYC,YAAZ,CAAyB,MAAzB,EAAiCJ,OAAjC;AACAG,cAAYC,YAAZ,CAAyB,UAAzB,EAAwCN,QAAxC,SAAoDC,UAApD;AACApL,WAASE,IAAT,CAAcC,WAAd,CAA0BqL,WAA1B;AACAA,cAAYE,KAAZ;AACA1L,WAASE,IAAT,CAAcI,WAAd,CAA0BkL,WAA1B;AACD,C;;;;;;AC5CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,KAAwB,+BAA+B,SAA6E,CAAC,wEAAwE,oBAAoB,gCAAgC,+BAA+B,eAAe,+BAA+B,mBAAmB,MAAM,kBAAkB,uEAAuE,KAAK,KAAK,iBAAiB,kHAAkH,EAAE,4EAA4E,SAAS,UAAU,mUAAmU,oBAAoB,wBAAwB,iBAAiB,qBAAqB,gBAAgB,iBAAiB,qOAAqO,eAAe,yBAAyB,0BAA0B,SAAS,6CAA6C,uGAAuG,+TAA+T,qBAAqB,8IAA8I,uCAAuC,6CAA6C,YAAY,IAAI,4BAA4B,wBAAwB,sJAAsJ,kFAAkF,yHAAyH,+QAA+Q,kDAAkD,cAAc,qBAAqB,mCAAmC,wCAAwC,kCAAkC,kFAAkF,GAAG,mIAAmI,EAAE,oHAAoH,sHAAsH,sLAAsL,oBAAoB,qHAAqH,oCAAoC,4OAA4O,ibAAib,qBAAqB,skBAAskB,oBAAoB,0HAA0H,mBAAmB,0jBAA0jB,uBAAuB,yBAAyB,cAAc,2CAA2C,MAAM,iDAAiD,kDAAkD,uCAAuC,kDAAkD,sBAAsB,oDAAoD,qFAAqF,wBAAwB,oDAAoD,qFAAqF,uBAAuB,oCAAoC,4dAA4d,0BAA0B,SAAS,oDAAoD,+BAA+B,0DAA0D,iEAAiE,qBAAqB,WAAW,6HAA6H,6GAA6G,iGAAiG,4DAA4D,yCAAyC,0CAA0C,2BAA2B,4GAA4G,uBAAuB,sDAAsD,0BAA0B,iBAAiB,oCAAoC,mDAAmD,6FAA6F,gBAAgB,wBAAwB,gCAAgC,wCAAwC,kFAAkF,8NAA8N,6DAA6D,8HAA8H,qBAAqB,oCAAoC,wBAAwB,OAAO,+DAA+D,yBAAyB,WAAW,uBAAuB,6BAA6B,oBAAoB,6DAA6D,oCAAoC,iBAAiB,iCAAiC,2BAA2B,gBAAgB,yCAAyC,6CAA6C,6EAA6E,0BAA0B,4DAA4D,2BAA2B,iCAAiC,uBAAuB,8EAA8E,yBAAyB,mEAAmE,gGAAgG,2MAA2M,qBAAqB,wKAAwK,oBAAoB,2HAA2H,sBAAsB,wKAAwK,qCAAqC,yIAAyI,mBAAmB,WAAW,cAAc,8EAA8E,yBAAyB,miBAAmiB,qBAAqB,0aAA0a,sBAAsB,2NAA2N,qBAAqB,qEAAqE,sBAAsB,uEAAuE,uBAAuB,yEAAyE,oBAAoB,mEAAmE,GAAG,E;;;;;;;;;;;;;;;ACVzsY;;;;;kBAwBSG,O;;;;;;kBAASvF,O;;;;;AAtBlB,IAAMwF,MAAM,OAAOC,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOnH,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOoH,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAAnI;;AAEO,IAAMC,0DAAyB,SAAzBA,sBAAyB,CAASH,GAAT,EAAc;AAClDA,MAAII,WAAJ,GAAkBL,cAAlB;AACAC,MAAIK,WAAJ,GAAkB7F,cAAlB;;AAEA;AACAwF,MAAIM,IAAJ,GAAWN,IAAIM,IAAJ,IAAY,EAAvB;AACAN,MAAIM,IAAJ,CAAS9F,OAAT,GAAmBA,cAAnB;AACAwF,MAAIM,IAAJ,CAASP,OAAT,GAAmBA,cAAnB;AACD,CARM;;AAUP,IAAI,IAAJ,EACyB;AACvBI,yBAAuBH,GAAvB;AACD;;AAEM,IAAIO,oCAAcpH,SAAlB;AACP,IAAI,OAAOqH,kBAAP,KAA8B,WAAlC,EAA+C;AAC7C,UAFSD,WAET,iBAAcC,kBAAd;AACD;;kBAGcT,c;;;;;;;;;;;;;;;;;kQCzBf;;;AAQA;;;AAFA;;;;;oBA8+BSvF,O;;;;AAn/BT;;IAAYhD,E;;AACZ;;;;AAEA;;;;AACA;;;;AAIA;;AACA;;;;AACA;;AACA;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;;;;;;;;AAEA;AACO,IAAMuI,4BAAU,SAAVA,OAAU,GAAwB;AAAA;;AAAA,MAAdU,OAAc,uEAAJ,EAAI;;AAC7C,MAAI,gBAAgBV,OAAhB,KAA4B,KAAhC,EAAuC;AACrC,WAAO,IAAIA,OAAJ,CAAYU,OAAZ,CAAP;AACD;;AAED,OAAKC,EAAL,GAAUA,WAAV,CAL6C,CAK/B;AACd,OAAKlJ,EAAL,GAAUA,EAAV;;AAEA,MAAMmJ,kBAAkB,IAAxB;AACA,MAAMC,iBAAiB;AACrBC,6BAAyB,IADJ;AAErBC,wBAAoB,KAFC;;AAIrBC,eAAW5H,SAJU,EAIC;AACtB6H,sBAAkB7H,SALG,EAKQ;;AAE7B;AACA;;AAEA8H,WAAO9H,SAVc;AAWrB+H,eAAW,IAXU;;AAarBC,cAAUhI,SAbW;;AAerBiI,WAAOjI,SAfc;AAgBrBkI,WAAO,cAhBc;;AAkBrBC,YAAQ,CACN,SADM,EACK,SADL,EACgB,SADhB,EAC2B,SAD3B,EACsC,SADtC,EACiD,SADjD,EAEN,SAFM,EAEK,SAFL,EAEgB,SAFhB,EAE2B,SAF3B,EAEsC,SAFtC,EAEiD,SAFjD,EAGN,SAHM,EAGK,SAHL,EAGgB,SAHhB,EAG2B,SAH3B,EAGsC,SAHtC,EAGiD,SAHjD,EAIN,SAJM,EAIK,SAJL,EAIgB,SAJhB,EAI2B,SAJ3B,EAIsC,SAJtC,EAIiD,SAJjD,EAKN,SALM,EAKK,SALL,EAKgB,SALhB,CAlBa;;AA0BrBC,kBAAc,EA1BO;AA2BrBC,QAAI;AACFC,yBAAmB;AADjB,KA3BiB;AA8BrBC,WAAO;AACLC,8BAAwB;AADnB,KA9Bc;;AAkCrBC,aAAS,iBAlCY;AAmCrBC,YAAQ,EAnCa;AAoCrBC,kBAAc,EApCO;AAqCrBC,wBAAoB5I,SArCC;AAsCrB6I,kBAAc,EAtCO;AAuCrBC,uBAAmB,IAvCE;AAwCrBC,aAAS,SAxCY;AAyCrBC,gBAAYhJ,SAzCS;AA0CrBiJ,mBAAejJ,SA1CM;;AA4CrBkJ,aAASlJ,SA5CY,EA4CD;;AAEpB;AACAwB,UAAMxB,SA/Ce;AAgDrBmJ,aAAS,KAhDY;AAiDrBC,gBAAYpJ,SAjDS;AAkDrBqJ,YAAQ;AACNC,YAAM,IADA;AAEN1N,gBAAU,OAFJ;AAGN2N,iBAAW,KAHL;AAINxJ,aAAO;AACLyJ,uBAAe;AADV,OAJD;AAONC,kBAAY;AACVC,gBAAQ,CADE,EACC;AACXC,eAAO,CAFG,CAED;AAFC,OAPN;AAWNnP,eAAS;AACP8O,cAAM,IADC;AAEPM,iBAAS;AAFF,OAXH;AAeNzI,YAAMnB;AAfA,KAlDa;;AAoErB6J,UAAM,EApEe;AAqErBC,WAAO,EArEc;AAsErBC,UAAM;AACJ;AADI,KAtEe;AAyErBtO,aAAS;AACPd,WAAK;AADE,KAzEY;AA4ErBqP,WAAO;AACLC,aAAO;AACLC,gBAAQ;AACNC,mBAAS;AADH;AADH,OADF;AAMLC,SAAG,CANE;AAOLd,YAAM,IAPD;AAQLe,mBAAa;AARR,KA5Ec;AAsFrB7P,aAAS;AACP8P,kBAAY,IADL;AAEPrE,cAAQ;AACN;AADM;AAFD,KAtFY;AA4FrBnK,gBAAY;AACV;AADU,KA5FS;AA+FrB2F,UAAM;AACJ8I,aAAO,IADH;AAEJC,iBAAW;AACVL,iBAAS,IADC;AAEVM,mBAAW,IAFD;AAGVC,kBAAU;AAHA,OAFP;AAOLC,kBAAY,oBAACC,CAAD,EAAIrG,OAAJ,EAAgB;AAC3B,YAAMsG,gBAAgB,MAAKC,IAAL,CAAUC,UAAV,CAAqBxD,EAArB,CAAwByD,QAAxB,EAAtB;AACA,YAAMvI,MAAMoI,cAAcI,MAAd,CAAqB,UAACC,IAAD,EAAOC,IAAP;AAAA,iBAAgBD,OAAOC,KAAKpQ,KAA5B;AAAA,SAArB,EAAwD,CAAxD,CAAZ;AACA,uCAAgB0H,GAAhB;AACA;AAXI,KA/Fe;AA4GtB2I,UAAM;AACJpM,SAAG;AACDsK,cAAM;AADL;AADC,KA5GgB;AAiHtB+B,8BAA0B;AACxB/B,YAAMtJ,SADkB;AAExB8E,iBAAW;AAFa,KAjHJ;AAqHtBwG,cAAU,KArHY;AAsHtBC,WAAO;AACLC,cAAQ;AADH,KAtHe;AAyHtBC,qBAAiB,KAzHK;AA0HtBC,YAAQ;AACNC,aAAO,IADD;AAENC,oBAAc,IAFR;AAGNC,gBAAU;AACRvC,cAAM,KADE;AAERwC,wBAAgB,UAFR;AAGRC,kBAAU;AAHF,OAHJ;AAQNC,6BAAuB,KARjB;AASNC,aAAO,IATD;AAUNC,gBAAU,YAVJ;AAWNC,mBAAa;AAXP,KA1Hc;AAuItBC,WAAO,KAvIe;AAwItBC,WAAO,KAxIe;AAyItBC,eAAW,KAzIW;AA0IrBC,gBAAY;AACVC,WAAK,OADK;AAEVC,eAAS;AACPnD,cAAM,IADC;AAEPS,cAAM,GAFC;AAGPD,eAAO;AAHA,OAFC;AAOV4C,kBAAY;AAPF,KA1IS;AAmJrBC,aAAS;AAnJY,GAAvB;;AAsJA,OAAKrL,MAAL,gBAAmB,4BAAWmG,cAAX,EAA2BH,OAA3B,CAAnB;;AAEA,MAAIA,QAAQsF,OAAZ,EAAqB;AACnB,QAAI,CAACC,gBAASvF,QAAQsF,OAAjB,CAAL,EAA+B;AAC7BE,cAAQC,GAAR,CAAY,0BAAZ,EAAwCzF,QAAQsF,OAAhD;AACD;AACD,SAAKtL,MAAL,CAAY6G,MAAZ,GAAqB0E,gBAASvF,QAAQsF,OAAjB,EAA0BzE,MAA/C;AACD;;AAED,MAAI,KAAK7G,MAAL,CAAYE,IAAhB,EAAsB;AACpB;AACA,SAAKF,MAAL,CAAYE,IAAZ,GAAmBwL,kBAAkB,KAAK1L,MAAL,CAAYE,IAA9B,CAAnB;AACD;;AAED;AACA,MAAG,KAAKF,MAAL,CAAYE,IAAZ,IAAoB,KAAKF,MAAL,CAAYE,IAAZ,CAAiB2E,QAAjB,CAA0B,QAA1B,CAAvB,EAA4D;AAC1D,SAAK7E,MAAL,CAAY+K,KAAZ,GAAoB,IAApB;AACA,SAAK/K,MAAL,CAAYE,IAAZ,GAAmB,KAAKF,MAAL,CAAYE,IAAZ,CAAiB2C,OAAjB,CAAyB,QAAzB,EAAmC,EAAnC,CAAnB;AACA,SAAK7C,MAAL,CAAY+H,MAAZ,CAAmBC,IAAnB,GAA0B,KAA1B;AACA,SAAKhI,MAAL,CAAY2L,QAAZ,GAAuB,QAAvB;AACA,SAAK3L,MAAL,CAAYoH,MAAZ,GAAqB,CAAC,KAAD,EAAQ,KAAR,CAArB;AACA,SAAKpH,MAAL,CAAY6G,MAAZ,GAAqB,CACnB,KAAK7G,MAAL,CAAY6G,MAAZ,CAAmB,CAAnB,CADmB,EAEnB,KAAK7G,MAAL,CAAY6G,MAAZ,CAAmB,CAAnB,CAFmB,CAArB;AAID;;AAED;AACA,MAAI,KAAK7G,MAAL,CAAY2L,QAAhB,EAA0B;AACxB,SAAK3L,MAAL,CAAY6H,OAAZ,GAAsB,IAAtB;AACD;;AAED;AACA,MAAI,KAAK7H,MAAL,CAAYgL,SAAhB,EAA2B;AACzB,SAAKhL,MAAL,CAAY+H,MAAZ,CAAmBC,IAAnB,GAA0B,KAA1B;AACA,SAAKhI,MAAL,CAAYuI,IAAZ,GAAmB;AACjB/K,SAAG;AACDwK,cAAM;AADL,OADc;AAIjBtK,SAAG;AACDsK,cAAM;AADL;AAJc,KAAnB;AAQA,SAAKhI,MAAL,CAAY8J,IAAZ,GAAmB;AACjBtM,SAAG;AACDwK,cAAM;AADL,OADc;AAIjBtK,SAAG;AACDsK,cAAM;AADL;AAJc,KAAnB;AAQD;;AAED;AACA,MAAI,KAAKhI,MAAL,CAAYsG,SAAhB,EAA2B;AACzB,SAAKsF,EAAL,CAAQ,KAAK5L,MAAL,CAAYsG,SAApB;AACD;;AAED,MAAIN,QAAQ+B,MAAR,KAAmBrJ,SAAnB,IAAgC,CAACsH,QAAQ+B,MAA7C,EAAqD;AACnD,SAAK/H,MAAL,CAAY+H,MAAZ,gBACK/B,OADL;AAEEgC,YAAM;AAFR;AAID;;AAED,MAAIhC,QAAQwC,KAAR,IAAiBxC,QAAQwC,KAAR,CAAcqD,OAAnC,EAA4C;AAC1C;AACA,SAAK7L,MAAL,CAAY6G,MAAZ,GAAqBb,QAAQwC,KAAR,CAAcqD,OAAnC;AACD;;AAED,MAAI,KAAK7L,MAAL,CAAY+H,MAAZ,IACG,KAAK/H,MAAL,CAAY+H,MAAZ,CAAmB7O,OADtB,IAEG,KAAK8G,MAAL,CAAY+H,MAAZ,CAAmB7O,OAAnB,CAA2B8O,IAA3B,KAAoC,KAFvC,IAGG,KAAKhI,MAAL,CAAY9G,OAAZ,CAAoB8O,IAApB,KAA6BtJ,SAHpC,EAG+C;AAC7C,SAAKsB,MAAL,CAAY9G,OAAZ,GAAsB,EAAE8O,MAAM,KAAR,EAAtB;AACD;;AAED,OAAK8D,OAAL,GAAe,IAAI/L,gBAAJ,CAAY,KAAKC,MAAjB,CAAf;AACA,OAAKwJ,IAAL,GAAY;AACVuC,eAAW,KADD;AAEVC,eAAW,KAFD;AAGVvC,gBAAY,CAAE,eAAF;AAHF,GAAZ;;AAMAnE,UAAQ2G,OAAR,CAAgBlO,IAAhB,CAAqB,IAArB;;AAEA,MAAI,KAAKiC,MAAL,CAAYqG,kBAAhB,EAAoC;AAClC,SAAK6F,OAAL;AACD;;AAED,MAAI,CAAC,CAAC,KAAKlM,MAAL,CAAY4H,OAAlB,EAA2B;AACzB,SAAKuE,MAAL,CAAY,KAAKnM,MAAL,CAAY4H,OAAxB;AACD;AACD,OAAK5H,MAAL,CAAYoM,oBAAZ,GAAmCzS,SAAS0S,eAA5C;;AAEA,MAAI,CAAC,KAAKrM,MAAL,CAAYiH,KAAZ,CAAkBC,sBAAvB,EAA+C;AAC7C,SAAKlH,MAAL,CAAYG,IAAZ,CAAiBkJ,UAAjB,GAA8B,YAAM,CAAE,CAAtC;AACD;;AAED,MAAIrD,QAAQ7F,IAAR,IAAgB6F,QAAQ7F,IAAR,CAAakJ,UAAjC,EAA6C;AAC3C,SAAKrJ,MAAL,CAAYG,IAAZ,CAAiBkJ,UAAjB,GAA8B,UAACC,CAAD,EAAIrG,OAAJ,EAAgB;AAC5C,UAAMqJ,WAAWtG,QAAQ7F,IAAR,CAAakJ,UAAb,CAAwBkD,IAAxB,CAA6B,IAA7B,EAAmCjD,CAAnC,EAAsCrG,OAAtC,CAAjB;AACAqJ;;AAEA,UAAI,MAAKtM,MAAL,CAAYiH,KAAZ,CAAkBC,sBAAtB,EAA8C;AAC5C,YAAMqC,gBAAgB,MAAKC,IAAL,CAAUC,UAAV,CAAqBxD,EAArB,CAAwByD,QAAxB,EAAtB;AACA,YAAMvI,MAAMoI,cAAcI,MAAd,CAAqB,UAACC,IAAD,EAAOC,IAAP;AAAA,iBAAgBD,OAAOC,KAAKpQ,KAA5B;AAAA,SAArB,EAAwD,CAAxD,CAAZ;AACA,uCAAgB0H,GAAhB;AACD;AACF,KATD;AAUD;AAEF,CA/QM;;AAkRPmE,QAAQkH,SAAR,GAAoB,EAAEC,SAAS,EAAX,EAApB;AACA,IAAI,OAAOhH,MAAP,KAAkB,WAAtB,EAAmC;AACjCH,UAAQkH,SAAR,CAAkBC,OAAlB,GAA4B,yBAAUnH,OAAV,CAA5B;AACD;AACDA,QAAQ2G,OAAR,GAAkB,EAAlB;;AAEA3G,QAAQoH,QAAR,GAAmB,UAAUC,IAAV,EAAgBC,OAAhB,EAAyB;AAC1CtH,UAAQkH,SAAR,CAAkBG,IAAlB,IAA0BrH,QAAQkH,SAAR,CAAkBG,IAAlB,KAA2B,EAArD;AACA,kBAAKC,OAAL,EAAc,UAASC,MAAT,EAAiB9J,GAAjB,EAAqB;AACjCuC,YAAQkH,SAAR,CAAkBG,IAAlB,EAAwB5J,GAAxB,IAA+B8J,MAA/B;AACD,GAFD;AAGD,CALD;;AAOAvH,QAAQhC,IAAR,GAAe,UAAS5G,MAAT,EAAgB;AAC7B,MAAI,CAACE,UAAUhE,MAAf,EAAuB,OAAO0M,QAAQ2G,OAAf;AACvB,MAAML,KAAKlP,OAAOoQ,QAAP,GAAkBpQ,MAAlB,GAA2B/C,SAASoT,aAAT,CAAuBrQ,MAAvB,CAAtC;AACA,MAAIT,QAAQ,IAAZ;AACA,kBAAKqJ,QAAQ2G,OAAb,EAAsB,UAASe,MAAT,EAAgB;AACpC,QAAIpB,MAAMoB,OAAOhN,MAAP,CAAcsG,SAAxB,EAAkC;AAChCrK,cAAQ+Q,MAAR;AACA,aAAO,KAAP;AACD;AACF,GALD;AAMA,SAAO/Q,KAAP;AACD,CAXD;;AAcE;AACA;;AAEFqJ,QAAQ/G,SAAR,CAAkB0O,UAAlB,GAA+B,UAASpJ,GAAT,EAAa;AAC1C,MAAI,KAAK7D,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,0EAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAZ;AACvB,MAAMwJ,OAAO,KAAKxJ,MAAlB;AACA,kBAAK6D,GAAL,EAAU,UAAShH,IAAT,EAAekG,GAAf,EAAmB;AAC3B;AACA,QAAIA,QAAQ,WAAZ,EAAyB;AACvBA,YAAM,MAAN;AACD;AACDyG,SAAKzG,GAAL,IAAYlG,IAAZ;AACD,GAND;AAOA,SAAO,IAAP;AACD,CAdD;;AAgBAyI,QAAQ/G,SAAR,CAAkB1F,IAAlB,GAAyB,UAASqU,EAAT,EAAY;AACjCA,KAAGrU,IAAH,CAAQ,IAAR;AACA,SAAO,IAAP;AACH,CAHD;;AAKAyM,QAAQ/G,SAAR,CAAkB4O,YAAlB,GAAiC,UAAStJ,GAAT,EAAa;AAC5C,MAAI,KAAK7D,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,4EAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAZ;AACvB,OAAKA,MAAL,GAAc,4BAAW,KAAKA,MAAhB,EAAwB6D,GAAxB,CAAd;AACA,SAAO,IAAP;AACD,CAPD;;AASAyB,QAAQ/G,SAAR,CAAkBsI,MAAlB,GAA2B,UAASzG,GAAT,EAAa;AACtC,MAAI,KAAKJ,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,8EAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAY6G,MAAnB;AACvB,OAAK7G,MAAL,CAAY6G,MAAZ,GAAsBzG,eAAezH,KAAf,GAAuByH,GAAvB,GAA6B,EAAnD;AACA,SAAO,IAAP;AACD,CAPD;;AASAkF,QAAQ/G,SAAR,CAAkBuI,YAAlB,GAAiC,UAASjD,GAAT,EAAa;AAC5C,MAAI,KAAK7D,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,0FAAZ;AACD;AACD,MAAMvF,kBAAkB,IAAxB;AACA,MAAI,CAACtJ,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAY8G,YAAnB;AACvB,MAAIjD,QAAQ,IAAZ,EAAkB;AAChB,SAAK7D,MAAL,CAAY8G,YAAZ,GAA2B,EAA3B;AACD,GAFD,MAGK,IAAI,QAAOjD,GAAP,yCAAOA,GAAP,OAAe,QAAnB,EAA6B;AAChC,oBAAKA,GAAL,EAAU,UAASpK,KAAT,EAAgBsJ,GAAhB,EAAoB;AAC5BmD,sBAAgBlG,MAAhB,CAAuB8G,YAAvB,CAAoC/D,GAApC,IAA4CtJ,QAAQA,KAAR,GAAgB,IAA5D;AACD,KAFD;AAGD;AACD,SAAO,IAAP;AACD,CAfD;;AAiBA6L,QAAQ/G,SAAR,CAAkB4B,IAAlB,GAAyBA,cAAzB;;AAEAmF,QAAQ/G,SAAR,CAAkBuJ,UAAlB,GAA+B,UAASzG,GAAT,EAAa;AAC1C,MAAI,KAAKrB,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,sFAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAY8H,UAAnB;AACvB,MAAI,OAAOzG,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAP,KAAe,UAA9C,EAA0D;AACxD,SAAKrB,MAAL,CAAY8H,UAAZ,GAAyBzG,GAAzB;AACD,GAFD,MAGK;AACH,SAAKrB,MAAL,CAAY8H,UAAZ,GAAyBpJ,SAAzB;AACD;AACD,SAAO,IAAP;AACD,CAZD;;AAcA4G,QAAQ/G,SAAR,CAAkB6O,OAAlB,GAA4B,YAAU;AACpC,MAAM3F,UAAU,KAAKA,OAAL,EAAhB;AACA,MAAMvH,OAAO,KAAKF,MAAL,CAAYE,IAAzB;AACA,MAAM+C,UAAU,KAAK2I,EAAL,EAAhB;;AAEE;AACF,MAAItG,QAAQkH,SAAR,CAAkB/E,OAAlB,KACGnC,QAAQkH,SAAR,CAAkB/E,OAAlB,EAA2BvH,IAA3B,CADP,EACwC;AAClCoF,YAAQkH,SAAR,CAAkB/E,OAAlB,EAA2BvH,IAA3B,EAAiCkN,OAAjC,CAAyCvU,IAAzC,CAA8C,IAA9C;AACL;;AAEC;AACF,MAAIoK,OAAJ,EAAa;AACXA,YAAQoK,SAAR,GAAoB,EAApB;AACD;AACD,OAAK7D,IAAL,CAAUuC,SAAV,GAAsB,KAAtB;AACA,OAAKvC,IAAL,CAAUwC,SAAV,GAAsB,KAAtB;AACA,OAAKxC,IAAL,CAAUC,UAAV,GAAuB,EAAvB;AACA,SAAO,IAAP;AACD,CAnBD;;AAqBAnE,QAAQ/G,SAAR,CAAkBqN,EAAlB,GAAuB,UAASlP,MAAT,EAAgB;AACrC,MAAMwJ,kBAAkB,IAAxB;AACA,MAAI,CAACtJ,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAYuG,gBAAnB;AACvB+G,WAAS,YAAU;AACjB,QAAI5Q,UAAUA,WAAW,IAAzB,EAA+B;AAC7B,UAAIA,OAAOoQ,QAAX,EAAqB;AACnB5G,wBAAgBlG,MAAhB,CAAuBuG,gBAAvB,GAA0C7J,MAA1C;AACD,OAFD,MAGK,IAAI/C,SAASoT,aAAb,EAA4B;AAC/B7G,wBAAgBlG,MAAhB,CAAuBuG,gBAAvB,GAA0C5M,SAASoT,aAAT,CAAuBrQ,MAAvB,CAA1C;AACD;AACF,KAPD,MAQK;AACHwJ,sBAAgBlG,MAAhB,CAAuBuG,gBAAvB,GAA0C7H,SAA1C;AACD;AACF,GAZD;AAaA,SAAO,IAAP;AACD,CAjBD;;AAmBA4G,QAAQ/G,SAAR,CAAkBgP,MAAlB,GAA2B,UAASC,GAAT,EAAa;AACtC,MAAI,KAAKxN,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,2CAAZ;AACD;AACD,SAAO,IAAP;AACD,CALD;;AAOA;AACAnG,QAAQ/G,SAAR,CAAkB4I,OAAlB,GAA4B,UAASnL,GAAT,EAAa;AACvC,MAAI,KAAKgE,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,gFAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAYmH,OAAnB;AACvB,OAAKnH,MAAL,CAAYmH,OAAZ,GAAuBnL,MAAMZ,OAAOY,GAAP,CAAN,GAAoB,iBAA3C;AACA,SAAO,IAAP;AACD,CAPD;;AASAsJ,QAAQ/G,SAAR,CAAkB6I,MAAlB,GAA2B,UAAShH,GAAT,EAAa;AACtC,MAAI,KAAKJ,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,8EAAZ;AACD;;AAED,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAYoH,MAAnB;AACvB,OAAKpH,MAAL,CAAYoH,MAAZ,GAAsBhH,eAAezH,KAAf,GAAuByH,GAAvB,GAA6B,EAAnD;;AAEAqN,YAAU,IAAV;;AAEA,SAAO,IAAP;AACD,CAXD;;AAaA,SAASA,SAAT,CAAmBvH,eAAnB,EAAmC;AACjC;AACA,MAAIA,gBAAgB/F,IAAhB,GAAuB,CAAvB,EAA0BvH,MAA1B,KAAqC,CAArC,IAA0C,CAAC,gCAAasN,gBAAgB/F,IAAhB,GAAuB,CAAvB,EAA0B,CAA1B,CAAb,CAA/C,EAA2F;AACzF+F,oBAAgB4F,OAAhB,CAAwB4B,YAAxB,CAAqC,CAArC,EAAwC,UAASjU,KAAT,EAAgB4C,KAAhB,EAAsB;AAC5D,UAAI6J,gBAAgBlG,MAAhB,CAAuBoH,MAAvB,CAA8B/K,QAAM,CAApC,CAAJ,EAA4C;AAC1C,eAAO,kCAAcjB,OAAO8K,gBAAgBlG,MAAhB,CAAuBoH,MAAvB,CAA8B/K,QAAM,CAApC,CAAP,CAAd,CAAP;AACD;AACD,aAAO,kCAAc5C,KAAd,CAAP;AACD,KALuC,CAKtC8S,IALsC,CAKjCrG,eALiC,CAAxC;AAMD,GAPD,MAQK;AACHA,oBAAgB4F,OAAhB,CAAwB6B,SAAxB,CAAkC,CAAlC,EAAqC,UAASlU,KAAT,EAAgB4C,KAAhB,EAAsB;AACzD,UAAIA,QAAQ,CAAR,IAAa6J,gBAAgBlG,MAAhB,CAAuBoH,MAAvB,CAA8B/K,QAAM,CAApC,CAAjB,EAAyD;AACvD,eAAO,kCAAcjB,OAAO8K,gBAAgBlG,MAAhB,CAAuBoH,MAAvB,CAA8B/K,QAAM,CAApC,CAAP,CAAd,CAAP;AACD;AACD,aAAO,kCAAc5C,KAAd,CAAP;AACD,KALoC,CAKnC8S,IALmC,CAK9BrG,eAL8B,CAArC;AAMD;AACF;;AAEDZ,QAAQ/G,SAAR,CAAkB8I,YAAlB,GAAiC,UAASxD,GAAT,EAAa;AAC5C,MAAI,KAAK7D,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,0FAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAYqH,YAAnB;AACvB,MAAIxD,QAAQ,IAAZ,EAAkB;AAChB,SAAK7D,MAAL,CAAYqH,YAAZ,GAA2B,EAA3B;AACD,GAFD,MAGK,IAAI,QAAOxD,GAAP,yCAAOA,GAAP,OAAe,QAAnB,EAA6B;AAChC,oBAAKA,GAAL,EAAU,UAASpK,KAAT,EAAgBsJ,GAAhB,EAAoB;AAC5B,WAAK/C,MAAL,CAAYqH,YAAZ,CAAyBtE,GAAzB,IAAiCtJ,QAAQA,KAAR,GAAgB,IAAjD;AACD,KAFS,CAER8S,IAFQ,CAEH,IAFG,CAAV;AAGD;;AAEDqB,YAAU,IAAV;;AAEA,SAAO,IAAP;AACD,CAjBD;;AAmBA,SAASC,aAAT,OAAkD;AAAA,MAAzB3H,eAAyB,QAAzBA,eAAyB;AAAA,MAARzM,KAAQ,QAARA,KAAQ;;AAChD,MAAIyM,gBAAgBlG,MAAhB,CAAuBsH,kBAA3B,EAA8C;AAC5C,QAAIwG,qBAAqBrU,KAAzB;AACAyM,oBAAgBlG,MAAhB,CAAuBsH,kBAAvB,CAA0C/C,OAA1C,CAAkD,0BAAkB;AAClE,UAAIwJ,eAAenV,MAAf,GAAwB,CAA5B,EAA+B;AAC7B,YAAIoV,YAAYD,eAAe,CAAf,CAAhB;AACA,YAAIC,UAAUvO,IAAV,CAAehG,KAAf,CAAJ,EAA0B;AACxBqU,+BAAqBC,eAAe,CAAf,CAArB;AACD;AACF;AACF,KAPD;AAQA,WAAO,kCAAcD,kBAAd,CAAP;AACD;AACD,MAAI5H,gBAAgBlG,MAAhB,CAAuBqH,YAAvB,CAAoC5N,KAApC,CAAJ,EAAgD;AAC9C,WAAO,kCAAc2B,OAAO8K,gBAAgBlG,MAAhB,CAAuBqH,YAAvB,CAAoC5N,KAApC,CAAP,CAAd,CAAP;AACD;AACD,SAAO,kCAAcA,KAAd,CAAP;AACD;;AAED,SAASmU,SAAT,CAAmB1H,eAAnB,EAAmC;AACjC;AACA,MAAI,CAACA,gBAAgBlG,MAAhB,CAAuBiO,qBAA5B,EAAmD;AACjD;AACA,QAAI/H,gBAAgB/F,IAAhB,GAAuB,CAAvB,EAA0BvH,MAA1B,KAAqC,CAArC,IAA0C,CAAC,gCAAasN,gBAAgB/F,IAAhB,GAAuB,CAAvB,EAA0B,CAA1B,CAAb,CAA/C,EAA2F;AACzF+F,sBAAgBlG,MAAhB,CAAuBiO,qBAAvB,GAA+C,KAA/C;AACD,KAFD,MAEO;AACL/H,sBAAgBlG,MAAhB,CAAuBiO,qBAAvB,GAA+C,QAA/C;AACD;AACF;;AAED,MAAI/H,gBAAgBlG,MAAhB,CAAuBiO,qBAAvB,KAAiD,KAAjD,IACC/H,gBAAgBlG,MAAhB,CAAuBiO,qBAAvB,KAAiD,MADtD,EAC8D;AAC5D/H,oBAAgB4F,OAAhB,CAAwB4B,YAAxB,CAAqC,CAArC,EAAwC,UAASjU,KAAT,EAAe;AACrD,aAAOoU,cAAc,EAAE3H,gCAAF,EAAmBzM,YAAnB,EAAd,CAAP;AACD,KAFuC,CAEtC8S,IAFsC,CAEjCrG,eAFiC,CAAxC;AAGD;;AAED,MAAIA,gBAAgBlG,MAAhB,CAAuBiO,qBAAvB,KAAiD,QAAjD,IACC/H,gBAAgBlG,MAAhB,CAAuBiO,qBAAvB,KAAiD,MADtD,EAC8D;AAC5D/H,oBAAgB4F,OAAhB,CAAwB6B,SAAxB,CAAkC,CAAlC,EAAqC,UAASlU,KAAT,EAAe;AAClD,aAAOoU,cAAc,EAAE3H,gCAAF,EAAmBzM,YAAnB,EAAd,CAAP;AACD,KAFoC,CAEnC8S,IAFmC,CAE9BrG,eAF8B,CAArC;AAGD;AACF;;AAEDZ,QAAQ/G,SAAR,CAAkBkJ,OAAlB,GAA4B,UAASzL,GAAT,EAAa;AACrC,MAAI,CAACY,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAY,SAAZ,CAAP;AACvB,OAAKA,MAAL,CAAY,SAAZ,IAA0BhE,MAAMZ,OAAOY,GAAP,CAAN,GAAoB,IAA9C;AACA,SAAO,IAAP;AACH,CAJD;;AAMAsJ,QAAQ/G,SAAR,CAAkB2P,OAAlB,GAA4B,YAAU;AAClC,MAAI,KAAK1E,IAAL,CAAUwC,SAAd,EAAyB;AACvB,SAAKoB,OAAL;AACD;AACD,MAAI,KAAKxB,EAAL,EAAJ,EAAe;AACb,SAAKA,EAAL,GAAUyB,SAAV,GAAsB,EAAtB;AACA,QAAMa,UAAU5I,QAAQkH,SAAR,CAAkBC,OAAlB,CAA0ByB,OAA1C;AACA,QAAIA,QAAQ/B,MAAZ,EAAoB;AAClB+B,cAAQ/B,MAAR,CAAezK,KAAf,CAAqB,IAArB,EAA2B9E,SAA3B;AACD;AACF;AACD,SAAO,IAAP;AACH,CAZD;;AAcA0I,QAAQ/G,SAAR,CAAkBoI,KAAlB,GAA0B,UAAS3K,GAAT,EAAa;AACrC,MAAI,KAAKgE,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,4EAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAY2G,KAAnB;AACvB,OAAK3G,MAAL,CAAY2G,KAAZ,GAAqB3K,MAAMZ,OAAOY,GAAP,CAAN,GAAoB,IAAzC;AACA,SAAO,IAAP;AACD,CAPD;;AASAsJ,QAAQ/G,SAAR,CAAkB2N,OAAlB,GAA4B,YAAU;AAClC,MAAMhG,kBAAkB,IAAxB;;AAEA,MAAI,CAAC,KAAK0F,EAAL,EAAL,EAAgB;AACd,UAAS,KAAK5L,MAAL,CAAYsG,SAArB;AACA;AACD;;AAEDgH,WAAS,YAAU;AACjB,QAAIpH,gBAAgBsD,IAAhB,CAAqBwC,SAAzB,EAAoC;AAClC9F,sBAAgBkH,OAAhB;AACD;AACD,QAAIlH,gBAAgB0F,EAAhB,EAAJ,EAA0B;AACxB1F,sBAAgB0F,EAAhB,GAAqByB,SAArB,GAAiC,EAAjC;AACA,UAAMc,SAAS7I,QAAQkH,SAAR,CAAkBC,OAAlB,CAA0B2B,OAAzC;AACA,UAAID,OAAOhC,MAAX,EAAmB;AACjBgC,eAAOhC,MAAP,CAActT,IAAd,CAAmBqN,eAAnB;AACD;AACDA,sBAAgBsD,IAAhB,CAAqBuC,SAArB,GAAiC,IAAjC;AACD;AACF,GAZD;;AAcA,SAAO,IAAP;AACH,CAvBD;;AAyBAzG,QAAQ/G,SAAR,CAAkB4N,MAAlB,GAA2B,YAA6B;AAAA;;AAAA,MAApBvE,OAAoB,uEAAVlJ,SAAU;;AACtD,MAAMwH,kBAAkB,IAAxB;;AAEA,MAAI,CAAC,CAAC0B,OAAN,EAAe;AACb,QAAMyG,cAAczG,QAAQ,CAAR,KAAcA,OAAlC;AACA,QACEyG,YAAYC,KAAZ,IACGD,YAAYC,KAAZ,CAAkBC,QADrB,IAEGF,YAAYC,KAAZ,CAAkBE,SAFrB,IAGG,OAAOH,YAAYC,KAAZ,CAAkBE,SAAzB,KAAuC,QAH1C,IAIGH,YAAYC,KAAZ,CAAkBE,SAAlB,CAA4B3J,QAA5B,CAAqC,OAArC,CAJH,IAKG,KAAK7E,MAAL,CAAY+J,wBALf,IAMG,KAAK/J,MAAL,CAAY+J,wBAAZ,CAAqC/B,IAArC,KAA8CtJ,SAPnD,EASA;AACE,WAAKsB,MAAL,CAAY+J,wBAAZ,CAAqC/B,IAArC,GAA4C,IAA5C;AACD;;AAED,QAAIrP,MAAM8V,OAAN,CAAc7G,OAAd,CAAJ,EAA4B;AAC1B,UAAM8G,aAAa9G,QAAQsD,GAAR,CAAY;AAAA,eAAcyD,WAAWL,KAAX,CAAiBE,SAA/B;AAAA,OAAZ,CAAnB;AACAE,iBAAWnK,OAAX,CAAmB,2BAAmB;AACpC,YAAIqK,iBAAiBF,WAAWpL,IAAX,CAAgB;AAAA,iBACnC2B,KAAKC,SAAL,CAAe2J,aAAf,MAAkC5J,KAAKC,SAAL,CAAe4J,eAAf,CADC;AAAA,SAAhB,CAArB;AAGA,YAAIF,cAAJ,EAAmB;AACjB,cAAMG,MAAM,8CAAZ;AACAvD,kBAAQwD,KAAR,CAAcD,GAAd;AACA,gBAAMA,GAAN;AACD;AACF,OATD;AAUA;AACA,aAAO7I,gBACJ/F,IADI,CACCyH,QAAQ,CAAR,CADD,EAEJ/O,IAFI,CAEC,YAAM;AACV,YAAMiC,QAAQ8M,QAAQ,CAAR,CAAd;AACA,eAAKkE,OAAL,CAAamD,YAAb,CAA0B,CAA1B;AAFU;AAAA;AAAA;;AAAA;AAGV,+BAAmBrH,OAAnB,8HAA4B;AAAA,gBAAnBsH,MAAmB;;AAC1B,gBAAIzQ,QAAW3D,MAAMwT,KAAN,CAAYa,gBAAvB,SAA2CrU,MAAMwT,KAAN,CAAYc,aAA3D;AACA,gBAAIC,MAAMtP,iBAAQgB,MAAR,CAAe,UAAf,EAA2BmO,MAA3B,CAAV;AACAhJ,4BAAgB4F,OAAhB,CAAwB3N,YAAxB,CAAqCM,KAArC,EAA4C4Q,IAAIpQ,YAAJ,CAAiB,CAAjB,EAAoBT,KAApB,CAA0B,CAA1B,CAA5C;AACD;AAPS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQX,OAVI,EAWJ2N,MAXI,EAAP;AAYD;;AAED,WAAOjG,gBAAgB/F,IAAhB,CAAqByH,OAArB,EAA8BuE,MAA9B,EAAP;AACD;AACD,MACG,CAAC,CAAC,KAAKnM,MAAL,CAAYqH,YAAd,IAA8BiI,OAAOC,IAAP,CAAY,KAAKvP,MAAL,CAAYqH,YAAxB,EAAsCzO,MAAtC,GAA+C,CAA9E,IAEC,CAAC,CAAC,KAAKoH,MAAL,CAAYsH,kBAAd,IAAoC,KAAKtH,MAAL,CAAYsH,kBAAZ,CAA+B1O,MAA/B,GAAwC,CAH/E,EAIC;AACCgV,cAAU1H,eAAV;AACD;AACD,MAAI,CAAC,CAAC,KAAKlG,MAAL,CAAYoH,MAAd,IAAwBkI,OAAOC,IAAP,CAAY,KAAKvP,MAAL,CAAYoH,MAAxB,EAAgCxO,MAAhC,GAAyC,CAArE,EAAuE;AACrE6U,cAAUvH,eAAV;AACD;AACD,MAAI,CAAC,CAAC,KAAKlG,MAAL,CAAY0H,UAAlB,EAA8B;AAC5BA,eAAWxB,eAAX;AACD;AACD,MAAI,CAAC,CAAC,KAAKlG,MAAL,CAAY2H,aAAlB,EAAiC;AAC/BA,kBAAczB,eAAd;AACD;;AAED,MAAMiI,SAAS7I,QAAQkH,SAAR,CAAkBC,OAAlB,CAA0B2B,OAAzC;AACA,MAAM3G,UAAU,KAAKzH,MAAL,CAAYyH,OAA5B;AACA,MAAMvH,OAAO,KAAKF,MAAL,CAAYE,IAAzB;AACA,MAAMqG,mBAAmB,KAAKqF,EAAL,EAAzB;;AAEA,MAAI,CAACrF,gBAAD,IAAqBA,qBAAqB7H,SAA9C,EAAyD;AACvD,QAAMqQ,MAAS,KAAK/O,MAAL,CAAYsG,SAArB,qEAAN;AACAkF,YAAQwD,KAAR,CAAcD,GAAd;AACA,UAAMA,GAAN;AACA;AACD;;AAED,MAAIS,cAActJ,eAAlB;;AAEA,MAAIA,gBAAgBlG,MAAhB,CAAuByP,eAA3B,EAA4C;AAC1CD,kBAAc,IAAIE,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AAC7C,UAAMC,iBAAiB,OAAK7P,MAAL,CAAY8P,UAAnC;AACA5J,sBAAgBlG,MAAhB,CAAuB8P,UAAvB,GAAoC,YAAM;AACxC,YAAID,cAAJ,EAAoB;AAClBA;AACD;AACDF,gBAAQzJ,eAAR;AACD,OALD;AAMD,KARa,CAAd;AASD;;AAEDoH,WAAS,YAAU;AACjB,QAAMyC,gCAAgC7J,gBAAgB8J,kBAAhB,IACjC9J,gBAAgBlG,MAAhB,CAAuB+G,EADU,IAEjCb,gBAAgBlG,MAAhB,CAAuB+G,EAAvB,CAA0BC,iBAF/B;AAGA,QAAMiJ,0BAA0B/J,gBAAgBlG,MAAhB,CAAuB+G,EAAvB,IAC3Bb,gBAAgBlG,MAAhB,CAAuB+G,EAAvB,CAA0BmJ,OADC,IAE3BhK,gBAAgBlG,MAAhB,CAAuB+G,EAAvB,CAA0BmJ,OAA1B,CAAkCC,QAFP,IAG3BjK,gBAAgBlG,MAAhB,CAAuB+G,EAAvB,CAA0BmJ,OAA1B,CAAkCC,QAAlC,CAA2CjQ,IAHhD;AAIA,QAAIgG,gBAAgBsD,IAAhB,CAAqBuC,SAArB,IAAkCoC,OAAOf,OAA7C,EAAsD;AACpDe,aAAOf,OAAP,CAAe1L,KAAf,CAAqBwE,eAArB,EAAsCtJ,SAAtC;AACD;AACD2J,qBAAiB8G,SAAjB,GAA6B,EAA7B;;AAEA,QAAI/H,QAAQkH,SAAR,CAAkB/E,OAAlB,MAA+B,WAAnC,EAA+C;AAC7C;AACA,UAAMsH,0BAAN;AACA7I,sBAAgBgI,OAAhB,CAAwBa,IAAxB;AACA,YAAMA,IAAN;AACA;AACD,KAND,MAOK;AACH,UAAI,OAAOzJ,QAAQkH,SAAR,CAAkB/E,OAAlB,EAA2BvH,IAA3B,CAAP,KAA4C,WAAhD,EAA6D;AAC3D,YAAM6O,8BAAN;AACA,YAAMqB,YAAY,KAAKpQ,MAAL,CAAYuH,YAAZ,CAAyBwH,KAAzB,KAAiCA,KAAnD;AACA7I,wBAAgBgI,OAAhB,CAAwBkC,SAAxB;AACA,cAAMrB,KAAN;AACA;AACD,OAND,MAOK;AACHsB,wBAAgB9J,gBAAhB,EACEL,gBAAgBlG,MADlB;AAGA,YAAIiQ,uBAAJ,EAA6B;AAC3B,2CAAqB;AACnBhN,qBAASsD,gBADU;AAEnBpG,kBAAM+F,gBAAgB4F,OAAhB,CAAwBnN,MAFX;AAGnBuB,kBAAMgG,gBAAgBlG,MAAhB,CAAuB+G,EAAvB,CAA0BmJ,OAA1B,CAAkCC,QAAlC,CAA2CjQ,IAH9B;AAInBzB,mBAAOyH,gBAAgBlG,MAAhB,CAAuB+G,EAAvB,CAA0BmJ,OAA1B,CAAkCC,QAAlC,CAA2C1R;AAJ/B,WAArB;AAMD;AACD,YAAIsR,6BAAJ,EAAmC;AACjC,iDAAwB;AACtB9M,qBAASsD,gBADa;AAEtBpG,kBAAM+F,gBAAgB8J;AAFA,WAAxB;AAID;AAjBE,YAkBK7F,eAlBL,GAkByBjE,gBAAgBlG,MAlBzC,CAkBKmK,eAlBL;;AAmBH,YAAGA,eAAH,EAAmB;AACjB,cAAG,OAAOmG,oBAAP,KAAgC,WAAnC,EAA+C;AAC7C,gBAAMC,uBAAuB,SAAvBA,oBAAuB,CAACC,MAAD,EAASC,QAAT,EAAsB;AACjDD,qBAAOjM,OAAP,CAAe,cAAM;AACnB,oBAAGqH,GAAG8E,cAAN,EAAqB;AACnB,sBAAG,CAACxK,gBAAgBsD,IAAhB,CAAqBwC,SAAzB,EAAmC;AACjC1G,4BAAQkH,SAAR,CAAkB/E,OAAlB,EAA2BvH,IAA3B,EAAiCiM,MAAjC,CAAwCtT,IAAxC,CAA6CqN,eAA7C;AACAA,oCAAgBsD,IAAhB,CAAqBwC,SAArB,GAAiC,IAAjC;AACD;AACF;AACF,eAPD;AAQD,aATD;AAUA,gBAAMyE,WAAW,IAAIH,oBAAJ,CAAyBC,oBAAzB,CAAjB;AACAE,qBAASE,OAAT,CAAiBpK,gBAAjB;AACA;AACD;AACF;AACD,YAAGL,gBAAgBlG,MAAhB,CAAuBoM,oBAAvB,KAAgD,QAAnD,EAA4D;AAC1D,cAAG,OAAOzS,QAAP,KAAoB,WAAvB,EAAoC;AAClC,gBAAIiX,eAAJ;AAAA,gBAAYC,yBAAZ;AACA,gBAAI,OAAOlX,SAASiX,MAAhB,KAA2B,WAA/B,EAA4C;AAC1CA,uBAAS,QAAT;AACAC,iCAAmB,kBAAnB;AACD,aAHD,MAGO,IAAI,OAAOlX,SAASmX,QAAhB,KAA6B,WAAjC,EAA8C;AACnDF,uBAAS,UAAT;AACAC,iCAAmB,oBAAnB;AACD,aAHM,MAGA,IAAI,OAAOlX,SAASoX,YAAhB,KAAiC,WAArC,EAAkD;AACvDH,uBAAS,cAAT;AACAC,iCAAmB,wBAAnB;AACD;AACD,gBAAMG,yBAAyB,SAAzBA,sBAAyB,GAAM;AACnC,kBAAG,CAACrX,SAASiX,MAAT,CAAD,IAAqB1K,gBAAgBsD,IAAhB,CAAqBC,UAArB,CAAgCxD,EAAxD,EAA4D;AAC1DC,gCAAgBsD,IAAhB,CAAqBC,UAArB,CAAgCxD,EAAhC,CAAmCgL,IAAnC,CAAwC/K,gBAAgB4F,OAAhB,CAAwBnN,MAAhE;AACD;AACF,aAJD;AAKA,gBAAG,OAAOhF,SAASe,gBAAhB,KAAqC,WAArC,IACAkW,WAAWlS,SADd,EACwB;AACtB/E,uBAASe,gBAAT,CAA0BmW,gBAA1B,EAA4CG,sBAA5C,EAAoE;AAClEE,sBAAM;AAD4D,eAApE;AAGD;AACF;AACF;AACD5L,gBAAQkH,SAAR,CAAkB/E,OAAlB,EAA2BvH,IAA3B,EAAiCiM,MAAjC,CAAwCtT,IAAxC,CAA6CqN,eAA7C;AACAA,wBAAgBsD,IAAhB,CAAqBwC,SAArB,GAAiC,IAAjC;AACD;AACF;AACF,GA9FD;;AAgGA,SAAOwD,WAAP;AACD,CA3LD;;AA6LAlK,QAAQ/G,SAAR,CAAkBmJ,UAAlB,GAA+B,UAAS1L,GAAT,EAAa;AAC1C,MAAI,KAAKgE,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,sFAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAY0H,UAAnB;AACvB,OAAK1H,MAAL,CAAY0H,UAAZ,GAA0B1L,MAAMZ,OAAOY,GAAP,CAAN,GAAoB,IAA9C;;AAEA0L,aAAW,IAAX,EAAiB1L,GAAjB;;AAEA,SAAO,IAAP;AACD,CAVD;;AAYA,SAAS0L,UAAT,CAAoBxB,eAApB,EAAoC;AAClC;AACA,MAAIA,gBAAgBlG,MAAhB,CAAuB0H,UAAvB,IAAqCxB,gBAAgB/F,IAAhB,GAAuBvH,MAAvB,GAAgC,CAAzE,EAA4E;AAC1E,QAAI,gCAAasN,gBAAgB/F,IAAhB,GAAuB,CAAvB,EAA0B,CAA1B,CAAb,CAAJ,EAAgD;AAC9C+F,sBAAgB4F,OAAhB,CAAwBqF,WAAxB,CAAoCjL,gBAAgBlG,MAAhB,CAAuB0H,UAA3D,EAAuExB,gBAAgB4F,OAAhB,CAAwB/J,YAA/F;AACD,KAFD,MAGK;AACHmE,sBAAgB4F,OAAhB,CAAwBsF,QAAxB,CAAiClL,gBAAgBlG,MAAhB,CAAuB0H,UAAxD,EAAoExB,gBAAgB4F,OAAhB,CAAwB9J,SAA5F;AACD;AACF;AACF;;AAEDsD,QAAQ/G,SAAR,CAAkBoJ,aAAlB,GAAkC,UAAS3L,GAAT,EAAa;AAC7C,MAAI,KAAKgE,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,4FAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAY2H,aAAnB;AACvB,OAAK3H,MAAL,CAAY2H,aAAZ,GAA6B3L,MAAMZ,OAAOY,GAAP,CAAN,GAAoB,IAAjD;;AAEA2L,gBAAc,IAAd;;AAEA,SAAO,IAAP;AACD,CAVD;;AAYA,SAASA,aAAT,CAAuBzB,eAAvB,EAAuC;AACrC,MAAIA,gBAAgBlG,MAAhB,CAAuB2H,aAA3B,EAA0C;AACxCzB,oBAAgB4F,OAAhB,CAAwBsF,QAAxB,CAAiClL,gBAAgBlG,MAAhB,CAAuB2H,aAAxD;AACD;AACF;;AAEDrC,QAAQ/G,SAAR,CAAkBsJ,OAAlB,GAA4B,UAASwJ,IAAT,EAAc;AACxC,MAAI,KAAKrR,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,gFAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAY6H,OAAnB;AACvB,OAAK7H,MAAL,CAAY6H,OAAZ,GAAsBwJ,OAAO,IAAP,GAAc,KAApC;AACA,SAAO,IAAP;AACD,CAPD;;AASA/L,QAAQ/G,SAAR,CAAkBqI,KAAlB,GAA0B,UAAS5K,GAAT,EAAa;AACrC,MAAI,KAAKgE,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,4EAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAY4G,KAAnB;AACvB,OAAK5G,MAAL,CAAY4G,KAAZ,GAAqB5K,MAAMZ,OAAOY,GAAP,CAAN,GAAoB,IAAzC;AACA,SAAO,IAAP;AACD,CAPD;;AASAsJ,QAAQ/G,SAAR,CAAkBiI,KAAlB,GAA0B,UAASxK,GAAT,EAAa;AACrC,MAAI,KAAKgE,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,4EAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAYwG,KAAnB;AACvB,OAAKxG,MAAL,CAAYwG,KAAZ,GAAqBxK,MAAMZ,OAAOY,GAAP,CAAN,GAAoB,IAAzC;AACA,SAAO,IAAP;AACD,CAPD;;AASAsJ,QAAQ/G,SAAR,CAAkB2B,IAAlB,GAAyB,UAASlE,GAAT,EAAa;AACpC,MAAI,KAAKgE,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,0EAAZ;AACD;AACD,MAAI,CAAC7O,UAAUhE,MAAf,EAAuB,OAAO,KAAKoH,MAAL,CAAYE,IAAnB;AACvB,OAAKF,MAAL,CAAYE,IAAZ,GAAoBlE,MAAM0P,kBAAkB1P,GAAlB,CAAN,GAA+B,IAAnD;AACA,SAAO,IAAP;AACD,CAPD;;AASAsJ,QAAQ/G,SAAR,CAAkBuB,MAAlB,GAA2B,YAAU;AACnC,MAAM2H,UAAU,KAAKzH,MAAL,CAAYyH,OAA5B;AACA,MAAMvH,OAAO,KAAKF,MAAL,CAAYE,IAAzB;AACA,MAAM+C,UAAU,KAAK2I,EAAL,EAAhB;AACA,MAAInE,WAAWvH,IAAX,IAAmB+C,OAAnB,IAA8BqC,QAAQkH,SAAR,CAAkB/E,OAAlB,EAA2BvH,IAA3B,EAAiCJ,MAAnE,EAA2E;AACzEwF,YAAQkH,SAAR,CAAkB/E,OAAlB,EAA2BvH,IAA3B,EAAiCJ,MAAjC,CAAwC4B,KAAxC,CAA8C,IAA9C,EAAoD9E,SAApD;AACD;AACD,SAAO,IAAP;AACD,CARD;;AAUA0I,QAAQ/G,SAAR,CAAkBtB,KAAlB,GAA0B,UAASuQ,GAAT,EAAa;AACrC,MAAI,KAAKxN,MAAL,CAAYoG,uBAAhB,EAAyC;AACvCoF,YAAQC,GAAR,CAAY,0CAAZ;AACD;AACD,SAAO,IAAP;AACD,CALD;;AAOAnG,QAAQ/G,SAAR,CAAkBqF,WAAlB,GAAgC,YAAiD;AAAA,kFAAJ,EAAI;AAAA,4BAAtCE,OAAsC;AAAA,MAAtCA,OAAsC,iCAA5B,CAA4B;AAAA,4BAAzBC,OAAyB;AAAA,MAAzBA,OAAyB,iCAAf,MAAe;;AAC/E,2BAAY;AACV9F,UAAM,KAAK+B,MAAL,CAAYuG,gBADR;AAEVzC,oBAFU;AAGVC;AAHU,GAAZ;AAKD,CAND;;AAQAuB,QAAQ/G,SAAR,CAAkB6F,UAAlB,GAA+B,YAAsB;AAAA,MAAblE,IAAa,uEAAR,MAAQ;;AACnD,4BAAW;AACTC,UAAM,KAAK2L,OAAL,CAAanN,MADV;AAETuB;AAFS,GAAX;AAID,CALD;;AAOA;AACAoF,QAAQ/G,SAAR,CAAkB+S,SAAlB,GAA8BhM,QAAQ/G,SAAR,CAAkB2B,IAAhD;AACAoF,QAAQ/G,SAAR,CAAkByQ,KAAlB,GAA0B1J,QAAQ/G,SAAR,CAAkB2P,OAA5C;AACA5I,QAAQ/G,SAAR,CAAkBgT,YAAlB,GAAiCjM,QAAQ/G,SAAR,CAAkB4B,IAAnD;AACAmF,QAAQ/G,SAAR,CAAkBiT,YAAlB,GAAiC,YAAU;AACzC;AACA,SAAO,IAAP;AACD,CAHD;AAIAlM,QAAQ/G,SAAR,CAAkBkT,UAAlB,GAA+B,YAAU;AACvC;AACA,SAAO,IAAP;AACD,CAHD;;AAKAnM,QAAQoM,OAAR,GAAkBC,kBAAID,OAAtB;;AAEA;;AAEA,SAASrB,eAAT,CAAyBzE,EAAzB,EAA6B5F,OAA7B,EAAsC;AACpC,MAAI5J,OAAO,EAAX;AACA,MAAIwV,sBAAsB,EAA1B;AACA,MAAIC,aAAa,EAAjB;AACA,MAAI7L,QAAQ+B,MAAR,CAAezN,QAAf,KAA4B,KAA5B,IAAqC0L,QAAQ+B,MAAR,CAAezN,QAAf,KAA4B,QAArE,EAA+E;AAC7EsX,0BAAsB,sBAAtB;AACD;AACD,MAAI5L,QAAQ+E,KAAZ,EAAmB;AACjB8G,iBAAa,oBAAb;AACD;AACD,MAAIvL,sCAAoCsL,mBAApC,SAA2DC,UAA3D,aAAJ;AACA,MAAMC,oBAAoB,CAAC,KAAD,EAAQ,QAAR,EAAkB,QAAlB,CAA1B;AACA,MAAMC,sBAAsB,CAAC,MAAD,EAAS,QAAT,EAAmB,OAAnB,CAA5B;AACA,MAAIC,QAAQ,YAAZ;AACA,MAAIC,mBAAmB,QAAvB;AACA,MAAIF,oBAAoBlN,QAApB,CAA6BmB,QAAQ+B,MAAR,CAAeE,SAA5C,CAAJ,EAA4D;AAC1DgK,uBAAmBjM,QAAQ+B,MAAR,CAAeE,SAAlC;AACD;AACD,MAAIjC,QAAQ+B,MAAR,CAAezN,QAAf,KAA4B,MAA5B,IAAsC0L,QAAQ+B,MAAR,CAAezN,QAAf,KAA4B,OAAtE,EAA+E;AAC7E0X,YAAQ,UAAR;AACA,QAAIF,kBAAkBjN,QAAlB,CAA2BmB,QAAQ+B,MAAR,CAAeE,SAA1C,CAAJ,EAA0D;AACxDgK,yBAAmBjM,QAAQ+B,MAAR,CAAeE,SAAlC;AACD;AACF;AACD,MAAIjC,QAAQ+B,MAAR,IAAkB/B,QAAQ+B,MAAR,CAAeC,IAArC,EAA2C;AACzC,QAAIhC,QAAQ+B,MAAR,CAAezN,QAAf,KAA4B,KAA5B,IAAqC0L,QAAQ+B,MAAR,CAAezN,QAAf,KAA4B,MAArE,EAA6E;AAC3EgM,iEAAyD0L,KAAzD,wBAAiFhM,QAAQ+B,MAAR,CAAezN,QAAhG,8BAAiI2X,gBAAjI,gBAA4J3L,SAA5J;AACD,KAFD,MAEO;AACLA,kBAAeA,SAAf,kDAAqE0L,KAArE,wBAA6FhM,QAAQ+B,MAAR,CAAezN,QAA5G,8BAA6I2X,gBAA7I;AACD;AACF;AACD,MAAG,CAACjM,QAAQ8E,KAAZ,EAAkB;AAChB1O,6BAAuB4J,QAAQY,KAA/B;AACD;AACD,MAAIZ,QAAQQ,KAAR,IAAiBR,QAAQS,SAA7B,EAAwC;AACtCrK,gDAA0C4J,QAAQY,KAAlD,gBAAkEZ,QAAQQ,KAA1E;AACD;AACD,MAAIR,QAAQU,QAAZ,EAAsB;AACpBtK,mDAA6C4J,QAAQY,KAArD,mBAAwEZ,QAAQU,QAAhF;AACD;AACDtK,yEAAqE4V,KAArE,SAA8EhM,QAAQY,KAAtF,mBAAyGZ,QAAQY,KAAjH,mBAAoIoL,KAApI,UAA8I1L,SAA9I;AACA,MAAIN,QAAQW,KAAZ,EAAmB;AACjBvK,gDAA0C4J,QAAQY,KAAlD,gBAAkEZ,QAAQW,KAA1E;AACD;AACD,MAAG,CAACX,QAAQ8E,KAAZ,EAAkB;AAChB1O,YAAQ,QAAR;AACD;;AAEDwP,KAAGyB,SAAH,GAAejR,IAAf;AACD;;AAED,SAASsP,iBAAT,CAA2B1P,GAA3B,EAAgC;AAC9B,MAAMkP,MAAM;AACVgH,eAAW,MADD;AAEVC,cAAU,gBAFA;AAGVC,iBAAa,KAHH;AAIVC,eAAW,MAJD;AAKVC,cAAU;AALA,GAAZ;AAOA,SAAOpH,IAAIlP,GAAJ,KAAYA,GAAnB;AACD;;AAED,SAASuW,OAAT,CAAiBrF,EAAjB,EAAqB;AACnB,MAAI,KAAKzN,IAAL,CAAU9F,SAAS6Y,UAAnB,CAAJ,EAAoC;AAClC5X,eAAW,YAAM;AACf2X,cAAQrF,EAAR;AACD,KAFD,EAEG,CAFH;AAGD,GAJD,MAIO;AACLA;AACD;AACF;;AAED,SAASI,QAAT,CAAkBJ,EAAlB,EAAsB;AACpB,MAAI,OAAOvT,QAAP,KAAoB,WAApB,IAAmC,OAAO8L,MAAP,KAAkB,WAAzD,EAAsE;AACpEyH;AACA;AACD;AACD;AACA,MAAIvT,SAAS6Y,UAAT,IAAuB,IAAvB,IAA+B7Y,SAASe,gBAA5C,EAA8D;AAC5Df,aAASe,gBAAT,CAA0B,kBAA1B,EAA8C,SAAS+X,gBAAT,GAA4B;AACxE9Y,eAAS+Y,mBAAT,CAA6B,kBAA7B,EAAiDD,gBAAjD,EAAmE,KAAnE;AACA9Y,eAAS6Y,UAAT,GAAsB,UAAtB;AACD,KAHD,EAGG,KAHH;AAIA7Y,aAAS6Y,UAAT,GAAsB,SAAtB;AACD;AACDD,UAAQrF,EAAR;AACD;;kBAIc5H,O;;;;;;;;;;;;QCp/BC2J,Y,GAAAA,Y;QAYA0D,S,GAAAA,S;;AAdhB;;AAEO,SAAS1D,YAAT,CAAsB2D,CAAtB,EAAyB;AAC9B,MAAMvU,OAAO,IAAb;AACA,MAAMhC,QAAS,OAAOuW,CAAP,KAAa,QAAd,GAA0BA,CAA1B,GAA8B,KAAKjU,MAAL,CAAY,CAAZ,EAAe8B,OAAf,CAAuBmS,CAAvB,CAA5C;;AAEA,MAAIvW,QAAQ,CAAC,CAAb,EAAgB;AACd,oBAAKgC,KAAKM,MAAV,EAAkB,UAASC,GAAT,EAAcjC,CAAd,EAAgB;AAChC0B,WAAKM,MAAL,CAAYhC,CAAZ,EAAekW,MAAf,CAAsBxW,KAAtB,EAA6B,CAA7B;AACD,KAFD;AAGD;AACD,SAAOgC,IAAP;AACD;;AAEM,SAASsU,SAAT,CAAmBC,CAAnB,EAAsB;AAC3B,MAAIvW,QAAS,OAAOuW,CAAP,KAAa,QAAd,GAA0BA,CAA1B,GAA8B,KAAK3T,YAAL,CAAkB,CAAlB,EAAqBwB,OAArB,CAA6BmS,CAA7B,CAA1C;;AAEA,MAAIvW,QAAQ,CAAC,CAAb,EAAgB;AACd,SAAKsC,MAAL,CAAYkU,MAAZ,CAAmBxW,KAAnB,EAA0B,CAA1B;AACD;AACD,SAAO,IAAP;AACD,C;;;;;;;;;;;;QCnBeyW,a,GAAAA,a;QAqBAC,U,GAAAA,U;;AAvBhB;;AAEO,SAASD,aAAT,CAAuB5F,EAAvB,EAA2B;AAChC,MAAM7O,OAAO,IAAb;AACA,MAAM2U,QAAQ,EAAd;;AAEA,kBAAK3U,KAAKM,MAAV,EAAkB,UAASC,GAAT,EAAcjC,CAAd,EAAiB;AACjCqW,UAAMjV,IAAN,CAAW,EAAX;AACD,GAFD;;AAIA,kBAAKM,KAAKM,MAAL,CAAY,CAAZ,CAAL,EAAqB,UAASK,GAAT,EAAcrC,CAAd,EAAgB;AACnC,QAAIsW,iBAAiB5U,KAAKY,YAAL,CAAkBtC,CAAlB,CAArB;AACA,QAAIA,KAAK,CAAL,IAAUuQ,GAAGrU,IAAH,CAAQwF,IAAR,EAAc4U,cAAd,EAA8BtW,CAA9B,CAAd,EAAgD;AAC9C,sBAAKsW,cAAL,EAAqB,UAASpU,IAAT,EAAeqU,EAAf,EAAkB;AACrCF,cAAME,EAAN,EAAUnV,IAAV,CAAec,IAAf;AACD,OAFD;AAGD;AACF,GAPD;;AASAR,OAAK8B,IAAL,CAAU6S,KAAV;AACA,SAAO3U,IAAP;AACD;;AAEM,SAAS0U,UAAT,CAAoB7F,EAApB,EAAwB;AAC7B,MAAM7O,OAAO,IAAb;AACA,MAAM2U,QAAQ,EAAd;;AAEA,kBAAK3U,KAAKM,MAAV,EAAkB,UAASC,GAAT,EAAcjC,CAAd,EAAgB;AAChC,QAAIA,KAAK,CAAL,IAAUuQ,GAAGrU,IAAH,CAAQwF,IAAR,EAAcO,GAAd,EAAmBjC,CAAnB,CAAd,EAAqC;AACnCqW,YAAMjV,IAAN,CAAWa,GAAX;AACD;AACF,GAJD;;AAMAP,OAAK8B,IAAL,CAAU6S,KAAV;AACA,SAAO3U,IAAP;AACD,C;;;;;;;;;;;;QC/Be8U,Y,GAAAA,Y;QA6CAC,S,GAAAA,S;;AAjDhB;;AACA;;;;AACA;;;;AAEO,SAASD,YAAT,CAAsB9W,KAAtB,EAA6BL,GAA7B,EAAkClB,KAAlC,EAAyC;AAC9C,MAAMuD,OAAO,IAAb;AACA,MAAMI,QAASzC,QAAQ0C,SAAT,GAAsB1C,GAAtB,GAA4B,IAA1C;;AAEA,MAAI,OAAOlB,KAAP,KAAiB,UAArB,EAAiC;;AAE/BuD,SAAKM,MAAL,CAAY,CAAZ,EAAekU,MAAf,CAAsBxW,KAAtB,EAA6B,CAA7B,EAAgCoC,KAAhC;AACA,oBAAKJ,KAAKM,MAAV,EAAkB,UAASC,GAAT,EAAcjC,CAAd,EAAiB;AACjC,UAAIkC,IAAJ;AACA,UAAIlC,IAAI,CAAR,EAAW;AACTkC,eAAO/D,MAAMjC,IAAN,CAAWwF,IAAX,EAAiBO,GAAjB,EAAsBjC,CAAtB,CAAP;AACA,YAAI,OAAOkC,IAAP,KAAgB,WAApB,EAAiC;AAC/BA,iBAAO,IAAP;AACD;AACDR,aAAKM,MAAL,CAAYhC,CAAZ,EAAekW,MAAf,CAAsBxW,KAAtB,EAA6B,CAA7B,EAAgCwC,IAAhC;AACD;AACF,KATD;AAWD,GAdD,MAgBK,IAAI,CAAC/D,KAAD,IAAUA,iBAAiBnC,KAA/B,EAAsC;AACzCmC,YAAQA,SAAS,EAAjB;;AAEA,QAAIA,MAAMlC,MAAN,IAAgByF,KAAKM,MAAL,CAAY/F,MAAZ,GAAqB,CAAzC,EAA4C;AAC1CkC,cAAQA,MAAMgE,MAAN,CAAc,8BAAeT,KAAKM,MAAL,CAAY/F,MAAZ,GAAqB,CAArB,GAAyBkC,MAAMlC,MAA9C,CAAd,CAAR;AACD,KAFD,MAGK;AACH;AACA;AACA,sBAAKkC,KAAL,EAAY,UAASrB,KAAT,EAAgBkD,CAAhB,EAAkB;AAC5B,YAAI0B,KAAKM,MAAL,CAAY/F,MAAZ,GAAoB,CAApB,GAAwBkC,MAAMlC,MAAlC,EAA0C;AACxCwF,4BAAUvF,IAAV,CAAewF,IAAf,EAAqBjD,OAAQiD,KAAKM,MAAL,CAAY/F,MAApB,CAArB;AACD;AACF,OAJD;AAKD;;AAEDyF,SAAKM,MAAL,CAAY,CAAZ,EAAekU,MAAf,CAAsBxW,KAAtB,EAA6B,CAA7B,EAAgCoC,KAAhC;AACA,oBAAK3D,KAAL,EAAY,UAASrB,KAAT,EAAgBkD,CAAhB,EAAkB;AAC5B0B,WAAKM,MAAL,CAAYhC,IAAE,CAAd,EAAiBkW,MAAjB,CAAwBxW,KAAxB,EAA+B,CAA/B,EAAkC5C,KAAlC;AACD,KAFD;AAID;AACD,SAAO4E,IAAP;AACD;;AAEM,SAAS+U,SAAT,CAAmB/W,KAAnB,EAA0BL,GAA1B,EAA+BlB,KAA/B,EAAsC;AAC3C,MAAMuD,OAAO,IAAb;AACA,MAAMU,SAAS,EAAf;AACA,MAAMN,QAASzC,QAAQ0C,SAAT,GAAsB1C,GAAtB,GAA4B,IAA1C;AACA+C,SAAOhB,IAAP,CAAYU,KAAZ;;AAEA,MAAI,OAAO3D,KAAP,KAAiB,UAArB,EAAiC;AAC/B,oBAAKuD,KAAKM,MAAL,CAAY,CAAZ,CAAL,EAAqB,UAASF,KAAT,EAAgB9B,CAAhB,EAAmB;AACtC,UAAIqC,YAAJ;AACA,UAAIH,aAAJ;AACA,UAAIlC,IAAI,CAAR,EAAW;AACTqC,cAAMX,KAAKY,YAAL,CAAkBtC,CAAlB,CAAN;AACAkC,eAAO/D,MAAMjC,IAAN,CAAWwF,IAAX,EAAiBW,GAAjB,EAAsBrC,CAAtB,CAAP;AACA,YAAI,OAAOkC,IAAP,KAAgB,WAApB,EAAiC;AAC/BA,iBAAO,IAAP;AACD;AACDE,eAAOhB,IAAP,CAAYc,IAAZ;AACD;AACF,KAXD;AAYAR,SAAKM,MAAL,CAAYkU,MAAZ,CAAmBxW,KAAnB,EAA0B,CAA1B,EAA6B0C,MAA7B;AACD,GAdD,MAgBK,IAAI,CAACjE,KAAD,IAAUA,iBAAiBnC,KAA/B,EAAsC;AACzCmC,YAAQA,SAAS,EAAjB;;AAEA,QAAIA,MAAMlC,MAAN,IAAgByF,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAwB,CAA5C,EAA+C;AAC7CkC,cAAQA,MAAMgE,MAAN,CAAc,8BAAgBT,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAwB,CAAxB,GAA4BkC,MAAMlC,MAAlD,CAAd,CAAR;AACD,KAFD,MAGK;AACH,sBAAKkC,KAAL,EAAY,UAASrB,KAAT,EAAgBkD,CAAhB,EAAkB;AAC5B,YAAI0B,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAuB,CAAvB,GAA2BkC,MAAMlC,MAArC,EAA6C;AAC3CuF,+BAAatF,IAAb,CAAkBwF,IAAlB,EAAwBjD,OAAQiD,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAvB,CAAxB;AACD;AACF,OAJD;AAKD;;AAEDyF,SAAKM,MAAL,CAAYkU,MAAZ,CAAmBxW,KAAnB,EAA0B,CAA1B,EAA6B0C,OAAOD,MAAP,CAAchE,KAAd,CAA7B;AACD;;AAED,SAAOuD,IAAP;AACD,C;;;;;;;;;;;;QCvFeY,Y,GAAAA,Y;QAYA4B,S,GAAAA,S;;AAdhB;;AAEO,SAAS5B,YAAT,CAAsB2T,CAAtB,EAAyB;AAC9B,MAAM1D,SAAS,EAAf;AACA,MAAM7S,QAAS,OAAOuW,CAAP,KAAa,QAAd,GAA0BA,CAA1B,GAA8B,KAAKjU,MAAL,CAAY,CAAZ,EAAe8B,OAAf,CAAuBmS,CAAvB,CAA5C;;AAEA,MAAIvW,QAAQ,CAAC,CAAT,IAAc,OAAO,KAAKsC,MAAL,CAAY,CAAZ,EAAetC,KAAf,CAAP,KAAiC,WAAnD,EAAgE;AAC9D,oBAAK,KAAKsC,MAAV,EAAkB,UAASC,GAAT,EAAcjC,CAAd,EAAiB;AACjCuS,aAAOnR,IAAP,CAAYa,IAAIvC,KAAJ,CAAZ;AACD,KAFD;AAGD;AACD,SAAO6S,MAAP;AACD;;AAEM,SAASrO,SAAT,CAAmB+R,CAAnB,EAAsB;AAC3B,MAAI1D,SAAS,EAAb;AACA,MAAM7S,QAAS,OAAOuW,CAAP,KAAa,QAAd,GAA0BA,CAA1B,GAA8B,KAAK3T,YAAL,CAAkB,CAAlB,EAAqBwB,OAArB,CAA6BmS,CAA7B,CAA5C;;AAEA,MAAIvW,QAAQ,CAAC,CAAT,IAAc,OAAO,KAAKsC,MAAL,CAAYtC,KAAZ,CAAP,KAA8B,WAAhD,EAA6D;AAC3D6S,aAAS,KAAKvQ,MAAL,CAAYtC,KAAZ,CAAT;AACD;AACD,SAAO6S,MAAP;AACD,C;;;;;;;;;;;;QCnBeiC,W,GAAAA,W;QA8BAC,Q,GAAAA,Q;;AAjChB;;AACA;;;;;;AAEO,SAASD,WAAT,CAAqBnV,GAArB,EAA0BqX,IAA1B,EAAgC;AACrC,MAAIhV,OAAO,IAAX;AAAA,MACIiV,OAAO,KAAK3U,MAAL,CAAY,CAAZ,EAAeH,KAAf,CAAqB,CAArB,CADX;AAAA,MACoC;AAChC+U,SAAO,EAFX;AAAA,MAGIP,QAAQ,EAHZ;AAAA,MAII9F,KAAKmG,QAAQG,mBAAoBnR,cAJrC;;AAMA;AACA,kBAAKiR,IAAL,EAAW,UAASzU,IAAT,EAAelC,CAAf,EAAkB;AAC3B4W,SAAKxV,IAAL,CAAUM,KAAKY,YAAL,CAAkBtC,IAAE,CAApB,EAAuB6B,KAAvB,CAA6B,CAA7B,CAAV;AACD,GAFD;AAGA+U,OAAK1T,IAAL,CAAU,UAAS4T,CAAT,EAAWC,CAAX,EAAa;AACrB;AACA,QAAIC,KAAKzG,GAAGrU,IAAH,CAAQwF,IAAR,EAAcoV,CAAd,IAAmBvG,GAAGrU,IAAH,CAAQwF,IAAR,EAAcqV,CAAd,CAA5B;AACA,QAAIC,EAAJ,EAAQ;AACN,aAAQ3X,QAAQ,KAAR,GAAgB,CAAhB,GAAoB,CAAC,CAA7B;AACD,KAFD,MAEO,IAAI,CAAC2X,EAAL,EAAS;AACd,aAAQ3X,QAAQ,KAAR,GAAgB,CAAC,CAAjB,GAAqB,CAA7B;AACD,KAFM,MAEA;AACL,aAAO,CAAP;AACD;AACF,GAVD;AAWA,kBAAKuX,IAAL,EAAW,UAASvU,GAAT,EAAcrC,CAAd,EAAiB;AAC1B0B,SACG4Q,YADH,CACgBtS,IAAE,CADlB,EAEGwW,YAFH,CAEgBxW,IAAE,CAFlB,EAEqBqC,IAAI,CAAJ,CAFrB,EAE6BA,IAAIR,KAAJ,CAAU,CAAV,CAF7B;AAGD,GAJD;AAKA,SAAOH,IAAP;AACD;;AAEM,SAAS+S,QAAT,CAAkBpV,GAAlB,EAAuBqX,IAAvB,EAA6B;AAClC,MAAIhV,OAAO,IAAX;AAAA,MACIiV,OAAO,KAAK3U,MAAL,CAAYH,KAAZ,CAAkB,CAAlB,EAAoB,CAApB,CADX;AAAA,MAEI3E,OAAO,KAAK8E,MAAL,CAAYH,KAAZ,CAAkB,CAAlB,CAFX;AAAA,MAGI0O,KAAKmG,QAAQG,mBAAoBlR,WAHrC;AAIAzI,OAAKgG,IAAL,CAAU,UAAS4T,CAAT,EAAYC,CAAZ,EAAc;AACtB;AACA,QAAIC,KAAKzG,GAAGrU,IAAH,CAAQwF,IAAR,EAAcoV,CAAd,IAAmBvG,GAAGrU,IAAH,CAAQwF,IAAR,EAAcqV,CAAd,CAA5B;AACA,QAAIC,EAAJ,EAAQ;AACN,aAAQ3X,QAAQ,KAAR,GAAgB,CAAhB,GAAoB,CAAC,CAA7B;AACD,KAFD,MAEO,IAAI,CAAC2X,EAAL,EAAS;AACd,aAAQ3X,QAAQ,KAAR,GAAgB,CAAC,CAAjB,GAAqB,CAA7B;AACD,KAFM,MAEA;AACL,aAAO,CAAP;AACD;AACF,GAVD;AAWAqC,OAAK8B,IAAL,CAAUmT,KAAKxU,MAAL,CAAYjF,IAAZ,CAAV;AACA,SAAOwE,IAAP;AACD,C;;;;;;;;;;;;QC/CeqP,Y,GAAAA,Y;QA4CAC,S,GAAAA,S;;AAhDhB;;AACA;;;;AACA;;;;AAEO,SAASD,YAAT,CAAsBkF,CAAtB,EAAyB9X,KAAzB,EAAgC;AACrC,MAAIuD,OAAO,IAAX;AAAA,MACIhC,QAAS,OAAOuW,CAAP,KAAa,QAAd,GAA0BA,CAA1B,GAA8B,KAAKjU,MAAL,CAAY,CAAZ,EAAe8B,OAAf,CAAuBmS,CAAvB,CAD1C;;AAGA,MAAIvW,QAAQ,CAAC,CAAb,EAAgB;;AAEd,QAAI,OAAOvB,KAAP,KAAiB,UAArB,EAAiC;;AAE/B,sBAAKuD,KAAK8B,IAAL,EAAL,EAAkB,UAASvB,GAAT,EAAcjC,CAAd,EAAgB;AAChC,YAAIkC,IAAJ;AACA,YAAIlC,IAAI,CAAR,EAAW;AACTkC,iBAAO/D,MAAMjC,IAAN,CAAWwF,IAAX,EAAiBO,IAAIvC,KAAJ,CAAjB,EAA6BM,CAA7B,EAAgCiC,GAAhC,CAAP;AACA,cAAI,OAAOC,IAAP,KAAgB,WAApB,EAAiC;AAC/BR,iBAAKM,MAAL,CAAYhC,CAAZ,EAAeN,KAAf,IAAwBwC,IAAxB;AACD;AACF;AACF,OARD;AAUD,KAZD,MAYO,IAAI,CAAC/D,KAAD,IAAUA,iBAAiBnC,KAA/B,EAAsC;AAC3CmC,cAAQA,SAAS,EAAjB;;AAEA,UAAIA,MAAMlC,MAAN,IAAgByF,KAAK8B,IAAL,GAAYvH,MAAZ,GAAqB,CAAzC,EAA4C;AAC1CkC,gBAAQA,MAAMgE,MAAN,CAAc,8BAAeT,KAAK8B,IAAL,GAAYvH,MAAZ,GAAqB,CAArB,GAAyBkC,MAAMlC,MAA9C,CAAd,CAAR;AACD,OAFD,MAGK;AACH;AACA;AACA,wBAAKkC,KAAL,EAAY,UAASrB,KAAT,EAAgBkD,CAAhB,EAAkB;AAC5B,cAAI0B,KAAKM,MAAL,CAAY/F,MAAZ,GAAoB,CAApB,GAAwBkC,MAAMlC,MAAlC,EAA0C;AACxCwF,8BAAUvF,IAAV,CAAewF,IAAf,EAAqBjD,OAAQiD,KAAKM,MAAL,CAAY/F,MAApB,CAArB;AACD;AACF,SAJD;AAKD;;AAED,sBAAKkC,KAAL,EAAY,UAASrB,KAAT,EAAgBkD,CAAhB,EAAkB;AAC5B0B,aAAKM,MAAL,CAAYhC,IAAE,CAAd,EAAiBN,KAAjB,IAA0B5C,KAA1B;AACD,OAFD;AAID;AAEF;AACD,SAAO4E,IAAP;AACD;;AAEM,SAASsP,SAAT,CAAmBiF,CAAnB,EAAsB9X,KAAtB,EAA4B;AACjC,MAAIuD,OAAO,IAAX;AAAA,MACIhC,QAAS,OAAOuW,CAAP,KAAa,QAAd,GAA0BA,CAA1B,GAA8B,KAAK3T,YAAL,CAAkB,CAAlB,EAAqBwB,OAArB,CAA6BmS,CAA7B,CAD1C;;AAGA,MAAIvW,QAAQ,CAAC,CAAb,EAAgB;;AAEd,QAAI,OAAOvB,KAAP,KAAiB,UAArB,EAAiC;;AAE/B,sBAAKuD,KAAK8B,IAAL,GAAY9D,KAAZ,CAAL,EAAyB,UAAS5C,KAAT,EAAgBkD,CAAhB,EAAkB;AACzC,YAAIqC,MAAMX,KAAKY,YAAL,CAAkBtC,CAAlB,CAAV;AAAA,YACAkC,OAAO/D,MAAMjC,IAAN,CAAWwF,IAAX,EAAiB5E,KAAjB,EAAwBkD,CAAxB,EAA2BqC,GAA3B,CADP;AAEA,YAAI,OAAOH,IAAP,KAAgB,WAApB,EAAiC;AAC/BR,eAAKM,MAAL,CAAYtC,KAAZ,EAAmBM,CAAnB,IAAwBkC,IAAxB;AACD;AACF,OAND;AAQD,KAVD,MAUO,IAAI,CAAC/D,KAAD,IAAUA,iBAAiBnC,KAA/B,EAAsC;AAC3CmC,cAAQA,SAAS,EAAjB;;AAEA,UAAIA,MAAMlC,MAAN,IAAgByF,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAwB,CAA5C,EAA+C;AAC7CkC,gBAAQA,MAAMgE,MAAN,CAAc,8BAAgBT,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAwB,CAAxB,GAA4BkC,MAAMlC,MAAlD,CAAd,CAAR;AACD,OAFD,MAGK;AACH,wBAAKkC,KAAL,EAAY,UAASrB,KAAT,EAAgBkD,CAAhB,EAAkB;AAC5B,cAAI0B,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAf,GAAuB,CAAvB,GAA2BkC,MAAMlC,MAArC,EAA6C;AAC3CuF,iCAAatF,IAAb,CAAkBwF,IAAlB,EAAwBjD,OAAQiD,KAAKM,MAAL,CAAY,CAAZ,EAAe/F,MAAvB,CAAxB;AACD;AACF,SAJD;AAKD;;AAED,sBAAKkC,KAAL,EAAY,UAASrB,KAAT,EAAgBkD,CAAhB,EAAkB;AAC5B0B,aAAKM,MAAL,CAAYtC,KAAZ,EAAmBM,IAAE,CAArB,IAA0BlD,KAA1B;AACD,OAFD;AAGD;AAEF;AACD,SAAO4E,IAAP;AACD,C;;;;;;;;;;;;kBC9EuBoT,U;;AALxB;;AACA;;AACA;;AACA;;AALA,IAAI1R,gBAAJ,C,CAAa;;AAOE,SAAS0R,UAAT,CAAoBmC,GAApB,EAAwB;AACrC7T,YAAU6T,GAAV;AACA,SAAO,UAASjH,IAAT,EAAc;AACnB,QAAI3G,UAAUrN,MAAM4F,SAAN,CAAgBC,KAAhB,CAAsB3F,IAAtB,CAA2B+D,SAA3B,EAAsC,CAAtC,CAAd;;AAEA,QAAI,CAACiX,QAAQlH,IAAR,CAAL,EAAoB;AAClB,YAAM,iCAAN;AACD,KAFD,MAGK;AACH,aAAOkH,QAAQlH,IAAR,EAAcjL,KAAd,CAAoB,IAApB,EAA0BsE,OAA1B,CAAP;AACD;AACF,GATD;AAUD;;AAED,SAAS8N,WAAT,GAAsB;AACpB,SAAO,UAASC,GAAT,EAAa;AAClB,WAAO,IAAIhU,OAAJ,GACJM,GADI,CACA,CAAC,OAAD,EAAU,QAAV,CADA,EACqB0T,IAAI7E,MADzB,EAEJhP,IAFI,CAEC,QAFD,CAAP;AAGD,GAJD;AAKD;;AAED;AACA,SAAS8T,aAAT,GAAwB;AACtB,MAAIhO,UAAUrN,MAAM4F,SAAN,CAAgBC,KAAhB,CAAsB3F,IAAtB,CAA2B+D,SAA3B,CAAd;AACA,SAAO,UAASmX,GAAT,EAAa;AAClB,QAAIjI,UAAU,IAAI/L,OAAJ,GACXG,IADW,CACN,UADM,CAAd;AAEA,oBAAK6T,IAAI7E,MAAT,EAAiB,UAAS+E,MAAT,EAAiBtX,CAAjB,EAAmB;AAClC,UAAIN,QAAQ2J,QAAQ,CAAR,KAAcA,QAAQ,CAAR,MAAe,eAA7B,GAA+CiO,OAAOzF,SAAP,CAAiBtN,GAAhE,GAAsE+S,OAAOzF,SAAP,CAAiBvN,KAAnG;AACA6K,cAAQzL,GAAR,CAAY,CAAC,QAAD,EAAWhE,KAAX,CAAZ,EAA+B4X,OAAOxa,KAAtC;AACD,KAHD;AAIA,WAAOqS,OAAP;AACD,GARD;AASD;;AAED,SAASoI,kBAAT,GAA6B;AAC3B,SAAO,UAASH,GAAT,EAAa;AAClB,QAAIjI,UAAU,IAAI/L,OAAJ,GACXG,IADW,CACN,gBADM,CAAd;AAEA,oBAAK6T,IAAI7E,MAAT,EAAiB,UAAS+E,MAAT,EAAiBtX,CAAjB,EAAmB;AAClC,UAAI8B,KAAJ;AACA,sBAAKwV,MAAL,EAAa,UAASxa,KAAT,EAAgBsJ,GAAhB,EAAoB;AAC/B,YAAIA,QAAQ,QAAZ,EAAsB;AACpBtE,kBAAQsE,GAAR;AACD;AACF,OAJD;AAKA+I,cAAQzL,GAAR,CAAY,CAAC,QAAD,EAAWjF,OAAO6Y,OAAOxV,KAAP,CAAP,CAAX,CAAZ,EAA+CwV,OAAO/E,MAAtD;AACD,KARD;AASA,WAAOpD,OAAP;AACD,GAbD;AAcD;;AAED;AACA,SAASqI,oBAAT,GAA+B;AAC7B,MAAInO,UAAUrN,MAAM4F,SAAN,CAAgBC,KAAhB,CAAsB3F,IAAtB,CAA2B+D,SAA3B,CAAd;AACA,SAAO,UAASmX,GAAT,EAAa;AAClB,QAAIjI,UAAU,IAAI/L,OAAJ,GACXG,IADW,CACN,kBADM,CAAd;AAEA,oBAAK6T,IAAI7E,MAAT,EAAiB,UAAS+E,MAAT,EAAiBtX,CAAjB,EAAmB;AAClC,UAAIN,QAAQ2J,QAAQ,CAAR,KAAcA,QAAQ,CAAR,MAAe,eAA7B,GAA+CiO,OAAOzF,SAAP,CAAiBtN,GAAhE,GAAsE+S,OAAOzF,SAAP,CAAiBvN,KAAnG;AACA,UAAIgT,OAAOxa,KAAP,CAAab,MAAjB,EAAyB;AACvB,wBAAKqb,OAAOxa,KAAZ,EAAmB,UAAS2a,KAAT,EAAgB5P,CAAhB,EAAkB;AACnC,cAAI/F,KAAJ;AACA,0BAAK2V,KAAL,EAAY,UAAS3a,KAAT,EAAgBsJ,GAAhB,EAAoB;AAC9B,gBAAIA,QAAQ,QAAZ,EAAsB;AACpBtE,sBAAQsE,GAAR;AACD;AACF,WAJD;AAKA+I,kBAAQzL,GAAR,CAAY,CAAEjF,OAAOgZ,MAAM3V,KAAN,CAAP,CAAF,EAAwBpC,KAAxB,CAAZ,EAA6C+X,MAAMlF,MAAnD;AACD,SARD;AASD,OAVD,MAWK;AACHpD,gBAAQ1N,SAAR,CAAkB/B,KAAlB;AACD;AACF,KAhBD;AAiBA,WAAOyP,OAAP;AACD,GArBD;AAsBD;;AAED;AACA,SAASuI,wBAAT,GAAmC;AACjC,MAAIrO,UAAUrN,MAAM4F,SAAN,CAAgBC,KAAhB,CAAsB3F,IAAtB,CAA2B+D,SAA3B,CAAd;AACA,MAAI,CAACoJ,QAAQ,CAAR,CAAL,EAAiB,MAAM,kGAAN;AACjB,SAAO,UAAS+N,GAAT,EAAa;AAClB,QAAIjI,UAAU,IAAI/L,OAAJ,GACXG,IADW,CACN,uBADM,CAAd;AAEA,oBAAK6T,IAAI7E,MAAT,EAAiB,UAAS+E,MAAT,EAAiBtX,CAAjB,EAAmB;AAClC,UAAI2X,WAAWL,OAAOjO,QAAQ,CAAR,EAAW,CAAX,CAAP,IAAwB,GAAxB,GAA8BiO,OAAOjO,QAAQ,CAAR,EAAW,CAAX,CAAP,CAA7C;AACA8F,cAAQzL,GAAR,CAAY,CAAE,QAAF,EAAYiU,QAAZ,CAAZ,EAAoCL,OAAO/E,MAA3C;AACD,KAHD;AAIA,WAAOpD,OAAP;AACD,GARD;AASD;;AAED;AACA,SAASyI,0BAAT,GAAqC;AACnC,MAAIvO,UAAUrN,MAAM4F,SAAN,CAAgBC,KAAhB,CAAsB3F,IAAtB,CAA2B+D,SAA3B,CAAd;AACA,MAAI,CAACoJ,QAAQ,CAAR,CAAL,EAAiB,MAAM,kGAAN;AACjB,SAAO,UAAS+N,GAAT,EAAa;AAClB,QAAIjI,UAAU,IAAI/L,OAAJ,GACXG,IADW,CACN,yBADM,CAAd;AAEA,oBAAK6T,IAAI7E,MAAT,EAAiB,UAAS+E,MAAT,EAAiBtX,CAAjB,EAAmB;AAClC,UAAIN,QAAQ2J,QAAQ,CAAR,KAAcA,QAAQ,CAAR,MAAe,eAA7B,GAA+CiO,OAAOzF,SAAP,CAAiBtN,GAAhE,GAAsE+S,OAAOzF,SAAP,CAAiBvN,KAAnG;AACA,sBAAKgT,OAAO,OAAP,CAAL,EAAsB,UAASxa,KAAT,EAAgB+K,CAAhB,EAAkB;AACtC,YAAI/F,QAAQhF,MAAMuM,QAAQ,CAAR,EAAW,CAAX,CAAN,IAAuB,GAAvB,GAA6BvM,MAAMuM,QAAQ,CAAR,EAAW,CAAX,CAAN,CAAzC;AACA8F,gBAAQzL,GAAR,CAAY,CAAE5B,KAAF,EAASpC,KAAT,CAAZ,EAA8B5C,MAAMyV,MAApC;AACD,OAHD;AAID,KAND;AAOA,WAAOpD,OAAP;AACD,GAXD;AAYD;;AAED,SAAS0I,WAAT,GAAsB;AACpB,SAAO,UAAST,GAAT,EAAa;AAClB,QAAI7E,MAAJ,EAAYuF,KAAZ,EAAmB3I,OAAnB;AACA,QAAI,OAAOiI,IAAIU,KAAX,KAAqB,WAArB,IACG,OAAOV,IAAI7E,MAAX,KAAsB,WADzB,IAEK6E,IAAI7E,MAAJ,YAAsBvW,KAF/B,EAEsC;AAC9B;AACAuW,eAAS6E,IAAI7E,MAAb;AACAuF,cAAQV,IAAIU,KAAZ;AACP,KAND,MAOK,IAAI,OAAOV,IAAI7E,MAAJ,CAAWuF,KAAlB,KAA4B,WAA5B,IACF,OAAOV,IAAI7E,MAAJ,CAAWA,MAAlB,KAA6B,WAD3B,IAEA6E,IAAI7E,MAAJ,CAAWA,MAAX,YAA6BvW,KAFjC,EAEwC;AACrC;AACAuW,eAAS6E,IAAI7E,MAAJ,CAAWA,MAApB;AACAuF,cAAQV,IAAI7E,MAAJ,CAAWuF,KAAnB;AACP;AACD3I,cAAU,IAAI/L,OAAJ,GAAcG,IAAd,CAAmB,QAAnB,CAAV;AACA4L,YAAQ3N,YAAR,CAAqB,YAArB;AACA,oBAAK+Q,MAAL,EAAa,UAASzV,KAAT,EAAgBkD,CAAhB,EAAkB;AAC7B,UAAI,OAAO8X,KAAP,KAAiB,WAAjB,IAAgCA,MAAM9X,CAAN,CAApC,EAA8C;AAC5CmP,gBAAQ1N,SAAR,CAAkBhD,OAAOqZ,MAAM9X,CAAN,EAASwS,gBAAhB,CAAlB,EAAqD,CAAC1V,KAAD,CAArD;AACD;AACF,KAJD;AAKA,WAAOqS,OAAP;AACD,GAxBD;AAyBD;;AAED,SAAS4I,SAAT,GAAoB;AAClB,SAAO,UAASX,GAAT,EAAa;AAClB,QAAIjI,UAAU,IAAI/L,OAAJ,GACXG,IADW,CACN,MADM,CAAd;AAEA,oBAAK6T,IAAI7E,MAAT,EAAiB,UAASzV,KAAT,EAAgBkD,CAAhB,EAAkB;AACjCmP,cAAQzL,GAAR,CAAa,CAAE,QAAF,EAAYjF,OAAOuB,IAAE,CAAT,CAAZ,CAAb,EAAwClD,KAAxC;AACD,KAFD;AAGA,WAAOqS,OAAP;AACD,GAPD;AAQD;;AAED,SAAS6I,eAAT,GAA0B;AACxB,MAAI3U,SAAS,KAAKA,MAAlB;AACA,SAAO,UAAS+T,GAAT,EAAa;AAClB,QAAMa,oBAAoB,IAAI7U,OAAJ,GACvBG,IADuB,CAClB,YADkB,CAA1B;;AAGA,QAAM2U,cAAc,gDAAqBd,IAAI7E,MAAzB,CAApB;AACA,QAAI4F,QAAQnc,MAAMoc,IAAN,CAAWF,WAAX,CAAZ;;AAEA,QAAMG,cAAchV,UAAUA,OAAOiK,KAArC;AACA,QAAI+K,eAAeA,YAAY9K,MAAZ,KAAuB,SAA1C,EAAqD;AACnD,UAAMtC,UAAUmM,IAAI7E,MAApB;AACA,UAAMK,OAAO,EAAb;AACA3H,cAAQrD,OAAR,CAAgB,sBAAc;AAC5B,YAAM0Q,aAAa3F,OAAOC,IAAP,CAAY,sBAAQZ,UAAR,CAAZ,CAAnB;AACA,YAAIsG,cAAcA,WAAWrc,MAA7B,EAAqC;AACnCqc,qBAAW1Q,OAAX,CAAmB,mBAAW;AAC5B,gBAAI,CAACgL,KAAK2F,OAAL,CAAL,EAAoB;AAClB3F,mBAAK2F,OAAL,IAAgB,IAAhB;AACD;AACF,WAJD;AAKD;AACF,OATD;AAUAJ,cAAQxF,OAAOC,IAAP,CAAYA,IAAZ,CAAR;AACD;;AAED,QAAI4F,QAAQ,CAAZ;AACAL,UAAMvQ,OAAN,CAAc,iBAAS;AACrBqQ,wBAAkBvU,GAAlB,CAAsB,CAAE5G,KAAF,EAAS,GAAT,CAAtB,EAAsCA,KAAtC;AACA0b;AACD,KAHD;;AAKA,QAAIpV,OAAJ,EAAa;AACX,UAAIC,UACCA,OAAOiK,KADR,IAECjK,OAAOiK,KAAP,CAAamL,OAFlB,EAE2B;AACzBN,gBAAQ9U,OAAOiK,KAAP,CAAamL,OAArB;AACD;AACF;;AAED,SAAK,IAAIzY,IAAE,CAAX,EAAcA,IAAEoX,IAAI7E,MAAJ,CAAWtW,MAA3B,EAAmC+D,GAAnC,EAAuC;AACrC,UAAIsX,SAAS,CAACtX,IAAE,CAAH,CAAb;AACA,WAAK,IAAI0Y,SAAO,CAAhB,EAAmBA,SAAOP,MAAMlc,MAAhC,EAAwCyc,QAAxC,EAAiD;AAC/CpB,eAAOlW,IAAP,CAAY,4BAAegW,IAAI7E,MAAJ,CAAWvS,CAAX,CAAf,EAA8BmY,MAAMO,MAAN,CAA9B,CAAZ;AACD;AACDT,wBAAkBjW,MAAlB,CAAyBvD,OAAOuB,IAAE,CAAT,CAAzB,IAAwCsX,MAAxC;AACD;;AAEDW,sBAAkB3F,YAAlB,CAA+B,CAA/B;;AAEA,WAAO2F,iBAAP;AACD,GAjDD;AAkDD;;AAED,SAASU,gBAAT,GAA4B;AAC1B,SAAO,UAASvB,GAAT,EAAc;AACnB,QAAMwB,iBAAiB,IAAIxV,OAAJ,GACpBG,IADoB,CACf,SADe,CAAvB;;AAGA,oBAAK6T,IAAI7E,MAAT,EAAiB,UAASzV,KAAT,EAAgBkD,CAAhB,EAAkB;AACjC,UAAM6Y,UAAUlG,OAAOC,IAAP,CAAY9V,KAAZ,CAAhB;AACA,UAAM+D,IAAI/D,MAAM+b,QAAQ,CAAR,CAAN,CAAV;AACA,UAAM9X,IAAIjE,MAAM+b,QAAQ,CAAR,CAAN,CAAV;AACAD,qBAAenX,SAAf,CAAyB,CAAEhD,OAAOoC,CAAP,CAAF,EAAapC,OAAOsC,CAAP,CAAb,EAAwBjE,MAAMyV,MAA9B,CAAzB;AACD,KALD;AAMA,WAAOqG,cAAP;AACD,GAXD;AAYD;;AAED;AACA,IAAM1B,UAAU;AACd4B,UAAQ3B,WADM;AAEdvF,YAAUyF,aAFI;AAGd,oBAAkBE,kBAHJ;AAId,sBAAoBC,oBAJN;AAKd,2BAAyBE,wBALX;AAMd,6BAA2BE,0BANb;AAOdnK,UAAQoK,WAPM;AAQdrV,QAAMuV,SARQ;AASdgB,cAAYf,eATE;AAUd,kBAAgBW;AAVF,CAAhB,C;;;;;;;;;;;;QCrOgBK,c,GAAAA,c;AAAT,SAASA,cAAT,CAAwB9R,GAAxB,EAA6B+R,EAA7B,EAAiCnc,KAAjC,EAAwC;AAC7C,MAAI,OAAOmc,EAAP,IAAa,QAAjB,EACE,OAAOD,eAAe9R,GAAf,EAAoB+R,GAAGna,KAAH,CAAS,GAAT,CAApB,EAAmChC,KAAnC,CAAP,CADF,KAEK,IAAImc,GAAGhd,MAAH,IAAW,CAAX,IAAgBa,UAAQiF,SAAxB,IAAqCmF,QAAQ,IAA7C,IACP,OAAOA,IAAI+R,GAAG,CAAH,CAAJ,CAAP,KAAsB,WADnB,EAEH,OAAO/R,IAAI+R,GAAG,CAAH,CAAJ,IAAanc,KAApB,CAFG,KAGA,IAAImc,GAAGhd,MAAH,IAAW,CAAf,EACH,OAAOiL,GAAP,CADG,KAEA,IAAI,OAAO+R,EAAP,KAAc,WAAd,IAA6B,OAAO/R,GAAP,KAAe,WAA5C,IACJ+R,OAAO,IADH,IACW/R,QAAQ,IADnB,IAEJ,OAAOA,IAAI+R,GAAG,CAAH,CAAJ,CAAP,KAAsB,WAFtB,EAGH,OAAO,IAAP,CAHG,KAKH,OAAOD,eAAe9R,IAAI+R,GAAG,CAAH,CAAJ,CAAf,EAA2BA,GAAGpX,KAAH,CAAS,CAAT,CAA3B,EAAwC/E,KAAxC,CAAP;AACH,C;;;;;;;;;;;;QCZeoc,oB,GAAAA,oB;;AAFhB;;AAEO,SAASA,oBAAT,CAA8BjO,OAA9B,EAAuC;AAC5C,MAAM2H,OAAO,IAAIuG,GAAJ,EAAb;AACAlO,UAAQrD,OAAR,CAAgB,UAAC2K,MAAD,EAAY;AAC1BI,WAAOC,IAAP,CAAY,sBAAQL,MAAR,CAAZ,EAA6BhE,GAA7B,CAAiC,UAACnI,GAAD,EAAS;AACxCwM,WAAKwG,GAAL,CAAShT,GAAT;AACD,KAFD;AAGD,GAJD;;AAMA,SAAOwM,IAAP;AACD,C;;;;;;;;;;;;;;;;;;;kBCPc,UAAUpP,IAAV,EAAgB;AAC7B,MAAI,CAACvD,UAAUhE,MAAf,EAAuB,OAAO,KAAKkT,OAAL,CAAa3L,IAAb,EAAP;AACvB,MAAIA,gBAAgBJ,iBAApB,EAA6B;AAC3B,SAAK+L,OAAL,GAAe3L,IAAf;AACA,WAAO,IAAP;AACD;AACC,SAAO6V,cAAcnd,IAAd,CAAmB,IAAnB,EAAyBsH,IAAzB,CAAP;AACH,C;;AAXD;;;;AACA;;AACA;;;;AASC;;AAED,SAAS6V,aAAT,CAAuBC,QAAvB,EAAiC;AAC/B,MAAInK,OAAJ;AAAA,MACI3E,OADJ;AAAA,MAEIlH,IAFJ;AAAA,MAGIc,MAHJ;AAAA,MAIImV,aAAa,EAJjB;AAAA,MAKI5H,KALJ;AAAA,MAMI6H,cANJ;AAAA,MAOI3P,KAPJ;AAAA,MAQItG,IARJ;;AAUAiH,YAAU,KAAKnH,MAAL,CAAYmH,OAAtB;AACAlH,SAAOgW,SAASG,QAAT,IAAqB,EAA5B;AACA9H,UAAS,OAAO2H,SAAS3H,KAAhB,KAA0B,WAA3B,GAA0C2H,SAAS3H,KAAnD,GAA2D,EAAnE;;AAEA;AACAA,UAAQ,oBAAO;AACbc,mBAAe,IADF;AAEbD,sBAAkB,IAFL;AAGbkH,aAAS,EAHI;AAIbC,cAAU,IAJG;AAKb/H,cAAU,IALG;AAMbC,eAAW,IANE;AAObxE,cAAU;AAPG,GAAP,EAQLsE,KARK,CAAR;;AAUA,MAAIA,MAAMc,aAAN,KAAwB,QAA5B,EAAsC;AACpCrO,aAAS,QAAT;AACD,GAFD,MAGK,IAAIuN,MAAMc,aAAN,KAAwB,YAA5B,EAAyC;AAC5CrO,aAAS,YAAT;AACD,GAFI,MAGA,IAAIuN,MAAMc,aAAN,KAAwB,eAA5B,EAA6C;AAChD,QAAI,CAACd,MAAMgI,QAAP,IAAmB,CAAChI,MAAMC,QAA9B,EAAwC;AACtCxN,eAAS,MAAT;AACD;AACD;AACD,GALI,MAMA,IAAIuN,MAAMc,aAAV,EAAyB;AAC5B,QAAI,CAACd,MAAMgI,QAAP,IAAmB,CAAChI,MAAMC,QAA9B,EAAwC;AACtCxN,eAAS,QAAT;AACD,KAFD,MAGK,IAAIuN,MAAMgI,QAAN,IAAkB,CAAChI,MAAMC,QAA7B,EAAuC;AAC1C,UAAID,MAAMgI,QAAN,YAA0B3d,KAA1B,IAAmC2V,MAAMgI,QAAN,CAAe1d,MAAf,GAAwB,CAA/D,EAAkE;AAChEmI,iBAAS,uBAAT;AACAmV,mBAAWnY,IAAX,CAAgBuQ,MAAMgI,QAAtB;AACD,OAHD,MAIK;AACHvV,iBAAS,gBAAT;AACD;AACF,KARI,MASA,IAAIuN,MAAMC,QAAN,IAAkB,CAACD,MAAMgI,QAA7B,EAAuC;AAC1CvV,eAAS,UAAT;AACAmV,iBAAWnY,IAAX,CAAgBoJ,OAAhB;AACD,KAHI,MAIA,IAAImH,MAAMgI,QAAN,IAAkBhI,MAAMC,QAA5B,EAAsC;AACzC,UAAID,MAAMgI,QAAN,YAA0B3d,KAA1B,IAAmC2V,MAAMgI,QAAN,CAAe1d,MAAf,GAAwB,CAA/D,EAAkE;AAChEmI,iBAAS,yBAAT;AACAmV,mBAAWnY,IAAX,CAAgBuQ,MAAMgI,QAAtB;AACAJ,mBAAWnY,IAAX,CAAgBoJ,OAAhB;AACD,OAJD,MAKK;AACHpG,iBAAS,kBAAT;AACAmV,mBAAWnY,IAAX,CAAgBoJ,OAAhB;AACD;AACF;AACF;;AAED,MAAI,CAACpG,MAAL,EAAa;;AAEX;AACA;AACA,QAAI,OAAOkV,SAAS/G,MAAhB,KAA2B,QAA/B,EAAwC;AACtCnO,eAAS,QAAT;AACD;;AAED;AACA;AACA,QAAIkV,SAAS/G,MAAT,YAA2BvW,KAA3B,IAAoCsd,SAAS/G,MAAT,CAAgBtW,MAAhB,GAAyB,CAAjE,EAAmE;;AAEjE;AACA;AACA,UAAIqd,SAAS/G,MAAT,CAAgB,CAAhB,EAAmBV,SAAnB,KAAiC,OAAOyH,SAAS/G,MAAT,CAAgB,CAAhB,EAAmBzV,KAA1B,IAAmC,QAAnC,IAA+Cwc,SAAS/G,MAAT,CAAgB,CAAhB,EAAmBzV,KAAnB,IAA4B,IAA5G,CAAJ,EAAuH;AACrHsH,iBAAS,UAAT;AACAmV,mBAAWnY,IAAX,CAAgBoJ,OAAhB;AACD;;AAED;AACA;AACA,UAAI,OAAO8O,SAAS/G,MAAT,CAAgB,CAAhB,EAAmBA,MAA1B,IAAoC,QAAxC,EAAiD;AAC/CnO,iBAAS,gBAAT;AACD;;AAED;AACA,UAAI,KAAKf,MAAL,CAAYE,IAAZ,KAAqB,SAArB,IAAkCoP,OAAOC,IAAP,CAAY0G,SAAS/G,MAAT,CAAgB,CAAhB,MAAuB,CAAvB,IAA4B,OAAO+G,SAAS/G,MAAT,CAAgB,CAAhB,EAAmBA,MAA1B,KAAqC,QAA7E,CAAtC,EAA8H;AAC5HnO,iBAAS,cAAT;AACD;;AAED;AACA;AACA,UAAIkV,SAAS/G,MAAT,CAAgB,CAAhB,EAAmBzV,KAAnB,YAAoCd,KAAxC,EAA8C;AAC5CoI,iBAAS,kBAAT;AACAmV,mBAAWnY,IAAX,CAAgBoJ,OAAhB;AACD;;AAED;AACA;AACA,UAAI,OAAO8O,SAAS/G,MAAT,CAAgB,CAAhB,CAAP,KAA8B,QAA9B,IACC,OAAO+G,SAASxB,KAAhB,KAA0B,WAD/B,EAC2C;AACvC1T,iBAAS,QAAT;AACA;AACAuN,cAAMmG,KAAN,GAAcwB,SAASxB,KAAvB;AACH;;AAED;AACA;AACA,UAAI,CAAC,OAAOwB,SAAS/G,MAAT,CAAgB,CAAhB,CAAP,KAA8B,QAA9B,IAA0C,OAAO+G,SAAS/G,MAAT,CAAgB,CAAhB,CAAP,IAA6B,QAAxE,KAAqF,OAAO+G,SAASxB,KAAhB,KAA0B,WAAnH,EAA+H;AAC7H1T,iBAAS,MAAT;AACD;;AAED;AACA;AACA,UAAI,CAACA,MAAL,EAAa;AACXA,iBAAS,YAAT;AACD;AACF;;AAED,QAAI,CAACA,MAAL,EAAa;AACXA,eAAS,YAAT;AACD;AACF;;AAED;AACA,MAAI,KAAKf,MAAL,CAAYwG,KAAZ,KAAsB9H,SAA1B,EAAqC;AACnC,QAAIuB,KAAKsW,YAAT,EAAuB;AACrB/P,cAAQvG,KAAKsW,YAAb;AACD,KAFD,MAGK;AACH/P,cAAQgQ,gBAAgBlI,KAAhB,CAAR;AACD;AACD,SAAKtO,MAAL,CAAYwG,KAAZ,GAAoBA,KAApB;AACD;;AAED;AACA,MAAI,CAAC,KAAKxG,MAAL,CAAYE,IAAjB,EAAuB;AACrB,QAAID,KAAKwW,aAAL,IAAsBxW,KAAKwW,aAAL,CAAmBC,UAA7C,EAAyD;AACvDxW,aAAOD,KAAKwW,aAAL,CAAmBC,UAA1B;AACD,KAFD,MAGK;AACHxW,aAAOyW,eAAe5V,MAAf,CAAP;AACD;AACD,SAAKf,MAAL,CAAYE,IAAZ,GAAmBA,IAAnB;AACD;;AAED;AACAiW,mBAAiBpW,kBAAQgB,MAAR,CAAeW,KAAf,CAAqB,IAArB,EAA2B,CAACX,MAAD,EAASjC,MAAT,CAAgBoX,UAAhB,CAA3B,CAAjB;;AAEA;AACApK,YAAUqK,eAAe,oBAAOF,QAAP,EAAiB,EAAE,SAAS3H,KAAX,EAAjB,CAAf,CAAV;;AAEA;AACA,MAAIvN,OAAON,OAAP,CAAe,UAAf,IAA6B,CAAC,CAAlC,EAAqC;AACnCqL,YAAQ4B,YAAR,CAAqB,CAArB,EAAwB,UAASjU,KAAT,EAAgBkD,CAAhB,EAAkB;AACxC,aAAO,IAAIia,IAAJ,CAASnd,KAAT,CAAP;AACD,KAFD;AAGD;;AAEDqS,UAAQ6B,SAAR,CAAkB,CAAlB,EAAqB,UAASlU,KAAT,EAAgBkD,CAAhB,EAAkB;AACrC,WAAO,kCAAclD,KAAd,CAAP;AACD,GAFD;;AAIA,OAAKqS,OAAL,GAAeA,OAAf;;AAEA,MAAImK,SAASjG,kBAAb,EAAiC;AAC/B,SAAKA,kBAAL,GAA0BiG,SAASjG,kBAAnC;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASwG,eAAT,CAAyBlI,KAAzB,EAAgC;AAC9B,MAAIuI,WAAWvI,MAAMc,aAAN,GAAsBd,MAAMc,aAAN,CAAoBvM,OAApB,CAA4B,GAA5B,EAAiC,GAAjC,CAAtB,GAA8D,EAA7E;AAAA,MACI2D,KADJ;;AAGAA,UAAQqQ,SAAShU,OAAT,CAAkB,MAAlB,EAA0B,UAAS4Q,CAAT,EAAW;AAC3C,WAAOA,EAAEqD,WAAF,EAAP;AACD,GAFO,CAAR;;AAIA,MAAIxI,MAAMa,gBAAV,EAA4B;AAC1B3I,aAAS,QAAQ8H,MAAMa,gBAAvB;AACD;AACD,SAAO3I,KAAP;AACD;;AAED,SAASmQ,cAAT,CAAwB5V,MAAxB,EAAgC;AAC9B,MAAIb,aAAJ;AACA,UAAQa,MAAR;AACE,SAAK,QAAL;AACEb,aAAO,QAAP;AACA;AACF,SAAK,UAAL;AACEA,aAAO,MAAP;AACA;AACF,SAAK,gBAAL;AACA,SAAK,uBAAL;AACEA,aAAO,KAAP;AACA;AACF,SAAK,kBAAL;AACA,SAAK,yBAAL;AACEA,aAAO,MAAP;AACA;AACF,SAAK,QAAL;AACEA,aAAO,gBAAP;AACA;AACF,SAAK,MAAL;AACA,SAAK,YAAL;AACA;AACEA,aAAO,OAAP;AArBJ;AAuBA,SAAOA,IAAP;AACD,C;;;;;;;;;;;;;;;kBChNc,UAAS0T,GAAT,EAAc;AAC3B,MAAImD,cAAJ;AACAC,qBAAmB,YAAU;AAC3B,QAAID,KAAJ,EAAW;AACTE,mBAAaF,KAAb;AACD;AACD,QAAMG,QAAStD,IAAI3H,OAAJ,CAAYrT,MAAZ,GAAqB,EAAtB,GAA4B,IAA5B,GAAmC,GAAjD;AACAme,YAAQnc,WAAW,YAAU;AAC3B,sBAAKgZ,IAAI3H,OAAT,EAAkB,UAASkL,KAAT,EAAe;AAC/B,YAAMC,UAAUD,MAAM3N,IAAN,CAAWC,UAAX,CAAsBxD,EAAtC;AACA,YAAImR,OAAJ,EAAa;AACX,cAAMC,cAAcD,QAAQnU,OAAR,CAAgBG,UAAhB,CAA2BA,UAA3B,CAAsCkU,WAA1D;AACA,cAAIra,QAAQoa,WAAZ;AACA,cAAIF,MAAMnX,MAAN,CAAa+H,MAAb,IAAuBoP,MAAMnX,MAAN,CAAa+H,MAAb,CAAoBC,IAA3C,KAAoDmP,MAAMnX,MAAN,CAAa+H,MAAb,CAAoBzN,QAApB,KAAiC,MAAjC,IAA2C6c,MAAMnX,MAAN,CAAa+H,MAAb,CAAoBzN,QAApB,KAAiC,OAAhI,CAAJ,EAA8I;AAC5I,gBAAMid,mBAAmBH,QAAQnU,OAAR,CAAgBU,WAAhB,GAA8ByT,QAAQnU,OAAR,CAAgBU,WAAhB,CAA4B2T,WAA1D,GAAwE,CAAjG;AACA,gBAAME,mBAAmBJ,QAAQnU,OAAR,CAAgBwU,eAAhB,GAAkCL,QAAQnU,OAAR,CAAgBwU,eAAhB,CAAgCH,WAAlE,GAAgF,CAAzG;AACAra,oBAAQoa,cAAcG,gBAAd,GAAiCD,gBAAzC;AACD;;AAEDH,kBAAQM,MAAR,CAAe;AACbza;AADa,WAAf;AAID;AACF,OAhBD;AAiBD,KAlBO,EAkBLia,KAlBK,CAAR;AAmBD,GAxBD;;AA0BA,SAAOS,UAAP;AACD,C;;AAtDD;;;;AAEA;;AACA;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;;;;AACA;;AAEA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;AA+BC;;AAED,SAASA,QAAT,GAAmB;AACjB,MAAMC,QAAQ;AACZ1J,8BADY;AAEZuH,4BAFY;AAGZxL,0BAHY;AAIZmE,8BAJY;AAKZ,cAAU,IAAIyJ,gBAAJ,EALE;AAMZ,iBAAa,IAAIC,kBAAJ,EAND;AAOZ,yBAAqB,IAAIC,0BAAJ,EAPT;AAQZ,4BAAwB,IAAIC,4BAAJ,EARZ;AASZ,oBAAgB,IAAIC,qBAAJ,EATJ;AAUZ,eAAW,IAAIC,iBAAJ,EAVC;AAWZ,kBAAc,IAAIC,oBAAJ;AAXF,GAAd;;AAcA,MAAMC,UAAU;AACd;AACA,QAFc,EAGd,aAHc,EAId,WAJc,EAKd,KALc,EAMd,OANc,EAOd,OAPc,EAQd,MARc,EASd,KATc,EAUd,MAVc,EAWd,QAXc;;AAad;AACA,mBAdc,EAed,wBAfc,EAgBd,sBAhBc,EAiBd,gBAjBc,EAkBd,iBAlBc,EAmBd,iBAnBc,EAoBd,mBApBc,CAAhB;;AAuBA,MAAMC,cAAc,SAAdA,WAAc,CAACpV,OAAD,EAAUqV,WAAV,EAA0B;AAC5C,WAAOC,SAAS9S,OAAO+S,gBAAP,CAAwBvV,OAAxB,cAA2CqV,WAA3C,EAA0DzV,OAA1D,CAAkE,IAAlE,EAAwE,EAAxE,CAAT,CAAP;AACD,GAFD;;AAIA,WAAS4V,iBAAT,GAA4B;AAC1B,QAAMC,mBAAmB;AACvBC,cAAQ,KAAK/M,EAAL,GAAUmB,aAAV,CAAwB,MAAM,KAAK/M,MAAL,CAAY4G,KAAlB,GAA0B,sBAAlD,CADe;AAEvB4B,aAAO;AACLqD,iBAAS,KAAK7L,MAAL,CAAY6G;AADhB,OAFgB;AAKvB1G,YAAM;AACJ0G,6BAAa,KAAK7G,MAAL,CAAY8G,YAAzB,CADI;AAEJsO,iBAAS,EAFL;AAGJlV,cAAM,KAAKF,MAAL,CAAYE,IAAZ,CAAiB2C,OAAjB,CAAyB,aAAzB,EAAwC,EAAxC;AAHF;AALiB,KAAzB;;AAYA,QAAM+V,mBAAmB,KAAKhN,EAAL,EAAzB;;AAEA,QAAI2B,SAASqL,iBAAiBC,YAA9B;;AAEAtL,cAAW8K,YAAYO,gBAAZ,EAA8B,KAA9B,IAAuCP,YAAYO,gBAAZ,EAA8B,QAA9B,CAAlD;;AAEA,QAAI,KAAK5Y,MAAL,CAAYyG,SAAhB,EAA2B;AACzB,UAAMqS,eAAe,KAAKlN,EAAL,GAAUmB,aAAV,CAAwB,qBAAxB,CAArB;AACA,UAAI+L,YAAJ,EAAkB;AAChBvL,kBAAUuL,aAAaD,YAAvB;AACD,OAFD,MAEO;AACLtL,kBAAUgL,SACR9S,OACG+S,gBADH,CACoB,KAAK5M,EAAL,EADpB,EAC+B,IAD/B,EAEG,WAFH,EAEgB/I,OAFhB,CAEwB,IAFxB,EAE6B,EAF7B,CADQ,CAAV;AAKD;AACF;;AAED,QAAI,KAAK7C,MAAL,CAAY0G,QAAhB,EAA0B;AACxB,UAAMqS,kBAAkB,KAAKnN,EAAL,GAAUmB,aAAV,CAAwB,wBAAxB,CAAxB;AACA,UAAIgM,eAAJ,EAAqB;AACnBxL,kBAAUwL,gBAAgBF,YAA1B;AACD,OAFD,MAEO;AACLtL,kBAAUgL,SACR9S,OACG+S,gBADH,CACoB,KAAK5M,EAAL,EADpB,EAC+B,IAD/B,EAEG,WAFH,EAEgB/I,OAFhB,CAEwB,IAFxB,EAE6B,EAF7B,CADQ,CAAV;AAKD;AACF;;AAED,QAAI,KAAK7C,MAAL,CAAY2G,KAAhB,EAAuB;AACrB,UAAMqS,eAAe,KAAKpN,EAAL,GAAUmB,aAAV,CAAwB,qBAAxB,CAArB;AACA,UAAIiM,YAAJ,EAAkB;AAChBzL,kBAAUyL,aAAaH,YAAvB;AACD,OAFD,MAEO;AACLtL,kBAAUgL,SACR9S,OACG+S,gBADH,CACoB,KAAK5M,EAAL,EADpB,EAC+B,IAD/B,EAEG,WAFH,EAEgB/I,OAFhB,CAEwB,IAFxB,EAE6B,EAF7B,CADQ,CAAV;AAKD;AACF;;AAED,QAAI5F,QAAQ,KAAK2O,EAAL,GAAUmB,aAAV,CAAwB,WAAxB,EAAqCuK,WAArC,IACPe,YAAYO,gBAAZ,EAA8B,MAA9B,IAAwCP,YAAYO,gBAAZ,EAA8B,OAA9B,CADjC,CAAZ;AAEA,QAAI3b,QAAQ,CAAZ,EAAe;AACbA,cAAQ,CAAR;AACD;;AAED,QAAMgc,kBAAkB;AACtBxQ,YAAM;AACJxL,oBADI;AAEJsQ,gBACEA,SAAS,CAAT,GACEA,MADF,GAEI7O;AALF;AADgB,KAAxB;;AAUA,QAAMwa,iBAAiB,4BAAW,EAAX,EAAeD,eAAf,EAAgC,KAAKjZ,MAArC,EAA6C0Y,gBAA7C,CAAvB;;AAEA,WAAOQ,cAAP;AACD;;AAED,kBAAKd,OAAL,EAAc,UAASlY,IAAT,EAAe7D,KAAf,EAAsB;AAClCub,UAAM1X,IAAN,IAAc;AACZiM,cAAQ,kBAAU;AAAA;;AAChB,YAAMnG,UAAUyS,kBAAkB5f,IAAlB,CAAuB,IAAvB,CAAhB;;AAEA;AACA,YAAMsgB,WAAW,gDAAwB,KAAKrN,OAAL,CAAanN,MAArC,CAAjB;AACA,YAAIya,YAAY,EAAhB;AACA,YAAIpT,QAAQ2F,QAAR,KAAqB,SAArB,KAAmCzL,SAAS,KAAT,IAAkBA,SAAS,gBAA3B,IAA+CA,SAAS,MAAxD,IAAkEA,SAAS,WAA3E,IAA0FA,SAAS,aAAtI,CAAJ,EAA0J;AACxJkZ,sBAAY,KAAKtN,OAAL,CAAanN,MAAzB;AACA,eAAKmN,OAAL,CAAanN,MAAb,IAAuB,KAAKmN,OAAL,CAAanN,MAAb,CAAoB,CAApB,CAAvB,4BAAkD,0CAAkB,KAAKmN,OAAL,CAAanN,MAA/B,EAAuCwa,QAAvC,CAAlD;AACA,cAAG,CAACnT,QAAQgF,SAAZ,EAAsB;AACpBhF,oBAAQuC,IAAR,GAAe;AACb7K,iBAAG;AACDvD,yBAAS;AACPd,uBAAK;AADE,iBADR;AAIDggB,sBAAM;AACJ1U,0BAAQ;AAAA,2BAAQ2E,CAAR;AAAA;AADJ;AAJL;AADU,aAAf;AAUD;AACF;;AAED;AACA,YAAItD,QAAQ+E,KAAZ,EAAmB;AACjB,eAAKe,OAAL,CAAanN,MAAb,IAAuB,KAAKmN,OAAL,CAAanN,MAAb,CAAoB,CAApB,CAAvB,4BAAkD,8BAAe,KAAKmN,OAAL,CAAanN,MAA5B,CAAlD;AACD;;AAED,YAAI,CAAC,CAAC,KAAKqB,MAAL,CAAYsZ,aAAd,IAA+BtT,QAAQ7F,IAAR,CAAaiV,OAAb,CAAqBxc,MAApD,IAA8D,KAAKkT,OAAnE,IAA8E,KAAKA,OAAL,CAAa7L,IAA/F,EAAqG;AACnG,cAAMsZ,cAAc,KAAKzN,OAAL,CAAa7L,IAAb,IAAqB,EAAzC;;AADmG,kCAE7EsZ,WAF6E,CAE3FrZ,IAF2F;AAAA,cAE3FA,KAF2F,qCAEpF,EAFoF;;AAGnG,cAAIsZ,aAAa,CAAjB;AACA,cAAMC,gBAAgB,CAAC,UAAD,CAAtB;AACA,cAAIA,cAAc5U,QAAd,CAAuB3E,KAAvB,CAAJ,EAAkC;AAChCsZ,yBAAa,CAAb;AACD;AACDxT,kBAAQ7F,IAAR,CAAaiV,OAAb,CAAqBvC,MAArB,CAA4B2G,UAA5B;AACD;;AAED,YAAI,KAAKrZ,IAAL,GAAY,CAAZ,EAAevH,MAAf,KAA0B,CAA1B,IAA+B,KAAKuH,IAAL,GAAYvH,MAAZ,KAAuB,CAA1D,EAA6D;AAC3D,cAAMmW,MAAM,oBAAZ;AACA,cAAMqB,YAAY,KAAKpQ,MAAL,CAAYuH,YAAZ,CAAyBwH,GAAzB,KAAiCA,GAAnD;AACA,cAAI,KAAK/O,MAAL,CAAYwH,iBAAhB,EAAmC;AACjC,iBAAK0G,OAAL,CAAakC,SAAb;AACD;AACD;AACD;;AAED,YAAIsJ,eAAe,KAAnB;;AAEA,YAAIxZ,SAAS,OAAb,EAAsB;AACpB;AACA8F,kBAAQ+B,MAAR,CAAeC,IAAf,GAAsB,KAAtB;AACAhC,kBAAQ7F,IAAR,CAAaiV,OAAb,GAAuB,CAAC,CACtB,KAAKpV,MAAL,CAAYwG,KAAZ,IAAqB,KAAKrG,IAAL,GAAY,CAAZ,EAAe,CAAf,CADC,EAEtB,KAAKA,IAAL,GAAY,CAAZ,EAAe,CAAf,CAFsB,CAAD,CAAvB;AAIAuZ,yBAAe,IAAf;AACD,SARD,MASK,IAAIxZ,SAAS,KAAT,IAAkBA,SAAS,OAA/B,EAAwC;AAC3C8F,kBAAQ7F,IAAR,CAAaiV,OAAb,GAAuB,KAAKjV,IAAL,GAAY3B,KAAZ,CAAkB,CAAlB,CAAvB;AACD,SAFI,MAGA;;AAEH;AACA,cAAI0B,KAAKO,OAAL,CAAa,aAAb,IAA8B,CAAC,CAAnC,EAAsC;AACpCuF,oBAAQuC,IAAR,CAAaoR,OAAb,GAAuBzZ,KAAKO,OAAL,CAAa,aAAb,IAA8B,CAAC,CAAtD;AACD;;AAED,cAAI,gCAAa,KAAKN,IAAL,GAAY,CAAZ,EAAe,CAAf,CAAb,CAAJ,EAAqC;AACnC;AACA6F,oBAAQuC,IAAR,CAAa/K,CAAb,GAAiBwI,QAAQuC,IAAR,CAAa/K,CAAb,IAAkB,EAAnC;AACAwI,oBAAQuC,IAAR,CAAa/K,CAAb,CAAe0C,IAAf,GAAsB,YAAtB;AACA8F,oBAAQuC,IAAR,CAAa/K,CAAb,CAAe6b,IAAf,GAAsBrT,QAAQuC,IAAR,CAAa/K,CAAb,CAAe6b,IAAf,IAAuB;AAC3C1U,sBAAQ,KAAK3E,MAAL,CAAY8H,UAAZ,IAA0B,iCAAoB,KAAK3H,IAAL,GAAY,CAAZ,EAAe,CAAf,CAApB,EAAuC,KAAKA,IAAL,GAAY,CAAZ,IAAiB,KAAKA,IAAL,GAAY,CAAZ,EAAe,CAAf,CAAjB,GAAqC,KAAKA,IAAL,GAAY,CAAZ,EAAe,CAAf,CAA5E,CADS;AAE3CyZ,uBAAS,EAAEnY,KAAK,CAAP;AAFkC,aAA7C;;AAKAuE,oBAAQ7F,IAAR,CAAaiV,OAAb,CAAqB,CAArB,IAA0B,EAA1B;AACA,4BAAK,KAAKtJ,OAAL,CAAa7M,YAAb,CAA0B,CAA1B,CAAL,EAAmC,UAASJ,IAAT,EAAelC,CAAf,EAAiB;AAClD,kBAAIA,IAAI,CAAR,EAAW;AACTkC,uBAAO,IAAI+X,IAAJ,CAAS/X,IAAT,CAAP;AACD;AACDmH,sBAAQ7F,IAAR,CAAaiV,OAAb,CAAqB,CAArB,EAAwBzY,CAAxB,IAA6BkC,IAA7B;AACD,aALD;AAMAmH,oBAAQ7F,IAAR,CAAaiV,OAAb,CAAqB,CAArB,EAAwB,CAAxB,IAA6B,GAA7B;AACApP,oBAAQ7F,IAAR,CAAa3C,CAAb,GAAiB,GAAjB;AACA,gBAAI,KAAKwC,MAAL,CAAY6H,OAAZ,IAAuB,KAAK1H,IAAL,GAAY,CAAZ,EAAevH,MAAf,GAAwB,CAAnD,EAAsD;AACpDoN,sBAAQ7F,IAAR,CAAa0Z,MAAb,GAAsB,CAAE,KAAK/N,OAAL,CAAajL,SAAb,CAAuB,CAAvB,EAA0BrC,KAA1B,CAAgC,CAAhC,CAAF,CAAtB;AACD;AACF,WArBD,MAsBK;AACH;AACAwH,oBAAQuC,IAAR,CAAa/K,CAAb,GAAiBwI,QAAQuC,IAAR,CAAa/K,CAAb,IAAkB,EAAnC;AACAwI,oBAAQuC,IAAR,CAAa/K,CAAb,CAAe0C,IAAf,GAAsB,UAAtB;AACA8F,oBAAQuC,IAAR,CAAa/K,CAAb,CAAesc,UAAf,GAA4B,KAAKhO,OAAL,CAAa7M,YAAb,CAA0B,CAA1B,EAA6BT,KAA7B,CAAmC,CAAnC,CAA5B;AACA,gBAAI,KAAKwB,MAAL,CAAY6H,OAAZ,IAAuB,KAAK1H,IAAL,GAAY,CAAZ,EAAevH,MAAf,GAAwB,CAAnD,EAAsD;AACpDoN,sBAAQ7F,IAAR,CAAa0Z,MAAb,GAAsB,CAAE,KAAK/N,OAAL,CAAajL,SAAb,CAAuB,CAAvB,EAA0BrC,KAA1B,CAAgC,CAAhC,CAAF,CAAtB;AACD;AACF;;AAED,cAAI,KAAK2B,IAAL,GAAY,CAAZ,EAAevH,MAAf,KAA0B,CAA9B,EAAiC;AAC/BoN,oBAAQ+B,MAAR,CAAeC,IAAf,GAAsB,KAAtB;AACA0R,2BAAe,IAAf;AACD;;AAED,0BAAK,KAAKvZ,IAAL,GAAY,CAAZ,CAAL,EAAqB,UAAStB,IAAT,EAAelC,CAAf,EAAiB;AACpC,gBAAIA,IAAI,CAAR,EAAW;AACTqJ,sBAAQ7F,IAAR,CAAaiV,OAAb,CAAqBrX,IAArB,CAA0B,KAAK+N,OAAL,CAAa7M,YAAb,CAA0BtC,CAA1B,CAA1B;AACD;AACF,WAJoB,CAInB4P,IAJmB,CAId,IAJc,CAArB;AAKD;;AAED,YAAImN,YAAJ,EAAiB;AACf,cAAMK,gBAAgB,KAAKnO,EAAL,GAAUmB,aAAV,CAAwB,iBAAxB,CAAtB;AACA,cAAIgN,aAAJ,EAAmB;AACjBA,0BAAcC,MAAd;AACAhU,oBAAQyC,IAAR,CAAaxL,KAAb,GAAqB,KAAK2O,EAAL,GAAUmB,aAAV,CAAwB,WAAxB,EAAqCuK,WAA1D;AACD;AACDtR,kBAAQ+B,MAAR,CAAeC,IAAf,GAAsB,KAAtB;AACD;;AAED,YAAMiS,yCAAyC,CAAC,MAAD,EAAS,aAAT,EAAwB,WAAxB,EAAqC,MAArC,EAA6C,QAA7C,EAAuD,MAAvD,CAA/C;;AAEA,YAAIjU,QAAQ+D,wBAAR,IACC/D,QAAQ+D,wBAAR,CAAiC/B,IADlC,IAECiS,uCAAuCxZ,OAAvC,CAA+CuF,QAAQ9F,IAAvD,IAA+D,CAAC,CAFrE,EAGE;AACA,cAAM0H,UAAU5B,QAAQ7F,IAAR,CAAaiV,OAAb,IAAwBpP,QAAQ7F,IAAR,CAAaiV,OAAb,CAAqB,CAArB,CAAxC;AACA,cAAIxN,WAAWA,QAAQhP,MAAR,GAAiB,CAAhC,EAAmC;AACjC,gBAAMshB,uBAAuB;AAC3B3R,oBAAM,GADqB;AAE3BtH,qBAAO,IAAI2V,IAAJ,CAAShP,QAAQA,QAAQhP,MAAR,GAAiB,CAAzB,CAAT,CAFoB;AAG3BuhB,qBAAOnU,QAAQ+D,wBAAR,CAAiCvG;AAHb,aAA7B;AAKAwC,oBAAQoU,OAAR,gCAAuBpU,QAAQoU,OAAR,IAAmB,EAA1C,IAA+CF,oBAA/C;AACD;AACF;;AAED,YACE,EAAElU,QAAQ9M,OAAR,IAAmB8M,QAAQ9M,OAAR,CAAgB8O,IAAhB,KAAyB,KAA9C,MAEChC,QAAQ+B,MAAR,CAAeC,IAAf,KAAwB,IAAxB,IACAhC,QAAQ+B,MAAR,IACI/B,QAAQ+B,MAAR,CAAe7O,OADnB,IAEI8M,QAAQ+B,MAAR,CAAe7O,OAAf,CAAuB8O,IAL5B,CADF,EAOK;;AAEH;AACAhC,kBAAQ9M,OAAR,GAAkB;AAChBmhB,sBAAUC,yBADM;AAEhB3V,oBAAQ;AACN6B,qBAAO,KAAKxG,MAAL,CAAY9G,OAAZ,CAAoByL,MAApB,CAA2B6B,KAD5B;AAEN/M,qBAAO,eAACA,MAAD,EAAQ8gB,KAAR,EAAeC,EAAf,EAAmBne,KAAnB,EAA6B;AAClC,oBAAIoe,iBAAiBC,yBAAyB7hB,IAAzB,CAA8B,KAA9B,EAAoCY,MAApC,EAA2C8gB,KAA3C,EAAkDC,EAAlD,EAAsDne,KAAtD,CAArB;AACA,oBAAI,MAAK2D,MAAL,CAAY9G,OAAZ,IAAuB,MAAK8G,MAAL,CAAY9G,OAAZ,CAAoByL,MAA3C,IAAqD,MAAK3E,MAAL,CAAY9G,OAAZ,CAAoByL,MAApB,CAA2BlL,KAApF,EACA;AACEghB,mCAAiB,MAAKza,MAAL,CAAY9G,OAAZ,CAAoByL,MAApB,CAA2BlL,KAA3B,CAAiCZ,IAAjC,CAAsC,KAAtC,EAA4C4hB,cAA5C,EAA4DF,KAA5D,EAAmEC,EAAnE,EAAuEne,KAAvE,CAAjB;AACA;AACA,sBAAI2J,QAAQ2F,QAAR,KAAqB,SAArB,KAAmCzL,SAAS,KAAT,IAAkBA,SAAS,gBAA3B,IAA+CA,SAAS,MAAxD,IACpCA,SAAS,WAD2B,IACZA,SAAS,aADhC,CAAJ,EACoD;AAClDua,qCAAiBnZ,WAAW,CAAEmZ,iBAAiB,GAAlB,GAAyBtB,SAAS9c,KAAT,CAA1B,EAA2Cse,OAA3C,CAAmD,CAAnD,CAAX,CAAjB;AACD;AACD;AACA,sBAAI3U,QAAQ+E,KAAZ,EAAmB;AACjB,wBAAGyP,OAAO,KAAV,EAAgB;AACdC,wCAAkB,MAAK3O,OAAL,CAAanN,MAAb,CAAoBtC,QAAM,CAA1B,EAA6B,CAA7B,CAAlB;AACD;AACF;AACD,yBAAOoe,cAAP;AACD;AACD;AACA,oBAAIzU,QAAQ2F,QAAR,KAAqB,SAArB,KAAmCzL,SAAS,KAAT,IAAkBA,SAAS,gBAA3B,IAA+CA,SAAS,MAAxD,IACpCA,SAAS,WAD2B,IACZA,SAAS,aADhC,CAAJ,EACoD;AAClDua,mCAAiB,CAAEA,iBAAiB,GAAlB,GAAyBtB,SAAS9c,KAAT,CAA1B,EAA2Cse,OAA3C,CAAmD,CAAnD,CAAjB;AACA,yBAAOrZ,WAAWmZ,cAAX,CAAP;AACD;AACD;AACA,oBAAIzU,QAAQ+E,KAAZ,EAAmB;AACjB,sBAAGyP,OAAO,KAAV,EAAgB;AACdC,sCAAkB,MAAK3O,OAAL,CAAanN,MAAb,CAAoBtC,QAAM,CAA1B,EAA6B,CAA7B,CAAlB;AACD;AACF;AACD,uBAAOoe,cAAP;AACD;AAjCK;AAFQ,WAAlB;AAsCD;;AAED,YAAIzU,QAAQ+B,MAAR,CAAeC,IAAf,KAAwB,IAA5B,EAAkC;AAC9B,cAAM4S,yBAAiB5U,OAAjB,CAAN;AACI;AACJ4U,oBAAUza,IAAV,CAAeqI,KAAf,GAAuBqS,oBAAoBtO,IAApB,CAAyB,IAAzB,CAAvB;;AAEAqO,oBAAU7S,MAAV,CAAiB+S,IAAjB,GAAwB,IAAxB,CAL8B,CAKA;;AAE9B;AACA,eAAKtR,IAAL,CAAUC,UAAV,CAAqB,IAArB,IAA6BxD,YAAG8U,QAAH,CAAYH,SAAZ,CAA7B;;AAEAI,qCAAmBniB,IAAnB,CAAwB,IAAxB,eAAkCmN,OAAlC,IAA2CiV,kBAAkB,4BAAM;AACjE,kBAAMlB,gBAAgB,MAAKnO,EAAL,GAAUmB,aAAV,CAAwB,iBAAxB,CAAtB;AACA,kBAAIgN,aAAJ,EAAmB;AACjB,oBACI/T,QAAQ+B,MAAR,CAAezN,QAAf,KAA4B,KAA5B,IACA0L,QAAQ+B,MAAR,CAAezN,QAAf,KAA4B,QAFhC,EAGE;AACAsgB,4BAAUnS,IAAV,CAAe8E,MAAf,IAAyBwM,cAAclB,YAAvC;AACA,wBAAKrP,IAAL,CAAUC,UAAV,CAAqB,IAArB,EAA2BiO,MAA3B,CAAkC,EAAEnK,QAAQqN,UAAUnS,IAAV,CAAe8E,MAAzB,EAAlC;AACD,iBAND,MAMO;AACL,sBAAIqN,UAAUnS,IAAV,CAAexL,KAAf,KAAyB,CAA7B,EAAgC;AAC9B2d,8BAAUnS,IAAV,CAAexL,KAAf,GAAuB,MAAK2O,EAAL,GAAU0L,WAAV,GACnBe,YAAY,MAAKzM,EAAL,EAAZ,EAAuB,MAAvB,CADmB,GAEnByM,YAAY,MAAKzM,EAAL,EAAZ,EAAuB,OAAvB,CAFJ;AAGD;AACDgP,4BAAUnS,IAAV,CAAexL,KAAf,IAAwB8c,cAAczC,WAAtC;AACA,wBAAK9N,IAAL,CAAUC,UAAV,CAAqB,IAArB,EAA2BiO,MAA3B,CAAkC,EAAEza,OAAO2d,UAAUnS,IAAV,CAAexL,KAAxB,EAAlC;AACD;AACF;AACF,aAnBD;AAoBAie,yBAAa,uBAAM;AACjB,oBAAK1R,IAAL,CAAUC,UAAV,CAAqB,IAArB,EAA2B0R,KAA3B;AACD;AAtBD;AAwBH,SAlCD,MAmCK;AACH,eAAK3R,IAAL,CAAUC,UAAV,CAAqB,IAArB,IAA6BxD,YAAG8U,QAAH,CAAY/U,OAAZ,CAA7B;AACD;AAEF,OArOW;AAsOZlG,cAAQ,kBAAU;AAChB;AACA,aAAKqM,MAAL;AACD,OAzOW;AA0OZiB,eAAS,mBAAU;AACjB,YAAI,KAAK5D,IAAL,CAAUC,UAAV,CAAqB,IAArB,CAAJ,EAAgC;AAC9B,eAAKD,IAAL,CAAUC,UAAV,CAAqB,IAArB,EAA2B2D,OAA3B;AACA,eAAK5D,IAAL,CAAUC,UAAV,CAAqB,IAArB,IAA6B,IAA7B;AACD;AACF;AA/OW,KAAd;AAiPD,GAlPD;;AAoPA,SAAOmO,KAAP;AACD;;AAED,SAASiD,mBAAT,CAA6BrS,KAA7B,EAAoCc,CAApC,EAAuC;AACrC,MAAMpJ,OAAO,KAAKF,MAAL,CAAYE,IAAzB;AACA,MAAI,KAAKsJ,IAAL,CAAUC,UAAV,CAAqBtB,UAArB,IACCjI,SAAS;AACV;gCAFJ,EAGoC;AAC5B,UAAMkb,QAAQ,KAAK5R,IAAL,CAAUC,UAAV,CAAqBtB,UAArB,CAAgCf,MAA9C;AACA,UAAKkC,EAAEkR,EAAF,IAAQY,MAAM3a,OAAN,CAAc6I,EAAEkR,EAAhB,IAAsB,CAAC,CAAhC,IACElR,KAAK,CAACA,EAAEkR,EAAR,IAAcY,MAAM3a,OAAN,CAAc6I,CAAd,IAAmB,CAAC,CADxC,EAC4C;AACxC,eAAOd,KAAP;AACH,OAHD,MAIK;AACH,YAAItI,SAAS,OAAT,IAAoBA,SAAS,KAAjC,EAAwC;AACtC,iBAAO,gBAAP;AACD,SAFD,MAGK;AACH,iBAAO,iBAAP;AACD;AACF;AACR,KAjBD,MAkBK;AACH,WAAOsI,KAAP;AACD;AACF;;AAED,SAASkS,wBAAT,CAAkCjhB,KAAlC,EAAyC8gB,KAAzC,EAAgDC,EAAhD,EAAoDne,KAApD,EAA2D;AACzD,MAAM6D,OAAO,KAAKF,MAAL,CAAYE,IAAzB;;AAEA,MAAI,KAAKsJ,IAAL,CAAUC,UAAV,CAAqBtB,UAArB,IACCjI,SAAS;AACV;gCAFJ,EAGoC;AAC5B,UAAMkb,QAAQ,KAAK5R,IAAL,CAAUC,UAAV,CAAqBtB,UAArB,CAAgCf,MAA9C;AACA,UAAIgU,MAAM3a,OAAN,CAAc+Z,EAAd,IAAoB,CAAC,CAAzB,EAA4B;AAC1B,eAAO/gB,KAAP;AACD;AACR,KARD,MASK;AACH,WAAOA,KAAP;AACD;AACF;;AAED,SAASud,kBAAT,CAA4B9J,EAA5B,EAA+B;AAC7B,MAAI,OAAOzH,MAAP,KAAkB,WAAtB,EAAmC;AACnCA,SAAO4V,QAAP,GAAkB5V,OAAOiS,MAAP,GAAgB,YAAU,CAAE,CAA9C;AACA,MAAIjS,OAAO/K,gBAAX,EAA6B;AAC3B+K,WAAO/K,gBAAP,CAAwB,QAAxB,EAAkCwS,EAAlC,EAAsC,IAAtC;AACD,GAFD,MAGK,IAAIzH,OAAO6V,WAAX,EAAwB;AAC3B7V,WAAO6V,WAAP,CAAmB,UAAnB,EAA+BpO,EAA/B;AACD;AACF,C;;;;;;;;;;;;;kBC3dc,UAAUqO,SAAV,EAAqBC,OAArB,EAA8B;AAC3C,MAAMC,WAAWpgB,KAAKC,GAAL,CAAS,IAAIsb,IAAJ,CAAS2E,SAAT,EAAoBjc,OAApB,KAAgC,IAAIsX,IAAJ,CAAS4E,OAAT,EAAkBlc,OAAlB,EAAzC,CAAjB;AACA,MAAMoc,SAAS,CACb,KADa,EAEb,KAFa,EAGb,KAHa,EAIb,KAJa,EAKb,KALa,EAMb,MANa,EAOb,MAPa,EAQb,KARa,EASb,MATa,EAUb,KAVa,EAWb,KAXa,EAYb,KAZa,CAAf;;AAeA;AACA,MAAID,YAAY,UAAhB,EAA4B;AAC1B,WAAO,UAASE,EAAT,EAAY;AACjB,UAAMC,OAAO,IAAIhF,IAAJ,CAAS+E,EAAT,CAAb;AACA,aAAOD,OAAOE,KAAKC,QAAL,EAAP,IAA0B,GAA1B,GAAgCD,KAAKE,WAAL,EAAvC;AACD,KAHD;AAID;AACD;AANA,OAOK,IAAIL,YAAY,QAAhB,EAA0B;AAC7B,aAAO,UAASE,EAAT,EAAY;AACjB,YAAMC,OAAO,IAAIhF,IAAJ,CAAS+E,EAAT,CAAb;AACA,eAAOD,OAAOE,KAAKC,QAAL,EAAP,IAA0B,GAA1B,GAAgCD,KAAKG,OAAL,EAAvC;AACD,OAHD;AAID;AACD;AANK,SAOA,IAAIN,YAAY,OAAhB,EAAyB;AAC5B,eAAO,UAAP;AACD;AACD;AAHK,WAIA;AACH,iBAAO,aAAP;AACD;AACF,C;;;;;;;;;;;;;;;kBCnCc,UAAUzV,OAAV,EAAmB;AAChC,MAAMuN,OAAOvN,QAAQ7F,IAAR,CAAaiV,OAA1B;AACA,MAAMlP,kBAAkB,IAAxB;AACA,MAAMiR,QAAQ,KAAK3N,IAAL,CAAUC,UAAV,CAAqBxD,EAAnC;AACA,MAAImP,UAAU,EAAd;AACA,MAAM4G,UAAU,KAAKpQ,EAAL,GAAUmB,aAAV,CAAwB,MAAM7G,gBAAgBlG,MAAhB,CAAuB4G,KAA7B,GAAqC,YAA7D,CAAhB;AACA,MAAMqV,eAAe/V,gBAAgBlG,MAAhB,CAAuB+H,MAA5C;;AAEA,MAAMI,aAAa,KAAKqB,IAAL,CAAUC,UAAV,CAAqBtB,UAArB,YACd;AACDyI,YAAQ,EADP;AAEDxJ,YAAQ,EAFP;AAGDgB,YAAQ,CAHP;AAIDC,WAAOhN,KAAK6gB,KAAL,CAAW,CAACF,QAAQnD,YAAR,GAAuB,EAAxB,IAA8B,EAAzC,CAJN;AAKDsD,WAAO;AALN,GADc,EAQdF,aAAa9T,UARC,CAAnB;;AAWA,MAAInC,QAAQ+B,MAAR,CAAelI,IAAnB,EAAyB;AACvBuV,cAAUpP,QAAQ+B,MAAR,CAAelI,IAAf,CAAoB0T,IAApB,CAAV;;AAEA;AACA,QAAM6I,gBAAgB,EAAtB;AACA,QAAMC,oBAAoB,EAA1B;AACA,QAAI9I,KAAK,CAAL,EAAQ,CAAR,MAAe,GAAnB,EAAwB;AACtB8I,wBAAkBte,IAAlB,CAAuBwV,KAAK,CAAL,CAAvB;AACD;AACD6B,YAAQ7Q,OAAR,CAAgB,kBAAU;AACxB,UAAI+X,aAAatW,QAAQ7F,IAAR,CAAaiV,OAAb,CAAqB9R,IAArB,CAA0B;AAAA,eAAQiZ,KAAK,CAAL,MAAYC,MAApB;AAAA,OAA1B,CAAjB;AACAH,wBAAkBte,IAAlB,CAAuBue,UAAvB;AACD,KAHD;AAIAtW,YAAQ7F,IAAR,CAAaiV,OAAb,GAAuBiH,iBAAvB;AACD,GAdD,MAcO;AACL,SAAK,IAAI1f,IAAI,CAAb,EAAgBA,IAAI4W,KAAK3a,MAAzB,EAAiC+D,GAAjC,EAAsC;AACpC,UAAI4W,KAAK5W,CAAL,EAAQ,CAAR,MAAe,GAAf,IAAsB,CAAC,gCAAa4W,KAAK5W,CAAL,EAAQ,CAAR,CAAb,CAA3B,EAAqD;AACnDyY,gBAAQrX,IAAR,CAAawV,KAAK5W,CAAL,EAAQ,CAAR,CAAb;AACD;AACF;AACF;;AAED,MAAMod,gBAAgB,KAAKnO,EAAL,GAAUmB,aAAV,CAAwB,iBAAxB,CAAtB;;AAEA,MAAIiF,QAAQ,UAAZ;AACA,MAAIiK,aAAa3hB,QAAb,KAA0B,KAA1B,IAAmC2hB,aAAa3hB,QAAb,KAA0B,QAAjE,EAA2E;AACzE0X,YAAQ,YAAR;AACD;;AAED,MAAMyK,gCAAgC9iB,SAASC,aAAT,CAAuB,KAAvB,CAAtC;AACA6iB,gCAA8BrX,YAA9B,CAA2C,OAA3C,EAAoD,2EAApD;AACA,MAAI4M,UAAU,YAAd,EAA4B;AAC1B+H,kBAAclc,MAAd,CAAqB4e,6BAArB;AACD;;AAED,MAAMC,qBAAqB/iB,SAASC,aAAT,CAAuB,KAAvB,CAA3B;AACA8iB,qBAAmBtX,YAAnB,CAAgC,OAAhC,2CAAgF4M,KAAhF;AACA+H,gBAAclc,MAAd,CAAqB6e,kBAArB;;AAEA,MAAMC,0BAA0BhjB,SAASC,aAAT,CAAuB,KAAvB,CAAhC;AACA+iB,0BAAwBvX,YAAxB,CAAqC,OAArC,EAA8C,2DAA9C;AACA,MAAI4M,UAAU,UAAd,EAA0B;AACxB+H,kBAAclc,MAAd,CAAqB8e,uBAArB;AACD;;AAED,MAAMC,iCAAiCjjB,SAASC,aAAT,CAAuB,KAAvB,CAAvC;AACAgjB,iCAA+BxX,YAA/B,CAA4C,OAA5C,EAAqD,4EAArD;AACA,MAAI4M,UAAU,YAAd,EAA4B;AAC1B+H,kBAAclc,MAAd,CAAqB+e,8BAArB;AACD;;AAEDC;;AAEA,WAASA,YAAT,GAAuB;AACrB1U,eAAWf,MAAX,GAAoBgO,QAAQ5W,KAAR,CAAc2J,WAAWC,MAAzB,EAAiCD,WAAWC,MAAX,GAAoBD,WAAWE,KAAhE,CAApB;AACAF,eAAWgU,KAAX,GAAmB/G,QAAQxc,MAA3B;AACAkkB,0BAAsBjkB,IAAtB,CAA2BqN,eAA3B,EAA4CiC,WAAWf,MAAvD;AACA,QAAIe,WAAWgU,KAAX,GAAmBhU,WAAWE,KAAlC,EAAyC;AACvC0U,gCAA0BlkB,IAA1B,CAA+BqN,eAA/B;AACD;AACD,QAAIF,QAAQkV,WAAZ,EAAwB;AACtBlV,cAAQkV,WAAR;AACD;AACF;;AAED,WAAS4B,qBAAT,GAAgC;AAC9BJ,uBAAmBrP,SAAnB,GAA+B,EAA/B;;AAEAlF,eAAWf,MAAX,CAAkB7C,OAAlB,CAA0B,iBAAS;AACjC,UAAMyY,iBAAiBf,aAAaxd,KAAb,CAAmByJ,aAAnB,GAAmCzJ,MAAMD,KAAN,CAAY,CAAZ,EAAeyd,aAAaxd,KAAb,CAAmByJ,aAAnB,GAAmC,CAAlD,CAAnC,GAA0FzJ,KAAjH;AACA,UAAMwe,aAAatjB,SAASC,aAAT,CAAuB,KAAvB,CAAnB;AACAqjB,iBAAW5P,SAAX,yCAAyD2P,cAAzD;AACAC,iBAAWC,WAAX,GAAyBze,KAAzB;AACAwe,iBAAW7X,YAAX,CAAwB,OAAxB,EAAiC,aAAjC;AACAsX,yBAAmB7e,MAAnB,CAA0Bof,UAA1B;;AAEA,UAAME,wBAAwBxjB,SAASC,aAAT,CAAuB,MAAvB,CAA9B;AACAujB,4BAAsB/X,YAAtB,CAAmC,OAAnC,EAA4C,0BAA5C;AACA+X,4BAAsBhkB,KAAtB,CAA4BiB,eAA5B,GAA8C+c,MAAM3O,KAAN,CAAYyU,WAAWC,WAAvB,CAA9C;AACAD,iBAAWG,OAAX,CAAmBD,qBAAnB;;AAEA,UAAME,iBAAiB1jB,SAASC,aAAT,CAAuB,KAAvB,CAAvB;AACAqjB,iBAAWviB,gBAAX,CAA4B,WAA5B,EAAyC,UAACzB,KAAD,EAAW;AAClDke,cAAMxO,KAAN,CAAYsU,WAAWC,WAAvB;AACA,YAAIjB,aAAa/iB,OAAb,CAAqB8O,IAArB,IAA6BiV,WAAWC,WAAX,CAAuBtkB,MAAvB,GAAgCqjB,aAAaxd,KAAb,CAAmByJ,aAApF,EAAmG;AACjGmV,yBAAejY,YAAf,CAA4B,OAA5B,4DAA6F6W,aAAa3hB,QAA1G;AACA+iB,yBAAehQ,SAAf,SAEIrH,QAAQ+B,MAAR,CAAe7O,OAAf,CAAuBoP,OAAvB,+CAFJ,IAGK2U,WAAWC,WAHhB;AAIAD,qBAAWpf,MAAX,CAAkBwf,cAAlB;AACD;AACF,OAVD;AAWAJ,iBAAWviB,gBAAX,CAA4B,UAA5B,EAAwC,UAACzB,KAAD,EAAW;AACjDke,cAAMmG,MAAN;AACAD,uBAAerD,MAAf;AACD,OAHD;AAIAiD,iBAAWviB,gBAAX,CAA4B,OAA5B,EAAqC,UAACzB,KAAD,EAAW;AAC9C,YAAIG,UAAU,CAAd;AACA,YAAMmkB,WAAWpV,WAAWyI,MAAX,CAAkBnQ,OAAlB,CAA0Bwc,WAAWC,WAArC,CAAjB;AACA,YAAIK,WAAW,CAAf,EAAkB;AAChBpV,qBAAWyI,MAAX,CAAkB7S,IAAlB,CAAuBkf,WAAWC,WAAlC;AACA9jB,oBAAU,GAAV;AACD,SAHD,MAIK;AACH+O,qBAAWyI,MAAX,CAAkBiC,MAAlB,CAAyB0K,QAAzB,EAAmC,CAAnC;AACAnkB,oBAAU,CAAV;AACD;AACD6jB,mBAAW9jB,KAAX,CAAiBC,OAAjB,GAA2BA,OAA3B;AACA+d,cAAMqG,MAAN,CAAaP,WAAWC,WAAxB;AACD,OAbD;AAcH,KA3CC;;AA6CA,QAAIlX,QAAQiV,gBAAZ,EAA6B;AAC3BjV,cAAQiV,gBAAR;AACAjV,cAAQiV,gBAAR,GAA2B,IAA3B;AACD;AAEF;;AAED,WAAS8B,yBAAT,GAAoC;AAClCJ,4BAAwBtP,SAAxB,GAAoC,EAApC;AACAoP,kCAA8BpP,SAA9B,GAA0C,EAA1C;AACAuP,mCAA+BvP,SAA/B,GAA2C,EAA3C;;AAEA,QAAMoQ,UAAU9jB,SAASC,aAAT,CAAuB,GAAvB,CAAhB;AACA,QAAM8jB,YAAY/jB,SAASC,aAAT,CAAuB,GAAvB,CAAlB;;AAEA,QAAM+jB,WAAW,SAAXA,QAAW,CAACC,SAAD,EAAe;AAC9B,UAAIA,cAAc,SAAlB,EAA6B;AAC3B,YAAMC,QAAO1V,WAAWC,MAAX,GAAoBD,WAAWE,KAA5C;AACA,YAAIwV,QAAO1V,WAAWgU,KAAtB,EAA6B;AAC3BhU,qBAAWC,MAAX,GAAoByV,KAApB;AACA;AACD;AACD1V,mBAAWC,MAAX,GAAoB,CAApB;AACA;AACD;;AAED,UAAMyV,OAAO1V,WAAWC,MAAX,GAAoBD,WAAWE,KAA5C;AACA,UAAIwV,QAAQ,CAAZ,EAAe;AACb1V,mBAAWC,MAAX,GAAoByV,IAApB;AACA;AACD;;AAED1V,iBAAWC,MAAX,GAAoB/M,KAAKyiB,KAAL,CAAW3V,WAAWgU,KAAX,GAAiBhU,WAAWE,KAAvC,IAAgDF,WAAWE,KAA/E;AACD,KAlBD;;AAoBAqV,cAAUhjB,gBAAV,CAA2B,OAA3B,EAAoC,YAAM;AACxCijB,eAAS,SAAT;AACAd;AACAkB;AACD,KAJD;;AAMAN,YAAQ/iB,gBAAR,CAAyB,OAAzB,EAAkC,YAAM;AACtCijB,eAAS,UAAT;AACAd;AACAkB;AACD,KAJD;;AAMA,QAAI9B,aAAa3hB,QAAb,KAA0B,MAA1B,IAAoC2hB,aAAa3hB,QAAb,KAA0B,OAAlE,EAA2E;AACzEmjB,cAAQrY,YAAR,CAAqB,OAArB,EAA8B,IAA9B;AACAsY,gBAAUtY,YAAV,CAAuB,OAAvB,EAAgC,MAAhC;AACAuX,8BAAwB9e,MAAxB,CAA+B6f,SAA/B;AACAf,8BAAwB9e,MAAxB,CAA+B4f,OAA/B;AACD,KALD,MAKO;AACL;AACAA,cAAQrY,YAAR,CAAqB,OAArB,EAA8B,MAA9B;AACAsY,gBAAUtY,YAAV,CAAuB,OAAvB,EAAgC,OAAhC;AACAqX,oCAA8B5e,MAA9B,CAAqC4f,OAArC;AACAb,qCAA+B/e,MAA/B,CAAsC6f,SAAtC;AACD;AAEF;;AAED,WAASK,iBAAT,GAA6B;AAC3B,QAAI7U,kBAAJ;AACA,QAAIvP,SAASuP,SAAT,IAAsBvP,SAASuP,SAAT,CAAmB8U,KAA7C,EAAoD;AAClD9U,kBAAYvP,SAASuP,SAArB;AACAA,gBAAU8U,KAAV;AACD,KAHD,MAIK,IAAIvY,OAAOwY,YAAX,EAAyB;AAC5B/U,kBAAYzD,OAAOwY,YAAP,EAAZ;AACA/U,gBAAUgV,eAAV;AACD;AACF;AACF,C;;AAjND;;IAAYnhB,E;;AAEZ;;;;;;;;;;;;;;;;;;;kBCAe,UAAUuM,CAAV,EAAa6U,kBAAb,EAAiCC,kBAAjC,EAAqD5V,KAArD,EAA4D;AACzE,MAAIxL,aAAJ;AACA,MAAIwJ,cAAJ;AACA;AACA,MAAM6X,aAAa,KAAKre,MAAL,CAAYse,mBAAZ,IAAmC,UAAU3R,IAAV,EAAgB;AAAE,WAAOA,IAAP;AAAc,GAAtF;AACA,MAAM4R,cAAc,KAAKve,MAAL,CAAYwe,oBAAZ,IAAoCL,kBAAxD;AACA,MAAMM,cAAc,KAAKze,MAAL,CAAY0e,oBAAZ,IAAoCN,kBAAxD;;AAEA;AACA,OAAK,IAAIzhB,IAAI,CAAb,EAAgBA,IAAI2M,EAAE1Q,MAAtB,EAA8B+D,GAA9B,EAAmC;AACjC,QAAI,EAAG2M,EAAE3M,CAAF,MAAS2M,EAAE3M,CAAF,EAAKlD,KAAL,IAAc6P,EAAE3M,CAAF,EAAKlD,KAAL,KAAe,CAAtC,CAAH,CAAJ,EAAkD;AAAE;AAAW;AAC/D,QAAI,CAACuD,IAAL,EAAW;AACTwJ,cAAQ+X,cAAcA,YAAYjV,EAAE3M,CAAF,EAAKa,CAAjB,CAAd,GAAoC8L,EAAE3M,CAAF,EAAKa,CAAjD;AACAR,aAAO,mBAAmB,KAAK2hB,KAAL,CAAWzlB,OAA9B,GAAwC,IAAxC,IAAgDsN,SAASA,UAAU,CAAnB,GAAuB,yBAAyB,4BAAWA,KAAX,CAAzB,GAA6C,YAApE,GAAmF,EAAnI,CAAP;AACD;AACD,QAAImG,OAAO0R,WAAW/U,EAAE3M,CAAF,EAAKgQ,IAAhB,CAAX;AACA,QAAIlT,QAAQglB,YAAYnV,EAAE3M,CAAF,EAAKlD,KAAjB,EAAwB6P,EAAE3M,CAAF,EAAK4d,KAA7B,EAAoCjR,EAAE3M,CAAF,EAAK6d,EAAzC,EAA6ClR,EAAE3M,CAAF,EAAKN,KAAlD,CAAZ;AACA,QAAI0H,UAAU,KAAK6a,UAAL,GAAkB,KAAKA,UAAL,CAAgBtV,EAAE3M,CAAF,EAAKlD,KAArB,CAAlB,GAAgD+O,MAAMc,EAAE3M,CAAF,EAAK6d,EAAX,CAA9D;AACA,QAAI/gB,SAAS,CAAC8F,MAAM9F,KAAN,CAAd,EAA4B;AAC1BuD,cAAQ,gBAAgB,KAAK2hB,KAAL,CAAWE,WAA3B,GAAyC,GAAzC,GAA+CvV,EAAE3M,CAAF,EAAK6d,EAApD,GAAyD,IAAjE;AACA,UAAI7N,KAAKlM,OAAL,CAAa,+BAAb,MAAkD,CAAC,CAAvD,EAA0D;AACxDzD,gBAAU,oDAAoD+G,OAApD,GAA8D,WAA9D,GAA4E,4BAAW4I,IAAX,CAA5E,GAA+F,OAAzG;AACD;AACD3P,cAAU,uBAAuB,4BAAWvD,KAAX,CAAvB,GAA2C,OAArD;AACAuD,cAAQ,OAAR;AACD;AACF;AACD,SAAOA,OAAO,UAAd;AACD,C;;AA9BD,yC;;;;;;;;;;;;kBCAwB8hB,c;AAAT,SAASA,cAAT,CAAwBngB,MAAxB,EAAgC;AAC7C,MAAMogB,YAAYpgB,OAAOH,KAAP,CAAa,CAAb,EAAgB0M,GAAhB,CAAoB;AAAA,WAAK5B,EAAE4B,GAAF,CAAM,UAACvQ,CAAD,EAAIgC,CAAJ,EAAU;AACzD,UAAI,OAAOhC,CAAP,KAAa,QAAjB,EAA2B;AACzB,YAAIgC,MAAM,CAAV,EAAa;AACX,iBAAOhC,IAAI2O,EAAE3M,IAAI,CAAN,CAAX;AACD;AACF;AACD,aAAOhC,CAAP;AACD,KAP0C,CAAL;AAAA,GAApB,CAAlB;AAQA,SAAOokB,SAAP;AACD,C;;;;;;;;;;;;QCVeC,uB,GAAAA,uB;QAiBAC,iB,GAAAA,iB;AAjBT,SAASD,uBAAT,CAAiCrgB,MAAjC,EAAyC;AAC9C,MAAMwa,WAAW,EAAjB;AACAxa,SAAOH,KAAP,CAAa,CAAb,EAAgB+F,OAAhB,CAAwB,UAAC+E,CAAD,EAAI3M,CAAJ,EAAU;AAChC2M,MAAE/E,OAAF,CAAU,UAAC5J,CAAD,EAAO;AACf,UAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AACzB,YAAI,CAACwe,SAASxc,CAAT,CAAL,EAAkB;AAChBwc,mBAASxc,CAAT,IAAchC,CAAd;AACA,iBAAOwe,SAASxc,CAAT,CAAP;AACD;AACDwc,iBAASxc,CAAT,KAAehC,CAAf;AACD;AACD,aAAOwe,SAASxc,CAAT,CAAP;AACD,KATD;AAUD,GAXD;AAYA,SAAOwc,QAAP;AACD;;AAEM,SAAS8F,iBAAT,CAA2BtgB,MAA3B,EAAmCwa,QAAnC,EAA6C;AAClD,MAAM4F,YAAYpgB,OAAOH,KAAP,CAAa,CAAb,EAAgB0M,GAAhB,CAAoB,UAAC5B,CAAD,EAAI3M,CAAJ;AAAA,WAAU2M,EAAE4B,GAAF,CAAM,UAACvQ,CAAD,EAAO;AAC3D,UAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AACzB,eAAQA,IAAIwe,SAASxc,CAAT,CAAL,GAAoB,GAA3B;AACD;AACD,aAAOhC,CAAP;AACD,KAL+C,CAAV;AAAA,GAApB,CAAlB;AAMA,SAAOokB,SAAP;AACD,C;;;;;;;;;;;;;ACzBD;;AACA;;;;AACA;;;;;;kBAEe;AACb5S,UAAQ,gBAASnP,IAAT,EAAc;AACpB,QAAMkiB,QAAQvlB,SAASC,aAAT,CAAuB,KAAvB,CAAd;AACA,QAAMulB,QAAQxlB,SAASC,aAAT,CAAuB,KAAvB,CAAd;AACA,QAAMmV,MAAMpV,SAASC,aAAT,CAAuB,MAAvB,CAAZ;;AAEA,QAAMwlB,iBAAiBzlB,SAASC,aAAT,CAAuB,KAAvB,CAAvB;AACA,QAAMylB,oBAAoB1lB,SAASC,aAAT,CAAuB,KAAvB,CAA1B;AACA,QAAM0lB,iBAAiB3lB,SAASC,aAAT,CAAuB,KAAvB,CAAvB;;AAEAslB,UAAM1b,SAAN,GAAkB,KAAKxD,MAAL,CAAY4G,KAAZ,GAAoB,mBAAtC;AACAuY,UAAM3b,SAAN,GAAkB,KAAKxD,MAAL,CAAY4G,KAAZ,GAAoB,UAAtC;;AAEA;AACAwY,mBAAe5b,SAAf,GAA2B,KAAKxD,MAAL,CAAY4G,KAAZ,GAAoB,QAA/C;AACAwY,mBAAe/R,SAAf,GAA2B,4BAAW,KAAKrN,MAAL,CAAYwG,KAAZ,IAAqB,EAAhC,CAA3B;AACA6Y,sBAAkB7b,SAAlB,GAA8B,KAAKxD,MAAL,CAAY4G,KAAZ,GAAoB,WAAlD;AACAyY,sBAAkBhS,SAAlB,GAA8B,4BAAW,KAAKrN,MAAL,CAAY0G,QAAZ,IAAwB,EAAnC,CAA9B;AACA4Y,mBAAe9b,SAAf,GAA2B,KAAKxD,MAAL,CAAY4G,KAAZ,GAAoB,QAA/C;AACA0Y,mBAAejS,SAAf,GAA2B,4BAAW,KAAKrN,MAAL,CAAY2G,KAAZ,IAAqB,EAAhC,CAA3B;;AAEAoI,QAAI1B,SAAJ,GAAgB,4BAAWrQ,IAAX,KAAoB,EAApC;AACAmiB,UAAMrlB,WAAN,CAAkBiV,GAAlB;;AAEA,QAAI,KAAK/O,MAAL,CAAYwG,KAAZ,IAAqB,KAAKxG,MAAL,CAAYyG,SAArC,EAAgD;AAC9CyY,YAAMplB,WAAN,CAAkBslB,cAAlB;AACD;;AAED,QAAI,KAAKpf,MAAL,CAAY0G,QAAhB,EAA0B;AACxBwY,YAAMplB,WAAN,CAAkBulB,iBAAlB;AACD;;AAEDH,UAAMplB,WAAN,CAAkBqlB,KAAlB;;AAEA,QAAI,KAAKnf,MAAL,CAAY2G,KAAhB,EAAuB;AACrBuY,YAAMplB,WAAN,CAAkBwlB,cAAlB;AACD;;AAED,QAAI,KAAKtf,MAAL,CAAY+G,EAAZ,IACC,KAAK/G,MAAL,CAAY+G,EAAZ,CAAemJ,OADhB,IAEC,KAAKlQ,MAAL,CAAY+G,EAAZ,CAAemJ,OAAf,CAAuBC,QAFxB,IAGC,KAAKnQ,MAAL,CAAY+G,EAAZ,CAAemJ,OAAf,CAAuBC,QAAvB,CAAgCjQ,IAHrC,EAG2C;AACvC,uCAAqB;AACnB+C,iBAAS,KAAK2I,EAAL,EADU;AAEnBzL,cAAM,4BAAWnD,IAAX,KAAoB,EAFP;AAGnBkD,cAAM,KAAKF,MAAL,CAAY+G,EAAZ,CAAemJ,OAAf,CAAuBC,QAAvB,CAAgCjQ,IAHnB;AAInBzB,eAAO,KAAKuB,MAAL,CAAY+G,EAAZ,CAAemJ,OAAf,CAAuBC,QAAvB,CAAgC1R;AAJpB,OAArB;AAMD;;AAED,QAAI,KAAKuB,MAAL,CAAYiH,KAAZ,IACC,KAAKjH,MAAL,CAAYiH,KAAZ,CAAkBC,sBADvB,EAC+C;AAC3CkY,qBAAe1kB,gBAAf,CAAgC,OAAhC,EAAyC;AAAA,eAAK,+BAAgBC,EAAE+B,MAAF,CAASjC,SAAzB,EAAoCE,CAApC,CAAL;AAAA,OAAzC;AACA2kB,qBAAe5kB,gBAAf,CAAgC,OAAhC,EAAyC;AAAA,eAAK,+BAAgBC,EAAE+B,MAAF,CAASjC,SAAzB,EAAoCE,CAApC,CAAL;AAAA,OAAzC;AACAoU,UAAIrU,gBAAJ,CAAqB,OAArB,EAA8B;AAAA,eAAK,+BAAgBC,EAAE+B,MAAF,CAASjC,SAAzB,EAAoCE,CAApC,CAAL;AAAA,OAA9B;AACD;;AAEL,SAAKiR,EAAL,GAAUyB,SAAV,GAAsB,EAAtB;AACA,SAAKzB,EAAL,GAAU9R,WAAV,CAAsBolB,KAAtB;AAED,GA5DY;AA6Dbpf,UAAQ,kBAAU;AAChB;AACA,SAAKqM,MAAL;AACD,GAhEY;AAiEbiB,WAAS,mBAAU;AACjB;AACD;AAnEY,C;;;;;;;;;;;;kBCDSmS,e;;AAHxB;;;;AACA;;;;;;AAEe,SAASA,eAAT,CAAyB1b,GAAzB,EAA8B;AAAA,MACnC5K,KADmC,GACb4K,GADa,CACnC5K,KADmC;AAAA,MAC5BiH,IAD4B,GACb2D,GADa,CAC5B3D,IAD4B;AAAA,MACtBC,IADsB,GACb0D,GADa,CACtB1D,IADsB;;AAE3ClH,QAAMumB,cAAN;AACA,MAAM9a,mBAAmB,CAAC,MAAD,EAAS,KAAT,EAAgB,KAAhB,EAAuB,MAAvB,EAA+B,KAA/B,CAAzB;AACA,MAAMC,SAASzE,KAAK0E,WAAL,EAAf;AACA,MAAI,CAACF,iBAAiBG,QAAjB,CAA0B3E,IAA1B,CAAL,EAAsC;AACpC,UAAM,IAAIK,KAAJ,CAAU,4BAAV,CAAN;AACD;;AAED,MAAMuE,WAAW,OAAjB;AACA,MAAIC,aAAa,EAAjB;AACA,MAAIC,UAAU,EAAd;;AAEA,MAAIL,WAAW,KAAf,EAAsB;AACpB,6BAAY;AACV1G,YAAMhF,MAAMwmB,aAAN,CAAoBC;AADhB,KAAZ;AAGA;AACD;;AAED,MAAI/a,WAAW,KAAX,IAAoBA,WAAW,MAAnC,EAA2C;AACzC,6BAAY;AACV1G,YAAMhF,MAAMwmB,aAAN,CAAoBC,sBADhB;AAEV5b,eAAS,CAFC;AAGVC,eAAS;AAHC,KAAZ;AAKA;AACD;;AAED,MAAIY,WAAW,MAAf,EAAuB;AACrB,8BAAW,EAAEzE,MAAMyE,MAAR,EAAgBxE,UAAhB,EAAX;AACD;;AAED,MAAIwE,WAAW,KAAf,EAAsB;AACpB,8BAAW,EAAEzE,MAAMyE,MAAR,EAAgBxE,UAAhB,EAAX;AACD;AACF,C;;;;;;ACvCD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA6B;AACrC;AACA;AACA,QAAQ,EAA+B;;;AAGvC;AACA,eAAe,KAAK;AACpB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO,oCAAoC;AAC1D,gBAAgB,QAAQ;AACxB;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oEAAoE,gBAAgB;;AAEpF;AACA;AACA,8EAA8E;AAC9E;;AAEA;;AAEA;AACA;AACA,wCAAwC,QAAQ;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,2CAA2C;AAC3C,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,YAAY;AAC3C;;AAEA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,sCAAsC;AACtC;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,yEAAyE;AACzE;AACA,qBAAqB;AACrB;AACA;A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","file":"keen-dataviz.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 21);\n","export function each(o, cb, s) {\n var n;\n if (!o) {\n return 0;\n }\n s = !s ? o : s;\n if (o instanceof Array) {\n // Indexed arrays, needed for Safari\n for (n = 0; n < o.length; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n // Hashtables\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false){\n return 0;\n }\n }\n }\n }\n return 1;\n}\n","function stickTooltip(event, tooltip) {\n tooltip.style.opacity = 0;\n tooltip.style.top = `${event.pageY}px`;\n tooltip.style.left = `${event.pageX + 10}px`;\n}\n\nexport default function copyToClipboard(value, event) {\n const placeholder = document.createElement('input');\n placeholder.value = value;\n document.body.appendChild(placeholder);\n placeholder.select();\n document.execCommand('copy');\n document.body.removeChild(placeholder);\n\n if (event) {\n const notification = document.createElement('div');\n notification.style.padding = '5px 10px';\n notification.style.backgroundColor = '#ffffff';\n notification.style.fontSize = '12px';\n notification.style.position = 'absolute';\n notification.style.top = `${event.pageY}px`;\n notification.style.left = `${event.pageX + 10}px`;\n notification.style.zIndex = '999';\n notification.style.opacity = 1;\n notification.style.transition = 'opacity 1s ease';\n notification.innerText = 'copied!';\n\n document.body.appendChild(notification);\n document.addEventListener('mousemove', e => stickTooltip(e, notification));\n\n setTimeout(() => {\n notification.style.opacity = 1;\n document.body.removeChild(notification);\n }, 1000);\n }\n}\n","export var name = \"d3\";\nexport var version = \"5.11.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export {default as bisect, bisectRight, bisectLeft} from \"./bisect\";\nexport {default as ascending} from \"./ascending\";\nexport {default as bisector} from \"./bisector\";\nexport {default as cross} from \"./cross\";\nexport {default as descending} from \"./descending\";\nexport {default as deviation} from \"./deviation\";\nexport {default as extent} from \"./extent\";\nexport {default as histogram} from \"./histogram\";\nexport {default as thresholdFreedmanDiaconis} from \"./threshold/freedmanDiaconis\";\nexport {default as thresholdScott} from \"./threshold/scott\";\nexport {default as thresholdSturges} from \"./threshold/sturges\";\nexport {default as max} from \"./max\";\nexport {default as mean} from \"./mean\";\nexport {default as median} from \"./median\";\nexport {default as merge} from \"./merge\";\nexport {default as min} from \"./min\";\nexport {default as pairs} from \"./pairs\";\nexport {default as permute} from \"./permute\";\nexport {default as quantile} from \"./quantile\";\nexport {default as range} from \"./range\";\nexport {default as scan} from \"./scan\";\nexport {default as shuffle} from \"./shuffle\";\nexport {default as sum} from \"./sum\";\nexport {default as ticks, tickIncrement, tickStep} from \"./ticks\";\nexport {default as transpose} from \"./transpose\";\nexport {default as variance} from \"./variance\";\nexport {default as zip} from \"./zip\";\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","export {\n axisTop,\n axisRight,\n axisBottom,\n axisLeft\n} from \"./axis\";\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export {default as dispatch} from \"./dispatch\";\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","export {default as create} from \"./create\";\nexport {default as creator} from \"./creator\";\nexport {default as local} from \"./local\";\nexport {default as matcher} from \"./matcher\";\nexport {default as mouse} from \"./mouse\";\nexport {default as namespace} from \"./namespace\";\nexport {default as namespaces} from \"./namespaces\";\nexport {default as clientPoint} from \"./point\";\nexport {default as select} from \"./select\";\nexport {default as selectAll} from \"./selectAll\";\nexport {default as selection} from \"./selection/index\";\nexport {default as selector} from \"./selector\";\nexport {default as selectorAll} from \"./selectorAll\";\nexport {styleValue as style} from \"./selection/style\";\nexport {default as touch} from \"./touch\";\nexport {default as touches} from \"./touches\";\nexport {default as window} from \"./window\";\nexport {event, customEvent} from \"./selection/on\";\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export {default as drag} from \"./drag.js\";\nexport {default as dragDisable, yesdrag as dragEnable} from \"./nodrag.js\";\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export {default as color, rgb, hsl} from \"./color\";\nexport {default as lab, hcl, lch, gray} from \"./lab\";\nexport {default as cubehelix} from \"./cubehelix\";\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export {default as interpolate} from \"./value\";\nexport {default as interpolateArray} from \"./array\";\nexport {default as interpolateBasis} from \"./basis\";\nexport {default as interpolateBasisClosed} from \"./basisClosed\";\nexport {default as interpolateDate} from \"./date\";\nexport {default as interpolateDiscrete} from \"./discrete\";\nexport {default as interpolateHue} from \"./hue\";\nexport {default as interpolateNumber} from \"./number\";\nexport {default as interpolateObject} from \"./object\";\nexport {default as interpolateRound} from \"./round\";\nexport {default as interpolateString} from \"./string\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index\";\nexport {default as interpolateZoom} from \"./zoom\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl\";\nexport {default as interpolateLab} from \"./lab\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix\";\nexport {default as piecewise} from \"./piecewise\";\nexport {default as quantize} from \"./quantize\";\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {Timer, now} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","export {\n now,\n timer,\n timerFlush\n} from \"./timer\";\n\nexport {\n default as timeout\n} from \"./timeout\";\n\nexport {\n default as interval\n} from \"./interval\";\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i(t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i(t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\nimport transition_end from \"./end\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","export function expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nexport function expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","var tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","export {\n linear as easeLinear\n} from \"./linear\";\n\nexport {\n quadInOut as easeQuad,\n quadIn as easeQuadIn,\n quadOut as easeQuadOut,\n quadInOut as easeQuadInOut\n} from \"./quad\";\n\nexport {\n cubicInOut as easeCubic,\n cubicIn as easeCubicIn,\n cubicOut as easeCubicOut,\n cubicInOut as easeCubicInOut\n} from \"./cubic\";\n\nexport {\n polyInOut as easePoly,\n polyIn as easePolyIn,\n polyOut as easePolyOut,\n polyInOut as easePolyInOut\n} from \"./poly\";\n\nexport {\n sinInOut as easeSin,\n sinIn as easeSinIn,\n sinOut as easeSinOut,\n sinInOut as easeSinInOut\n} from \"./sin\";\n\nexport {\n expInOut as easeExp,\n expIn as easeExpIn,\n expOut as easeExpOut,\n expInOut as easeExpInOut\n} from \"./exp\";\n\nexport {\n circleInOut as easeCircle,\n circleIn as easeCircleIn,\n circleOut as easeCircleOut,\n circleInOut as easeCircleInOut\n} from \"./circle\";\n\nexport {\n bounceOut as easeBounce,\n bounceIn as easeBounceIn,\n bounceOut as easeBounceOut,\n bounceInOut as easeBounceInOut\n} from \"./bounce\";\n\nexport {\n backInOut as easeBack,\n backIn as easeBackIn,\n backOut as easeBackOut,\n backInOut as easeBackInOut\n} from \"./back\";\n\nexport {\n elasticOut as easeElastic,\n elasticIn as easeElasticIn,\n elasticOut as easeElasticOut,\n elasticInOut as easeElasticInOut\n} from \"./elastic\";\n","import {Transition, newId} from \"../transition/index\";\nimport schedule from \"../transition/schedule\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {Transition} from \"./transition/index\";\nimport {SCHEDULED} from \"./transition/schedule\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","import \"./selection/index\";\nexport {default as transition} from \"./transition/index\";\nexport {default as active} from \"./active\";\nexport {default as interrupt} from \"./interrupt\";\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(brush, \"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n return (!clean && that.__brush.emitter) || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export {\n default as brush,\n brushX,\n brushY,\n brushSelection\n} from \"./brush.js\";\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export {default as path} from \"./path\";\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export {default as chord} from \"./chord\";\nexport {default as ribbon} from \"./ribbon\";\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export {default as nest} from \"./nest\";\nexport {default as set} from \"./set\";\nexport {default as map} from \"./map\";\nexport {default as keys} from \"./keys\";\nexport {default as values} from \"./values\";\nexport {default as entries} from \"./entries\";\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export {default as contours} from \"./contours\";\nexport {default as contourDensity} from \"./density\";\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/.test(value)) value = new Date(value);\n else continue;\n object[key] = value;\n }\n return object;\n}\n","export {default as dsvFormat} from \"./dsv\";\nexport {csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows} from \"./csv\";\nexport {tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows} from \"./tsv\";\nexport {default as autoType} from \"./autoType\";\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export {default as blob} from \"./blob\";\nexport {default as buffer} from \"./buffer\";\nexport {default as dsv, csv, tsv} from \"./dsv\";\nexport {default as image} from \"./image\";\nexport {default as json} from \"./json\";\nexport {default as text} from \"./text\";\nexport {default as xml, html, svg} from \"./xml\";\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export {default as quadtree} from \"./quadtree\";\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","export {default as forceCenter} from \"./center\";\nexport {default as forceCollide} from \"./collide\";\nexport {default as forceLink} from \"./link\";\nexport {default as forceManyBody} from \"./manyBody\";\nexport {default as forceRadial} from \"./radial\";\nexport {default as forceSimulation} from \"./simulation\";\nexport {default as forceX} from \"./x\";\nexport {default as forceY} from \"./y\";\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale\";\nexport {default as formatLocale} from \"./locale\";\nexport {default as formatSpecifier} from \"./formatSpecifier\";\nexport {default as precisionFixed} from \"./precisionFixed\";\nexport {default as precisionPrefix} from \"./precisionPrefix\";\nexport {default as precisionRound} from \"./precisionRound\";\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipRejoin from \"./rejoin\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","import clipRectangle from \"./rectangle\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains\";\nimport {default as distance} from \"./distance\";\nimport {epsilon2, radians} from \"./math\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, // clip extent\n postclip = identity,\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n },\n postclip: function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n },\n clipExtent: function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n },\n fitWidth: function(width, object) {\n return fitWidth(projection, width, object);\n },\n fitHeight: function(height, object) {\n return fitHeight(projection, height, object);\n }\n };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","export {default as geoArea} from \"./area\";\nexport {default as geoBounds} from \"./bounds\";\nexport {default as geoCentroid} from \"./centroid\";\nexport {default as geoCircle} from \"./circle\";\nexport {default as geoClipAntimeridian} from \"./clip/antimeridian\";\nexport {default as geoClipCircle} from \"./clip/circle\";\nexport {default as geoClipExtent} from \"./clip/extent\"; // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\nexport {default as geoClipRectangle} from \"./clip/rectangle\";\nexport {default as geoContains} from \"./contains\";\nexport {default as geoDistance} from \"./distance\";\nexport {default as geoGraticule, graticule10 as geoGraticule10} from \"./graticule\";\nexport {default as geoInterpolate} from \"./interpolate\";\nexport {default as geoLength} from \"./length\";\nexport {default as geoPath} from \"./path/index\";\nexport {default as geoAlbers} from \"./projection/albers\";\nexport {default as geoAlbersUsa} from \"./projection/albersUsa\";\nexport {default as geoAzimuthalEqualArea, azimuthalEqualAreaRaw as geoAzimuthalEqualAreaRaw} from \"./projection/azimuthalEqualArea\";\nexport {default as geoAzimuthalEquidistant, azimuthalEquidistantRaw as geoAzimuthalEquidistantRaw} from \"./projection/azimuthalEquidistant\";\nexport {default as geoConicConformal, conicConformalRaw as geoConicConformalRaw} from \"./projection/conicConformal\";\nexport {default as geoConicEqualArea, conicEqualAreaRaw as geoConicEqualAreaRaw} from \"./projection/conicEqualArea\";\nexport {default as geoConicEquidistant, conicEquidistantRaw as geoConicEquidistantRaw} from \"./projection/conicEquidistant\";\nexport {default as geoEqualEarth, equalEarthRaw as geoEqualEarthRaw} from \"./projection/equalEarth\";\nexport {default as geoEquirectangular, equirectangularRaw as geoEquirectangularRaw} from \"./projection/equirectangular\";\nexport {default as geoGnomonic, gnomonicRaw as geoGnomonicRaw} from \"./projection/gnomonic\";\nexport {default as geoIdentity} from \"./projection/identity\";\nexport {default as geoProjection, projectionMutator as geoProjectionMutator} from \"./projection/index\";\nexport {default as geoMercator, mercatorRaw as geoMercatorRaw} from \"./projection/mercator\";\nexport {default as geoNaturalEarth1, naturalEarth1Raw as geoNaturalEarth1Raw} from \"./projection/naturalEarth1\";\nexport {default as geoOrthographic, orthographicRaw as geoOrthographicRaw} from \"./projection/orthographic\";\nexport {default as geoStereographic, stereographicRaw as geoStereographicRaw} from \"./projection/stereographic\";\nexport {default as geoTransverseMercator, transverseMercatorRaw as geoTransverseMercatorRaw} from \"./projection/transverseMercator\";\nexport {default as geoRotation} from \"./rotation\";\nexport {default as geoStream} from \"./stream\";\nexport {default as geoTransform} from \"./transform\";\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count\";\nimport node_each from \"./each\";\nimport node_eachBefore from \"./eachBefore\";\nimport node_eachAfter from \"./eachAfter\";\nimport node_sum from \"./sum\";\nimport node_sort from \"./sort\";\nimport node_path from \"./path\";\nimport node_ancestors from \"./ancestors\";\nimport node_descendants from \"./descendants\";\nimport node_leaves from \"./leaves\";\nimport node_links from \"./links\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings\";\nimport {optional} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round\";\nimport treemapDice from \"./treemap/dice\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors\";\nimport {Node, computeHeight} from \"./hierarchy/index\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round\";\nimport squarify from \"./squarify\";\nimport {required} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice\";\nimport slice from \"./slice\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\nimport {phi, squarifyRatio} from \"./squarify\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export {default as cluster} from \"./cluster\";\nexport {default as hierarchy} from \"./hierarchy/index\";\nexport {default as pack} from \"./pack/index\";\nexport {default as packSiblings} from \"./pack/siblings\";\nexport {default as packEnclose} from \"./pack/enclose\";\nexport {default as partition} from \"./partition\";\nexport {default as stratify} from \"./stratify\";\nexport {default as tree} from \"./tree\";\nexport {default as treemap} from \"./treemap/index\";\nexport {default as treemapBinary} from \"./treemap/binary\";\nexport {default as treemapDice} from \"./treemap/dice\";\nexport {default as treemapSlice} from \"./treemap/slice\";\nexport {default as treemapSliceDice} from \"./treemap/sliceDice\";\nexport {default as treemapSquarify} from \"./treemap/squarify\";\nexport {default as treemapResquarify} from \"./treemap/resquarify\";\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export {default as polygonArea} from \"./area\";\nexport {default as polygonCentroid} from \"./centroid\";\nexport {default as polygonHull} from \"./hull\";\nexport {default as polygonContains} from \"./contains\";\nexport {default as polygonLength} from \"./length\";\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export {default as randomUniform} from \"./uniform\";\nexport {default as randomNormal} from \"./normal\";\nexport {default as randomLogNormal} from \"./logNormal\";\nexport {default as randomBates} from \"./bates\";\nexport {default as randomIrwinHall} from \"./irwinHall\";\nexport {default as randomExponential} from \"./exponential\";\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","export {\n default as timeInterval\n} from \"./interval\";\n\nexport {\n default as timeMillisecond,\n milliseconds as timeMilliseconds,\n default as utcMillisecond,\n milliseconds as utcMilliseconds\n} from \"./millisecond\";\n\nexport {\n default as timeSecond,\n seconds as timeSeconds,\n default as utcSecond,\n seconds as utcSeconds\n} from \"./second\";\n\nexport {\n default as timeMinute,\n minutes as timeMinutes\n} from \"./minute\";\n\nexport {\n default as timeHour,\n hours as timeHours\n} from \"./hour\";\n\nexport {\n default as timeDay,\n days as timeDays\n} from \"./day\";\n\nexport {\n sunday as timeWeek,\n sundays as timeWeeks,\n sunday as timeSunday,\n sundays as timeSundays,\n monday as timeMonday,\n mondays as timeMondays,\n tuesday as timeTuesday,\n tuesdays as timeTuesdays,\n wednesday as timeWednesday,\n wednesdays as timeWednesdays,\n thursday as timeThursday,\n thursdays as timeThursdays,\n friday as timeFriday,\n fridays as timeFridays,\n saturday as timeSaturday,\n saturdays as timeSaturdays\n} from \"./week\";\n\nexport {\n default as timeMonth,\n months as timeMonths\n} from \"./month\";\n\nexport {\n default as timeYear,\n years as timeYears\n} from \"./year\";\n\nexport {\n default as utcMinute,\n utcMinutes as utcMinutes\n} from \"./utcMinute\";\n\nexport {\n default as utcHour,\n utcHours as utcHours\n} from \"./utcHour\";\n\nexport {\n default as utcDay,\n utcDays as utcDays\n} from \"./utcDay\";\n\nexport {\n utcSunday as utcWeek,\n utcSundays as utcWeeks,\n utcSunday as utcSunday,\n utcSundays as utcSundays,\n utcMonday as utcMonday,\n utcMondays as utcMondays,\n utcTuesday as utcTuesday,\n utcTuesdays as utcTuesdays,\n utcWednesday as utcWednesday,\n utcWednesdays as utcWednesdays,\n utcThursday as utcThursday,\n utcThursdays as utcThursdays,\n utcFriday as utcFriday,\n utcFridays as utcFridays,\n utcSaturday as utcSaturday,\n utcSaturdays as utcSaturdays\n} from \"./utcWeek\";\n\nexport {\n default as utcMonth,\n utcMonths as utcMonths\n} from \"./utcMonth\";\n\nexport {\n default as utcYear,\n utcYears as utcYears\n} from \"./utcYear\";\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","export {default as timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse} from \"./defaultLocale\";\nexport {default as timeFormatLocale} from \"./locale\";\nexport {default as isoFormat} from \"./isoFormat\";\nexport {default as isoParse} from \"./isoParse\";\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export {\n default as scaleBand,\n point as scalePoint\n} from \"./band\";\n\nexport {\n default as scaleIdentity\n} from \"./identity\";\n\nexport {\n default as scaleLinear\n} from \"./linear\";\n\nexport {\n default as scaleLog\n} from \"./log\";\n\nexport {\n default as scaleSymlog\n} from \"./symlog\";\n\nexport {\n default as scaleOrdinal,\n implicit as scaleImplicit\n} from \"./ordinal\";\n\nexport {\n default as scalePow,\n sqrt as scaleSqrt\n} from \"./pow\";\n\nexport {\n default as scaleQuantile\n} from \"./quantile\";\n\nexport {\n default as scaleQuantize\n} from \"./quantize\";\n\nexport {\n default as scaleThreshold\n} from \"./threshold\";\n\nexport {\n default as scaleTime\n} from \"./time\";\n\nexport {\n default as scaleUtc\n} from \"./utcTime\";\n\nexport {\n default as scaleSequential,\n sequentialLog as scaleSequentialLog,\n sequentialPow as scaleSequentialPow,\n sequentialSqrt as scaleSequentialSqrt,\n sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential\";\n\nexport {\n default as scaleSequentialQuantile\n} from \"./sequentialQuantile\";\n\nexport {\n default as scaleDiverging,\n divergingLog as scaleDivergingLog,\n divergingPow as scaleDivergingPow,\n divergingSqrt as scaleDivergingSqrt,\n divergingSymlog as scaleDivergingSymlog\n} from \"./diverging\";\n\nexport {\n default as tickFormat\n} from \"./tickFormat\";\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","export {default as schemeCategory10} from \"./categorical/category10.js\";\nexport {default as schemeAccent} from \"./categorical/Accent.js\";\nexport {default as schemeDark2} from \"./categorical/Dark2.js\";\nexport {default as schemePaired} from \"./categorical/Paired.js\";\nexport {default as schemePastel1} from \"./categorical/Pastel1.js\";\nexport {default as schemePastel2} from \"./categorical/Pastel2.js\";\nexport {default as schemeSet1} from \"./categorical/Set1.js\";\nexport {default as schemeSet2} from \"./categorical/Set2.js\";\nexport {default as schemeSet3} from \"./categorical/Set3.js\";\nexport {default as schemeTableau10} from \"./categorical/Tableau10.js\";\nexport {default as interpolateBrBG, scheme as schemeBrBG} from \"./diverging/BrBG.js\";\nexport {default as interpolatePRGn, scheme as schemePRGn} from \"./diverging/PRGn.js\";\nexport {default as interpolatePiYG, scheme as schemePiYG} from \"./diverging/PiYG.js\";\nexport {default as interpolatePuOr, scheme as schemePuOr} from \"./diverging/PuOr.js\";\nexport {default as interpolateRdBu, scheme as schemeRdBu} from \"./diverging/RdBu.js\";\nexport {default as interpolateRdGy, scheme as schemeRdGy} from \"./diverging/RdGy.js\";\nexport {default as interpolateRdYlBu, scheme as schemeRdYlBu} from \"./diverging/RdYlBu.js\";\nexport {default as interpolateRdYlGn, scheme as schemeRdYlGn} from \"./diverging/RdYlGn.js\";\nexport {default as interpolateSpectral, scheme as schemeSpectral} from \"./diverging/Spectral.js\";\nexport {default as interpolateBuGn, scheme as schemeBuGn} from \"./sequential-multi/BuGn.js\";\nexport {default as interpolateBuPu, scheme as schemeBuPu} from \"./sequential-multi/BuPu.js\";\nexport {default as interpolateGnBu, scheme as schemeGnBu} from \"./sequential-multi/GnBu.js\";\nexport {default as interpolateOrRd, scheme as schemeOrRd} from \"./sequential-multi/OrRd.js\";\nexport {default as interpolatePuBuGn, scheme as schemePuBuGn} from \"./sequential-multi/PuBuGn.js\";\nexport {default as interpolatePuBu, scheme as schemePuBu} from \"./sequential-multi/PuBu.js\";\nexport {default as interpolatePuRd, scheme as schemePuRd} from \"./sequential-multi/PuRd.js\";\nexport {default as interpolateRdPu, scheme as schemeRdPu} from \"./sequential-multi/RdPu.js\";\nexport {default as interpolateYlGnBu, scheme as schemeYlGnBu} from \"./sequential-multi/YlGnBu.js\";\nexport {default as interpolateYlGn, scheme as schemeYlGn} from \"./sequential-multi/YlGn.js\";\nexport {default as interpolateYlOrBr, scheme as schemeYlOrBr} from \"./sequential-multi/YlOrBr.js\";\nexport {default as interpolateYlOrRd, scheme as schemeYlOrRd} from \"./sequential-multi/YlOrRd.js\";\nexport {default as interpolateBlues, scheme as schemeBlues} from \"./sequential-single/Blues.js\";\nexport {default as interpolateGreens, scheme as schemeGreens} from \"./sequential-single/Greens.js\";\nexport {default as interpolateGreys, scheme as schemeGreys} from \"./sequential-single/Greys.js\";\nexport {default as interpolatePurples, scheme as schemePurples} from \"./sequential-single/Purples.js\";\nexport {default as interpolateReds, scheme as schemeReds} from \"./sequential-single/Reds.js\";\nexport {default as interpolateOranges, scheme as schemeOranges} from \"./sequential-single/Oranges.js\";\nexport {default as interpolateCividis} from \"./sequential-multi/cividis.js\";\nexport {default as interpolateCubehelixDefault} from \"./sequential-multi/cubehelix.js\";\nexport {default as interpolateRainbow, warm as interpolateWarm, cool as interpolateCool} from \"./sequential-multi/rainbow.js\";\nexport {default as interpolateSinebow} from \"./sequential-multi/sinebow.js\";\nexport {default as interpolateTurbo} from \"./sequential-multi/turbo.js\";\nexport {default as interpolateViridis, magma as interpolateMagma, inferno as interpolateInferno, plasma as interpolatePlasma} from \"./sequential-multi/viridis.js\";\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport line from \"./line\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant\";\nimport descending from \"./descending\";\nimport identity from \"./identity\";\nimport {tau} from \"./math\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial\";\nimport line from \"./line\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial\";\nimport area from \"./area\";\nimport {lineRadial} from \"./lineRadial\"\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array\";\nimport constant from \"../constant\";\nimport {x as pointX, y as pointY} from \"../point\";\nimport pointRadial from \"../pointRadial\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle\";\nimport cross from \"./symbol/cross\";\nimport diamond from \"./symbol/diamond\";\nimport star from \"./symbol/star\";\nimport square from \"./symbol/square\";\nimport triangle from \"./symbol/triangle\";\nimport wye from \"./symbol/wye\";\nimport constant from \"./constant\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop\";\nimport {point} from \"./basis\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport offsetNone from \"./offset/none\";\nimport orderNone from \"./order/none\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = yp;\n }\n }\n }\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance\";\nimport {sum} from \"./ascending\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","export {default as arc} from \"./arc\";\nexport {default as area} from \"./area\";\nexport {default as line} from \"./line\";\nexport {default as pie} from \"./pie\";\nexport {default as areaRadial, default as radialArea} from \"./areaRadial\"; // Note: radialArea is deprecated!\nexport {default as lineRadial, default as radialLine} from \"./lineRadial\"; // Note: radialLine is deprecated!\nexport {default as pointRadial} from \"./pointRadial\";\nexport {linkHorizontal, linkVertical, linkRadial} from \"./link/index\";\n\nexport {default as symbol, symbols} from \"./symbol\";\nexport {default as symbolCircle} from \"./symbol/circle\";\nexport {default as symbolCross} from \"./symbol/cross\";\nexport {default as symbolDiamond} from \"./symbol/diamond\";\nexport {default as symbolSquare} from \"./symbol/square\";\nexport {default as symbolStar} from \"./symbol/star\";\nexport {default as symbolTriangle} from \"./symbol/triangle\";\nexport {default as symbolWye} from \"./symbol/wye\";\n\nexport {default as curveBasisClosed} from \"./curve/basisClosed\";\nexport {default as curveBasisOpen} from \"./curve/basisOpen\";\nexport {default as curveBasis} from \"./curve/basis\";\nexport {default as curveBundle} from \"./curve/bundle\";\nexport {default as curveCardinalClosed} from \"./curve/cardinalClosed\";\nexport {default as curveCardinalOpen} from \"./curve/cardinalOpen\";\nexport {default as curveCardinal} from \"./curve/cardinal\";\nexport {default as curveCatmullRomClosed} from \"./curve/catmullRomClosed\";\nexport {default as curveCatmullRomOpen} from \"./curve/catmullRomOpen\";\nexport {default as curveCatmullRom} from \"./curve/catmullRom\";\nexport {default as curveLinearClosed} from \"./curve/linearClosed\";\nexport {default as curveLinear} from \"./curve/linear\";\nexport {monotoneX as curveMonotoneX, monotoneY as curveMonotoneY} from \"./curve/monotone\";\nexport {default as curveNatural} from \"./curve/natural\";\nexport {default as curveStep, stepAfter as curveStepAfter, stepBefore as curveStepBefore} from \"./curve/step\";\n\nexport {default as stack} from \"./stack\";\nexport {default as stackOffsetExpand} from \"./offset/expand\";\nexport {default as stackOffsetDiverging} from \"./offset/diverging\";\nexport {default as stackOffsetNone} from \"./offset/none\";\nexport {default as stackOffsetSilhouette} from \"./offset/silhouette\";\nexport {default as stackOffsetWiggle} from \"./offset/wiggle\";\nexport {default as stackOrderAppearance} from \"./order/appearance\";\nexport {default as stackOrderAscending} from \"./order/ascending\";\nexport {default as stackOrderDescending} from \"./order/descending\";\nexport {default as stackOrderInsideOut} from \"./order/insideOut\";\nexport {default as stackOrderNone} from \"./order/none\";\nexport {default as stackOrderReverse} from \"./order/reverse\";\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export {default as voronoi} from \"./voronoi\";\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","export {default as zoom} from \"./zoom.js\";\nexport {default as zoomTransform, identity as zoomIdentity} from \"./transform.js\";\n","export {version} from \"./dist/package.js\";\nexport * from \"d3-array\";\nexport * from \"d3-axis\";\nexport * from \"d3-brush\";\nexport * from \"d3-chord\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-contour\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-fetch\";\nexport * from \"d3-force\";\nexport * from \"d3-format\";\nexport * from \"d3-geo\";\nexport * from \"d3-hierarchy\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-path\";\nexport * from \"d3-polygon\";\nexport * from \"d3-quadtree\";\nexport * from \"d3-random\";\nexport * from \"d3-scale\";\nexport * from \"d3-scale-chromatic\";\nexport * from \"d3-selection\";\nexport * from \"d3-shape\";\nexport * from \"d3-time\";\nexport * from \"d3-time-format\";\nexport * from \"d3-timer\";\nexport * from \"d3-transition\";\nexport * from \"d3-voronoi\";\nexport * from \"d3-zoom\";\n","export function prettyNumber(input) {\n // If it has 3 or fewer sig figs already, just return the number.\n var input = Number(input),\n sciNo = input.toPrecision(3),\n prefix = '',\n suffixes = ['', 'k', 'M', 'B', 'T'];\n\n if (Number(sciNo) == input && String(input).length <= 4) {\n return String(input);\n }\n\n if (Math.abs(input) >= 1000000000000000) {\n return sciNo;\n }\n\n if (input >= 1 || input <= -1) {\n if (input < 0){\n //Pull off the negative side and stash that.\n input = -input;\n prefix = '-';\n }\n return prefix + recurse(input, 0);\n }\n else {\n return input.toPrecision(3);\n }\n\n function recurse(input, iteration) {\n var input = String(input);\n var split = input.split('.');\n // If there's a dot\n if (split.length > 1) {\n // Keep the left hand side only\n input = split[0];\n var rhs = split[1];\n // If the left-hand side is too short, pad until it has 3 digits\n if (input.length == 2 && rhs.length > 0) {\n // Pad with right-hand side if possible\n if (rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n else if (input.length == 1 && rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n // Pad with right-hand side if possible\n if (rhs.length > 1) {\n input += rhs.charAt(1);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n }\n var numNumerals = input.length;\n // if it has a period, then numNumerals is 1 smaller than the string length:\n if (input.split('.').length > 1) {\n numNumerals--;\n }\n if (numNumerals <= 3) {\n return String(input) + suffixes[iteration];\n }\n else {\n return recurse(Number(input) / 1000, iteration + 1);\n }\n }\n}\n","const matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nexport function escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n for (var prop in arguments[i]){\n target[prop] = arguments[i][prop];\n }\n }\n return target;\n}\n","import * as d3 from 'd3';\n\nexport function textWrap(text, width) {\n text.each(function () {\n let text = d3.select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.1, // ems\n x = text.attr(\"x\"),\n y = text.attr(\"y\"),\n dy = 0, //parseFloat(text.attr(\"dy\")),\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\");\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n .text(word);\n }\n }\n });\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import createNullList from '../utils/create-null-list';\nimport { each } from '../../utils/each';\n\nexport function appendColumn(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n self.matrix[0].push(label);\n each(self.matrix, function(row, i) {\n let cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].push(cell);\n }\n });\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat(createNullList(self.matrix.length - 1 - input.length));\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String(self.matrix.length));\n }\n });\n }\n\n self.matrix[0].push(label);\n each(input, function(value, i){\n self.matrix[i+1][self.matrix[0].length-1] = value;\n });\n\n }\n\n return self;\n}\n\nexport function appendRow(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n const newRow = [];\n\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i){\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.push(newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length));\n }\n });\n }\n\n self.matrix.push(newRow.concat(input));\n }\n\n return self;\n}\n","export default function (len) {\n const list = [];\n for (let i = 0; i < len; i++) {\n list.push(null);\n }\n return list;\n}\n","/* @license C3.js v0.7.2 | (c) C3 Team and other contributors | http://c3js.org/ */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.c3 = factory());\n}(this, function () { 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function ChartInternal(api) {\n var $$ = this;\n $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n $$.api = api;\n $$.config = $$.getDefaultConfig();\n $$.data = {};\n $$.cache = {};\n $$.axes = {};\n }\n\n /**\n * The Chart class\n *\n * The methods of this class is the public APIs of the chart object.\n */\n\n function Chart(config) {\n this.internal = new ChartInternal(this);\n this.internal.loadConfig(config);\n this.internal.beforeInit(config);\n this.internal.init();\n this.internal.afterInit(config); // bind \"this\" to nested API\n\n (function bindThis(fn, target, argThis) {\n Object.keys(fn).forEach(function (key) {\n target[key] = fn[key].bind(argThis);\n\n if (Object.keys(fn[key]).length > 0) {\n bindThis(fn[key], target[key], argThis);\n }\n });\n })(Chart.prototype, this, this);\n }\n\n function AxisInternal(component, params) {\n var internal = this;\n internal.component = component;\n internal.params = params || {};\n internal.d3 = component.d3;\n internal.scale = internal.d3.scaleLinear();\n internal.range;\n internal.orient = \"bottom\";\n internal.innerTickSize = 6;\n internal.outerTickSize = this.params.withOuterTick ? 6 : 0;\n internal.tickPadding = 3;\n internal.tickValues = null;\n internal.tickFormat;\n internal.tickArguments;\n internal.tickOffset = 0;\n internal.tickCulling = true;\n internal.tickCentered;\n internal.tickTextCharSize;\n internal.tickTextRotate = internal.params.tickTextRotate;\n internal.tickLength;\n internal.axis = internal.generateAxis();\n }\n\n AxisInternal.prototype.axisX = function (selection, x, tickOffset) {\n selection.attr(\"transform\", function (d) {\n return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n });\n };\n\n AxisInternal.prototype.axisY = function (selection, y) {\n selection.attr(\"transform\", function (d) {\n return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n });\n };\n\n AxisInternal.prototype.scaleExtent = function (domain) {\n var start = domain[0],\n stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n };\n\n AxisInternal.prototype.generateTicks = function (scale) {\n var internal = this;\n var i,\n domain,\n ticks = [];\n\n if (scale.ticks) {\n return scale.ticks.apply(scale, internal.tickArguments);\n }\n\n domain = scale.domain();\n\n for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n ticks.push(i);\n }\n\n if (ticks.length > 0 && ticks[0] > 0) {\n ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n }\n\n return ticks;\n };\n\n AxisInternal.prototype.copyScale = function () {\n var internal = this;\n var newScale = internal.scale.copy(),\n domain;\n\n if (internal.params.isCategory) {\n domain = internal.scale.domain();\n newScale.domain([domain[0], domain[1] - 1]);\n }\n\n return newScale;\n };\n\n AxisInternal.prototype.textFormatted = function (v) {\n var internal = this,\n formatted = internal.tickFormat ? internal.tickFormat(v) : v;\n return typeof formatted !== 'undefined' ? formatted : '';\n };\n\n AxisInternal.prototype.updateRange = function () {\n var internal = this;\n internal.range = internal.scale.rangeExtent ? internal.scale.rangeExtent() : internal.scaleExtent(internal.scale.range());\n return internal.range;\n };\n\n AxisInternal.prototype.updateTickTextCharSize = function (tick) {\n var internal = this;\n\n if (internal.tickTextCharSize) {\n return internal.tickTextCharSize;\n }\n\n var size = {\n h: 11.5,\n w: 5.5\n };\n tick.select('text').text(function (d) {\n return internal.textFormatted(d);\n }).each(function (d) {\n var box = this.getBoundingClientRect(),\n text = internal.textFormatted(d),\n h = box.height,\n w = text ? box.width / text.length : undefined;\n\n if (h && w) {\n size.h = h;\n size.w = w;\n }\n }).text('');\n internal.tickTextCharSize = size;\n return size;\n };\n\n AxisInternal.prototype.isVertical = function () {\n return this.orient === 'left' || this.orient === 'right';\n };\n\n AxisInternal.prototype.tspanData = function (d, i, scale) {\n var internal = this;\n var splitted = internal.params.tickMultiline ? internal.splitTickText(d, scale) : [].concat(internal.textFormatted(d));\n\n if (internal.params.tickMultiline && internal.params.tickMultilineMax > 0) {\n splitted = internal.ellipsify(splitted, internal.params.tickMultilineMax);\n }\n\n return splitted.map(function (s) {\n return {\n index: i,\n splitted: s,\n length: splitted.length\n };\n });\n };\n\n AxisInternal.prototype.splitTickText = function (d, scale) {\n var internal = this,\n tickText = internal.textFormatted(d),\n maxWidth = internal.params.tickWidth,\n subtext,\n spaceIndex,\n textWidth,\n splitted = [];\n\n if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n return tickText;\n }\n\n if (!maxWidth || maxWidth <= 0) {\n maxWidth = internal.isVertical() ? 95 : internal.params.isCategory ? Math.ceil(scale(1) - scale(0)) - 12 : 110;\n }\n\n function split(splitted, text) {\n spaceIndex = undefined;\n\n for (var i = 1; i < text.length; i++) {\n if (text.charAt(i) === ' ') {\n spaceIndex = i;\n }\n\n subtext = text.substr(0, i + 1);\n textWidth = internal.tickTextCharSize.w * subtext.length; // if text width gets over tick width, split by space index or crrent index\n\n if (maxWidth < textWidth) {\n return split(splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), text.slice(spaceIndex ? spaceIndex + 1 : i));\n }\n }\n\n return splitted.concat(text);\n }\n\n return split(splitted, tickText + \"\");\n };\n\n AxisInternal.prototype.ellipsify = function (splitted, max) {\n if (splitted.length <= max) {\n return splitted;\n }\n\n var ellipsified = splitted.slice(0, max);\n var remaining = 3;\n\n for (var i = max - 1; i >= 0; i--) {\n var available = ellipsified[i].length;\n ellipsified[i] = ellipsified[i].substr(0, available - remaining).padEnd(available, '.');\n remaining -= available;\n\n if (remaining <= 0) {\n break;\n }\n }\n\n return ellipsified;\n };\n\n AxisInternal.prototype.updateTickLength = function () {\n var internal = this;\n internal.tickLength = Math.max(internal.innerTickSize, 0) + internal.tickPadding;\n };\n\n AxisInternal.prototype.lineY2 = function (d) {\n var internal = this,\n tickPosition = internal.scale(d) + (internal.tickCentered ? 0 : internal.tickOffset);\n return internal.range[0] < tickPosition && tickPosition < internal.range[1] ? internal.innerTickSize : 0;\n };\n\n AxisInternal.prototype.textY = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1) : internal.tickLength;\n };\n\n AxisInternal.prototype.textTransform = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? \"rotate(\" + rotate + \")\" : \"\";\n };\n\n AxisInternal.prototype.textTextAnchor = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? rotate > 0 ? \"start\" : \"end\" : \"middle\";\n };\n\n AxisInternal.prototype.tspanDx = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 8 * Math.sin(Math.PI * (rotate / 180)) : 0;\n };\n\n AxisInternal.prototype.tspanDy = function (d, i) {\n var internal = this,\n dy = internal.tickTextCharSize.h;\n\n if (i === 0) {\n if (internal.isVertical()) {\n dy = -((d.length - 1) * (internal.tickTextCharSize.h / 2) - 3);\n } else {\n dy = \".71em\";\n }\n }\n\n return dy;\n };\n\n AxisInternal.prototype.generateAxis = function () {\n var internal = this,\n d3 = internal.d3,\n params = internal.params;\n\n function axis(g, transition) {\n var self;\n g.each(function () {\n var g = axis.g = d3.select(this);\n var scale0 = this.__chart__ || internal.scale,\n scale1 = this.__chart__ = internal.copyScale();\n var ticksValues = internal.tickValues ? internal.tickValues : internal.generateTicks(scale1),\n ticks = g.selectAll(\".tick\").data(ticksValues, scale1),\n tickEnter = ticks.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n tickExit = ticks.exit().remove(),\n tickUpdate = ticks.merge(tickEnter),\n tickTransform,\n tickX,\n tickY;\n\n if (params.isCategory) {\n internal.tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n tickX = internal.tickCentered ? 0 : internal.tickOffset;\n tickY = internal.tickCentered ? internal.tickOffset : 0;\n } else {\n internal.tickOffset = tickX = 0;\n }\n\n internal.updateRange();\n internal.updateTickLength();\n internal.updateTickTextCharSize(g.select('.tick'));\n var lineUpdate = tickUpdate.select(\"line\").merge(tickEnter.append(\"line\")),\n textUpdate = tickUpdate.select(\"text\").merge(tickEnter.append(\"text\"));\n var tspans = tickUpdate.selectAll('text').selectAll('tspan').data(function (d, i) {\n return internal.tspanData(d, i, scale1);\n }),\n tspanEnter = tspans.enter().append('tspan'),\n tspanUpdate = tspanEnter.merge(tspans).text(function (d) {\n return d.splitted;\n });\n tspans.exit().remove();\n var path = g.selectAll(\".domain\").data([0]),\n pathUpdate = path.enter().append(\"path\").merge(path).attr(\"class\", \"domain\"); // TODO: each attr should be one function and change its behavior by internal.orient, probably\n\n switch (internal.orient) {\n case \"bottom\":\n {\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return internal.textY(d, i);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + internal.outerTickSize);\n break;\n }\n\n case \"top\":\n {\n // TODO: rotated tick text\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return -1 * internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return -1 * internal.textY(d, i) - (params.isCategory ? 2 : internal.tickLength - 2);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + -internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + -internal.outerTickSize);\n break;\n }\n\n case \"left\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", -internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", -internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"end\");\n tspanUpdate.attr('x', -internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + -internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + -internal.outerTickSize);\n break;\n }\n\n case \"right\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"start\");\n tspanUpdate.attr('x', internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + internal.outerTickSize);\n break;\n }\n }\n\n if (scale1.rangeBand) {\n var x = scale1,\n dx = x.rangeBand() / 2;\n\n scale0 = scale1 = function scale1(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, internal.tickOffset);\n }\n\n tickEnter.call(tickTransform, scale0, internal.tickOffset);\n self = (transition ? tickUpdate.transition(transition) : tickUpdate).style('opacity', 1).call(tickTransform, scale1, internal.tickOffset);\n });\n return self;\n }\n\n axis.scale = function (x) {\n if (!arguments.length) {\n return internal.scale;\n }\n\n internal.scale = x;\n return axis;\n };\n\n axis.orient = function (x) {\n if (!arguments.length) {\n return internal.orient;\n }\n\n internal.orient = x in {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n } ? x + \"\" : \"bottom\";\n return axis;\n };\n\n axis.tickFormat = function (format) {\n if (!arguments.length) {\n return internal.tickFormat;\n }\n\n internal.tickFormat = format;\n return axis;\n };\n\n axis.tickCentered = function (isCentered) {\n if (!arguments.length) {\n return internal.tickCentered;\n }\n\n internal.tickCentered = isCentered;\n return axis;\n };\n\n axis.tickOffset = function () {\n return internal.tickOffset;\n };\n\n axis.tickInterval = function () {\n var interval, length;\n\n if (params.isCategory) {\n interval = internal.tickOffset * 2;\n } else {\n length = axis.g.select('path.domain').node().getTotalLength() - internal.outerTickSize * 2;\n interval = length / axis.g.selectAll('line').size();\n }\n\n return interval === Infinity ? 0 : interval;\n };\n\n axis.ticks = function () {\n if (!arguments.length) {\n return internal.tickArguments;\n }\n\n internal.tickArguments = arguments;\n return axis;\n };\n\n axis.tickCulling = function (culling) {\n if (!arguments.length) {\n return internal.tickCulling;\n }\n\n internal.tickCulling = culling;\n return axis;\n };\n\n axis.tickValues = function (x) {\n if (typeof x === 'function') {\n internal.tickValues = function () {\n return x(internal.scale.domain());\n };\n } else {\n if (!arguments.length) {\n return internal.tickValues;\n }\n\n internal.tickValues = x;\n }\n\n return axis;\n };\n\n return axis;\n };\n\n var CLASS = {\n target: 'c3-target',\n chart: 'c3-chart',\n chartLine: 'c3-chart-line',\n chartLines: 'c3-chart-lines',\n chartBar: 'c3-chart-bar',\n chartBars: 'c3-chart-bars',\n chartText: 'c3-chart-text',\n chartTexts: 'c3-chart-texts',\n chartArc: 'c3-chart-arc',\n chartArcs: 'c3-chart-arcs',\n chartArcsTitle: 'c3-chart-arcs-title',\n chartArcsBackground: 'c3-chart-arcs-background',\n chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n selectedCircle: 'c3-selected-circle',\n selectedCircles: 'c3-selected-circles',\n eventRect: 'c3-event-rect',\n eventRects: 'c3-event-rects',\n eventRectsSingle: 'c3-event-rects-single',\n eventRectsMultiple: 'c3-event-rects-multiple',\n zoomRect: 'c3-zoom-rect',\n brush: 'c3-brush',\n dragZoom: 'c3-drag-zoom',\n focused: 'c3-focused',\n defocused: 'c3-defocused',\n region: 'c3-region',\n regions: 'c3-regions',\n title: 'c3-title',\n tooltipContainer: 'c3-tooltip-container',\n tooltip: 'c3-tooltip',\n tooltipName: 'c3-tooltip-name',\n shape: 'c3-shape',\n shapes: 'c3-shapes',\n line: 'c3-line',\n lines: 'c3-lines',\n bar: 'c3-bar',\n bars: 'c3-bars',\n circle: 'c3-circle',\n circles: 'c3-circles',\n arc: 'c3-arc',\n arcLabelLine: 'c3-arc-label-line',\n arcs: 'c3-arcs',\n area: 'c3-area',\n areas: 'c3-areas',\n empty: 'c3-empty',\n text: 'c3-text',\n texts: 'c3-texts',\n gaugeValue: 'c3-gauge-value',\n grid: 'c3-grid',\n gridLines: 'c3-grid-lines',\n xgrid: 'c3-xgrid',\n xgrids: 'c3-xgrids',\n xgridLine: 'c3-xgrid-line',\n xgridLines: 'c3-xgrid-lines',\n xgridFocus: 'c3-xgrid-focus',\n ygrid: 'c3-ygrid',\n ygrids: 'c3-ygrids',\n ygridLine: 'c3-ygrid-line',\n ygridLines: 'c3-ygrid-lines',\n colorScale: 'c3-colorscale',\n stanfordElements: 'c3-stanford-elements',\n stanfordLine: 'c3-stanford-line',\n stanfordLines: 'c3-stanford-lines',\n stanfordRegion: 'c3-stanford-region',\n stanfordRegions: 'c3-stanford-regions',\n stanfordText: 'c3-stanford-text',\n stanfordTexts: 'c3-stanford-texts',\n axis: 'c3-axis',\n axisX: 'c3-axis-x',\n axisXLabel: 'c3-axis-x-label',\n axisY: 'c3-axis-y',\n axisYLabel: 'c3-axis-y-label',\n axisY2: 'c3-axis-y2',\n axisY2Label: 'c3-axis-y2-label',\n legendBackground: 'c3-legend-background',\n legendItem: 'c3-legend-item',\n legendItemEvent: 'c3-legend-item-event',\n legendItemTile: 'c3-legend-item-tile',\n legendItemHidden: 'c3-legend-item-hidden',\n legendItemFocused: 'c3-legend-item-focused',\n dragarea: 'c3-dragarea',\n EXPANDED: '_expanded_',\n SELECTED: '_selected_',\n INCLUDED: '_included_'\n };\n\n var asHalfPixel = function asHalfPixel(n) {\n return Math.ceil(n) + 0.5;\n };\n var ceil10 = function ceil10(v) {\n return Math.ceil(v / 10) * 10;\n };\n var diffDomain = function diffDomain(d) {\n return d[1] - d[0];\n };\n var getOption = function getOption(options, key, defaultValue) {\n return isDefined(options[key]) ? options[key] : defaultValue;\n };\n var getPathBox = function getPathBox(path) {\n var box = path.getBoundingClientRect(),\n items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n minX = items[0].x,\n minY = Math.min(items[0].y, items[1].y);\n return {\n x: minX,\n y: minY,\n width: box.width,\n height: box.height\n };\n };\n var hasValue = function hasValue(dict, value) {\n var found = false;\n Object.keys(dict).forEach(function (key) {\n if (dict[key] === value) {\n found = true;\n }\n });\n return found;\n };\n var isArray = function isArray(o) {\n return Array.isArray(o);\n };\n var isDefined = function isDefined(v) {\n return typeof v !== 'undefined';\n };\n var isEmpty = function isEmpty(o) {\n return typeof o === 'undefined' || o === null || isString(o) && o.length === 0 || _typeof(o) === 'object' && Object.keys(o).length === 0;\n };\n var isFunction = function isFunction(o) {\n return typeof o === 'function';\n };\n var isString = function isString(o) {\n return typeof o === 'string';\n };\n var isUndefined = function isUndefined(v) {\n return typeof v === 'undefined';\n };\n var isValue = function isValue(v) {\n return v || v === 0;\n };\n var notEmpty = function notEmpty(o) {\n return !isEmpty(o);\n };\n var sanitise = function sanitise(str) {\n return typeof str === 'string' ? str.replace(//g, '>') : str;\n };\n\n var Axis = function Axis(owner) {\n _classCallCheck(this, Axis);\n\n this.owner = owner;\n this.d3 = owner.d3;\n this.internal = AxisInternal;\n };\n\n Axis.prototype.init = function init() {\n var $$ = this.owner,\n config = $$.config,\n main = $$.main;\n $$.axes.x = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisX).attr(\"clip-path\", config.axis_x_inner ? \"\" : $$.clipPathForXAxis).attr(\"transform\", $$.getTranslate('x')).style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n $$.axes.x.append(\"text\").attr(\"class\", CLASS.axisXLabel).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n $$.axes.y = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY).attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis).attr(\"transform\", $$.getTranslate('y')).style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n $$.axes.y.append(\"text\").attr(\"class\", CLASS.axisYLabel).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n $$.axes.y2 = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2) // clip-path?\n .attr(\"transform\", $$.getTranslate('y2')).style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n $$.axes.y2.append(\"text\").attr(\"class\", CLASS.axisY2Label).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n };\n\n Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n isCategory: $$.isCategorized(),\n withOuterTick: withOuterTick,\n tickMultiline: config.axis_x_tick_multiline,\n tickMultilineMax: config.axis_x_tick_multiline ? Number(config.axis_x_tick_multilineMax) : 0,\n tickWidth: config.axis_x_tick_width,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n withoutTransition: withoutTransition\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient);\n\n if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n tickValues = tickValues.map(function (v) {\n return $$.parseDate(v);\n });\n } // Set tick\n\n\n axis.tickFormat(tickFormat).tickValues(tickValues);\n\n if ($$.isCategorized()) {\n axis.tickCentered(config.axis_x_tick_centered);\n\n if (isEmpty(config.axis_x_tick_culling)) {\n config.axis_x_tick_culling = false;\n }\n }\n\n return axis;\n };\n\n Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n var $$ = this.owner,\n config = $$.config,\n tickValues;\n\n if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n }\n\n if (axis) {\n axis.tickValues(tickValues);\n } else {\n $$.xAxis.tickValues(tickValues);\n $$.subXAxis.tickValues(tickValues);\n }\n\n return tickValues;\n };\n\n Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n withOuterTick: withOuterTick,\n withoutTransition: withoutTransition,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat);\n\n if ($$.isTimeSeriesY()) {\n axis.ticks(config.axis_y_tick_time_type, config.axis_y_tick_time_interval);\n } else {\n axis.tickValues(tickValues);\n }\n\n return axis;\n };\n\n Axis.prototype.getId = function getId(id) {\n var config = this.owner.config;\n return id in config.data_axes ? config.data_axes[id] : 'y';\n };\n\n Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {\n // #2251 previously set any negative values to a whole number,\n // however both should be truncated according to the users format specification\n var $$ = this.owner,\n config = $$.config;\n var format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) {\n return v;\n };\n\n if (config.axis_x_tick_format) {\n if (isFunction(config.axis_x_tick_format)) {\n format = config.axis_x_tick_format;\n } else if ($$.isTimeSeries()) {\n format = function format(date) {\n return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n };\n }\n }\n\n return isFunction(format) ? function (v) {\n return format.call($$, v);\n } : format;\n };\n\n Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {\n return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n };\n\n Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n };\n\n Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n };\n\n Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n };\n\n Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n var $$ = this.owner,\n config = $$.config,\n option;\n\n if (axisId === 'y') {\n option = config.axis_y_label;\n } else if (axisId === 'y2') {\n option = config.axis_y2_label;\n } else if (axisId === 'x') {\n option = config.axis_x_label;\n }\n\n return option;\n };\n\n Axis.prototype.getLabelText = function getLabelText(axisId) {\n var option = this.getLabelOptionByAxisId(axisId);\n return isString(option) ? option : option ? option.text : null;\n };\n\n Axis.prototype.setLabelText = function setLabelText(axisId, text) {\n var $$ = this.owner,\n config = $$.config,\n option = this.getLabelOptionByAxisId(axisId);\n\n if (isString(option)) {\n if (axisId === 'y') {\n config.axis_y_label = text;\n } else if (axisId === 'y2') {\n config.axis_y2_label = text;\n } else if (axisId === 'x') {\n config.axis_x_label = text;\n }\n } else if (option) {\n option.text = text;\n }\n };\n\n Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n var option = this.getLabelOptionByAxisId(axisId),\n position = option && _typeof(option) === 'object' && option.position ? option.position : defaultPosition;\n return {\n isInner: position.indexOf('inner') >= 0,\n isOuter: position.indexOf('outer') >= 0,\n isLeft: position.indexOf('left') >= 0,\n isCenter: position.indexOf('center') >= 0,\n isRight: position.indexOf('right') >= 0,\n isTop: position.indexOf('top') >= 0,\n isMiddle: position.indexOf('middle') >= 0,\n isBottom: position.indexOf('bottom') >= 0\n };\n };\n\n Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {\n return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n };\n\n Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {\n return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n\n Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n\n Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {\n return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n };\n\n Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {\n return this.getLabelText('x');\n };\n\n Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {\n return this.getLabelText('y');\n };\n\n Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {\n return this.getLabelText('y2');\n };\n\n Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n var $$ = this.owner;\n\n if (forHorizontal) {\n return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n } else {\n return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n }\n };\n\n Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n } else {\n return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n }\n };\n\n Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n } else {\n return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n }\n };\n\n Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {\n return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {\n return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {\n var $$ = this.owner,\n config = $$.config,\n position = this.getXAxisLabelPosition();\n\n if (config.axis_rotated) {\n return position.isInner ? \"1.2em\" : -25 - ($$.config.axis_x_inner ? 0 : this.getMaxTickWidth('x'));\n } else {\n return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n }\n };\n\n Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {\n var $$ = this.owner,\n position = this.getYAxisLabelPosition();\n\n if ($$.config.axis_rotated) {\n return position.isInner ? \"-0.5em\" : \"3em\";\n } else {\n return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : this.getMaxTickWidth('y') + 10);\n }\n };\n\n Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {\n var $$ = this.owner,\n position = this.getY2AxisLabelPosition();\n\n if ($$.config.axis_rotated) {\n return position.isInner ? \"1.2em\" : \"-2.2em\";\n } else {\n return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : this.getMaxTickWidth('y2') + 15);\n }\n };\n\n Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n var $$ = this.owner,\n config = $$.config,\n maxWidth = 0,\n targetsToShow,\n scale,\n axis,\n dummy,\n svg;\n\n if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n return $$.currentMaxTickWidths[id];\n }\n\n if ($$.svg) {\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n\n if (id === 'y') {\n scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n } else if (id === 'y2') {\n scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n } else {\n scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n this.updateXAxisTickValues(targetsToShow, axis);\n }\n\n dummy = $$.d3.select('body').append('div').classed('c3', true);\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), svg.append('g').call(axis).each(function () {\n $$.d3.select(this).selectAll('text').each(function () {\n var box = this.getBoundingClientRect();\n\n if (maxWidth < box.width) {\n maxWidth = box.width;\n }\n });\n dummy.remove();\n });\n }\n\n $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n return $$.currentMaxTickWidths[id];\n };\n\n Axis.prototype.updateLabels = function updateLabels(withTransition) {\n var $$ = this.owner;\n var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n (withTransition ? axisXLabel.transition() : axisXLabel).attr(\"x\", this.xForXAxisLabel.bind(this)).attr(\"dx\", this.dxForXAxisLabel.bind(this)).attr(\"dy\", this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this));\n (withTransition ? axisYLabel.transition() : axisYLabel).attr(\"x\", this.xForYAxisLabel.bind(this)).attr(\"dx\", this.dxForYAxisLabel.bind(this)).attr(\"dy\", this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this));\n (withTransition ? axisY2Label.transition() : axisY2Label).attr(\"x\", this.xForY2AxisLabel.bind(this)).attr(\"dx\", this.dxForY2AxisLabel.bind(this)).attr(\"dy\", this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this));\n };\n\n Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n var p = typeof padding === 'number' ? padding : padding[key];\n\n if (!isValue(p)) {\n return defaultValue;\n }\n\n if (padding.unit === 'ratio') {\n return padding[key] * domainLength;\n } // assume padding is pixels if unit is not specified\n\n\n return this.convertPixelsToAxisPadding(p, domainLength);\n };\n\n Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n var $$ = this.owner,\n length = $$.config.axis_rotated ? $$.width : $$.height;\n return domainLength * (pixels / length);\n };\n\n Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n var tickValues = values,\n targetCount,\n start,\n end,\n count,\n interval,\n i,\n tickValue;\n\n if (tickCount) {\n targetCount = isFunction(tickCount) ? tickCount() : tickCount; // compute ticks according to tickCount\n\n if (targetCount === 1) {\n tickValues = [values[0]];\n } else if (targetCount === 2) {\n tickValues = [values[0], values[values.length - 1]];\n } else if (targetCount > 2) {\n count = targetCount - 2;\n start = values[0];\n end = values[values.length - 1];\n interval = (end - start) / (count + 1); // re-construct unique values\n\n tickValues = [start];\n\n for (i = 0; i < count; i++) {\n tickValue = +start + interval * (i + 1);\n tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n }\n\n tickValues.push(end);\n }\n }\n\n if (!forTimeSeries) {\n tickValues = tickValues.sort(function (a, b) {\n return a - b;\n });\n }\n\n return tickValues;\n };\n\n Axis.prototype.generateTransitions = function generateTransitions(duration) {\n var $$ = this.owner,\n axes = $$.axes;\n return {\n axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n };\n };\n\n Axis.prototype.redraw = function redraw(duration, isHidden) {\n var $$ = this.owner,\n transition = duration ? $$.d3.transition().duration(duration) : null;\n $$.axes.x.style(\"opacity\", isHidden ? 0 : 1).call($$.xAxis, transition);\n $$.axes.y.style(\"opacity\", isHidden ? 0 : 1).call($$.yAxis, transition);\n $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1).call($$.y2Axis, transition);\n $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1).call($$.subXAxis, transition);\n };\n\n var c3 = {\n version: \"0.7.2\",\n chart: {\n fn: Chart.prototype,\n internal: {\n fn: ChartInternal.prototype,\n axis: {\n fn: Axis.prototype,\n internal: {\n fn: AxisInternal.prototype\n }\n }\n }\n },\n generate: function generate(config) {\n return new Chart(config);\n }\n };\n\n ChartInternal.prototype.beforeInit = function () {// can do something\n };\n\n ChartInternal.prototype.afterInit = function () {// can do something\n };\n\n ChartInternal.prototype.init = function () {\n var $$ = this,\n config = $$.config;\n $$.initParams();\n\n if (config.data_url) {\n $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n } else if (config.data_json) {\n $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n } else if (config.data_rows) {\n $$.initWithData($$.convertRowsToData(config.data_rows));\n } else if (config.data_columns) {\n $$.initWithData($$.convertColumnsToData(config.data_columns));\n } else {\n throw Error('url or json or rows or columns is required.');\n }\n };\n\n ChartInternal.prototype.initParams = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config; // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n\n $$.clipId = \"c3-\" + +new Date() + '-clip';\n $$.clipIdForXAxis = $$.clipId + '-xaxis';\n $$.clipIdForYAxis = $$.clipId + '-yaxis';\n $$.clipIdForGrid = $$.clipId + '-grid';\n $$.clipIdForSubchart = $$.clipId + '-subchart';\n $$.clipPath = $$.getClipPath($$.clipId);\n $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis);\n $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid);\n $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart);\n $$.dragStart = null;\n $$.dragging = false;\n $$.flowing = false;\n $$.cancelClick = false;\n $$.mouseover = false;\n $$.transiting = false;\n $$.color = $$.generateColor();\n $$.levelColor = $$.generateLevelColor();\n $$.dataTimeParse = (config.data_xLocaltime ? d3.timeParse : d3.utcParse)($$.config.data_xFormat);\n $$.axisTimeFormat = config.axis_x_localtime ? d3.timeFormat : d3.utcFormat;\n\n $$.defaultAxisTimeFormat = function (date) {\n if (date.getMilliseconds()) {\n return d3.timeFormat(\".%L\")(date);\n }\n\n if (date.getSeconds()) {\n return d3.timeFormat(\":%S\")(date);\n }\n\n if (date.getMinutes()) {\n return d3.timeFormat(\"%I:%M\")(date);\n }\n\n if (date.getHours()) {\n return d3.timeFormat(\"%I %p\")(date);\n }\n\n if (date.getDay() && date.getDate() !== 1) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n if (date.getDate() !== 1) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n if (date.getMonth()) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n return d3.timeFormat(\"%Y/%-m/%-d\")(date);\n };\n\n $$.hiddenTargetIds = [];\n $$.hiddenLegendIds = [];\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n $$.xOrient = config.axis_rotated ? config.axis_x_inner ? \"right\" : \"left\" : config.axis_x_inner ? \"top\" : \"bottom\";\n $$.yOrient = config.axis_rotated ? config.axis_y_inner ? \"top\" : \"bottom\" : config.axis_y_inner ? \"right\" : \"left\";\n $$.y2Orient = config.axis_rotated ? config.axis_y2_inner ? \"bottom\" : \"top\" : config.axis_y2_inner ? \"left\" : \"right\";\n $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n $$.isLegendRight = config.legend_position === 'right';\n $$.isLegendInset = config.legend_position === 'inset';\n $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n $$.legendStep = 0;\n $$.legendItemWidth = 0;\n $$.legendItemHeight = 0;\n $$.currentMaxTickWidths = {\n x: 0,\n y: 0,\n y2: 0\n };\n $$.rotated_padding_left = 30;\n $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n $$.rotated_padding_top = 5;\n $$.withoutFadeIn = {};\n $$.intervalForObserveInserted = undefined;\n $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n };\n\n ChartInternal.prototype.initChartElements = function () {\n if (this.initBar) {\n this.initBar();\n }\n\n if (this.initLine) {\n this.initLine();\n }\n\n if (this.initArc) {\n this.initArc();\n }\n\n if (this.initGauge) {\n this.initGauge();\n }\n\n if (this.initText) {\n this.initText();\n }\n };\n\n ChartInternal.prototype.initWithData = function (data) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n var defs,\n main,\n binding = true;\n $$.axis = new Axis($$);\n\n if (!config.bindto) {\n $$.selectChart = d3.selectAll([]);\n } else if (typeof config.bindto.node === 'function') {\n $$.selectChart = config.bindto;\n } else {\n $$.selectChart = d3.select(config.bindto);\n }\n\n if ($$.selectChart.empty()) {\n $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n $$.observeInserted($$.selectChart);\n binding = false;\n }\n\n $$.selectChart.html(\"\").classed(\"c3\", true); // Init data as targets\n\n $$.data.xs = {};\n $$.data.targets = $$.convertDataToTargets(data);\n\n if (config.data_filter) {\n $$.data.targets = $$.data.targets.filter(config.data_filter);\n } // Set targets to hide if needed\n\n\n if (config.data_hide) {\n $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n }\n\n if (config.legend_hide) {\n $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n }\n\n if ($$.isStanfordGraphType()) {\n $$.initStanfordData();\n } // Init sizes and scales\n\n\n $$.updateSizes();\n $$.updateScales(); // Set domains for each scale\n\n $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n $$.subX.domain($$.x.domain());\n $$.subY.domain($$.y.domain());\n $$.subY2.domain($$.y2.domain()); // Save original x domain for zoom update\n\n $$.orgXDomain = $$.x.domain();\n /*-- Basic Elements --*/\n // Define svgs\n\n $$.svg = $$.selectChart.append(\"svg\").style(\"overflow\", \"hidden\").on('mouseenter', function () {\n return config.onmouseover.call($$);\n }).on('mouseleave', function () {\n return config.onmouseout.call($$);\n });\n\n if ($$.config.svg_classname) {\n $$.svg.attr('class', $$.config.svg_classname);\n } // Define defs\n\n\n defs = $$.svg.append(\"defs\");\n $$.clipChart = $$.appendClip(defs, $$.clipId);\n $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n $$.updateSvgSize(); // Define regions\n\n main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n if ($$.initPie) {\n $$.initPie();\n }\n\n if ($$.initDragZoom) {\n $$.initDragZoom();\n }\n\n if ($$.initSubchart) {\n $$.initSubchart();\n }\n\n if ($$.initTooltip) {\n $$.initTooltip();\n }\n\n if ($$.initLegend) {\n $$.initLegend();\n }\n\n if ($$.initTitle) {\n $$.initTitle();\n }\n\n if ($$.initZoom) {\n $$.initZoom();\n }\n\n if ($$.isStanfordGraphType()) {\n $$.drawColorScale();\n } // Update selection based on size and scale\n // TODO: currently this must be called after initLegend because of update of sizes, but it should be done in initSubchart.\n\n\n if ($$.initSubchartBrush) {\n $$.initSubchartBrush();\n }\n /*-- Main Region --*/\n // text when empty\n\n\n main.append(\"text\").attr(\"class\", CLASS.text + ' ' + CLASS.empty).attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n // Regions\n\n $$.initRegion(); // Grids\n\n $$.initGrid(); // Define g for chart area\n\n main.append('g').attr(\"clip-path\", $$.clipPath).attr('class', CLASS.chart); // Grid lines\n\n if (config.grid_lines_front) {\n $$.initGridLines();\n }\n\n $$.initStanfordElements(); // Cover whole with rects for events\n\n $$.initEventRect(); // Define g for chart\n\n $$.initChartElements(); // Add Axis\n\n $$.axis.init(); // Set targets\n\n $$.updateTargets($$.data.targets); // Set default extent if defined\n\n if (config.axis_x_selection) {\n $$.brush.selectionAsValue($$.getDefaultSelection());\n } // Draw with targets\n\n\n if (binding) {\n $$.updateDimension();\n $$.config.oninit.call($$);\n $$.redraw({\n withTransition: false,\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransitionForAxis: false\n });\n } // Bind to resize event\n\n\n $$.bindResize(); // Bind to window focus event\n\n $$.bindWindowFocus(); // export element of the chart\n\n $$.api.element = $$.selectChart.node();\n };\n\n ChartInternal.prototype.smoothLines = function (el, type) {\n var $$ = this;\n\n if (type === 'grid') {\n el.each(function () {\n var g = $$.d3.select(this),\n x1 = g.attr('x1'),\n x2 = g.attr('x2'),\n y1 = g.attr('y1'),\n y2 = g.attr('y2');\n g.attr({\n 'x1': Math.ceil(x1),\n 'x2': Math.ceil(x2),\n 'y1': Math.ceil(y1),\n 'y2': Math.ceil(y2)\n });\n });\n }\n };\n\n ChartInternal.prototype.updateSizes = function () {\n var $$ = this,\n config = $$.config;\n var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n hasArc = $$.hasArcType(),\n xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n subchartHeight = config.subchart_show && !hasArc ? config.subchart_size_height + xAxisHeight : 0;\n $$.currentWidth = $$.getCurrentWidth();\n $$.currentHeight = $$.getCurrentHeight(); // for main\n\n $$.margin = config.axis_rotated ? {\n top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n } : {\n top: 4 + $$.getCurrentPaddingTop(),\n // for top tick text\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n }; // for subchart\n\n $$.margin2 = config.axis_rotated ? {\n top: $$.margin.top,\n right: NaN,\n bottom: 20 + legendHeightForBottom,\n left: $$.rotated_padding_left\n } : {\n top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n right: NaN,\n bottom: xAxisHeight + legendHeightForBottom,\n left: $$.margin.left\n }; // for legend\n\n $$.margin3 = {\n top: 0,\n right: NaN,\n bottom: 0,\n left: 0\n };\n\n if ($$.updateSizeForLegend) {\n $$.updateSizeForLegend(legendHeight, legendWidth);\n }\n\n $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n\n if ($$.width < 0) {\n $$.width = 0;\n }\n\n if ($$.height < 0) {\n $$.height = 0;\n }\n\n $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n\n if ($$.width2 < 0) {\n $$.width2 = 0;\n }\n\n if ($$.height2 < 0) {\n $$.height2 = 0;\n } // for arc\n\n\n $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n\n if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n }\n\n if ($$.updateRadius) {\n $$.updateRadius();\n }\n\n if ($$.isLegendRight && hasArc) {\n $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n }\n };\n\n ChartInternal.prototype.updateTargets = function (targets) {\n var $$ = this;\n /*-- Main --*/\n //-- Text --//\n\n $$.updateTargetsForText(targets); //-- Bar --//\n\n $$.updateTargetsForBar(targets); //-- Line --//\n\n $$.updateTargetsForLine(targets); //-- Arc --//\n\n if ($$.hasArcType() && $$.updateTargetsForArc) {\n $$.updateTargetsForArc(targets);\n }\n /*-- Sub --*/\n\n\n if ($$.updateTargetsForSubchart) {\n $$.updateTargetsForSubchart(targets);\n } // Fade-in each chart\n\n\n $$.showTargets();\n };\n\n ChartInternal.prototype.showTargets = function () {\n var $$ = this;\n $$.svg.selectAll('.' + CLASS.target).filter(function (d) {\n return $$.isTargetToShow(d.id);\n }).transition().duration($$.config.transition_duration).style(\"opacity\", 1);\n };\n\n ChartInternal.prototype.redraw = function (options, transitions) {\n var $$ = this,\n main = $$.main,\n d3 = $$.d3,\n config = $$.config;\n var areaIndices = $$.getShapeIndices($$.isAreaType),\n barIndices = $$.getShapeIndices($$.isBarType),\n lineIndices = $$.getShapeIndices($$.isLineType);\n var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension, withUpdateXAxis;\n var hideAxis = $$.hasArcType();\n var drawArea, drawBar, drawLine, xForText, yForText;\n var duration, durationForExit, durationForAxis;\n var transitionsToWait, waitForDraw, flow, transition;\n var targetsToShow = $$.filterTargetsToShow($$.data.targets),\n tickValues,\n i,\n intervalForCulling,\n xDomainForZoom;\n var xv = $$.xv.bind($$),\n cx,\n cy;\n options = options || {};\n withY = getOption(options, \"withY\", true);\n withSubchart = getOption(options, \"withSubchart\", true);\n withTransition = getOption(options, \"withTransition\", true);\n withTransform = getOption(options, \"withTransform\", false);\n withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n withLegend = getOption(options, \"withLegend\", false);\n withEventRect = getOption(options, \"withEventRect\", true);\n withDimension = getOption(options, \"withDimension\", true);\n withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n duration = withTransition ? config.transition_duration : 0;\n durationForExit = withTransitionForExit ? duration : 0;\n durationForAxis = withTransitionForAxis ? duration : 0;\n transitions = transitions || $$.axis.generateTransitions(durationForAxis); // update legend and transform each g\n\n if (withLegend && config.legend_show) {\n $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n } else if (withDimension) {\n // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n // no need to update axis in it because they will be updated in redraw()\n $$.updateDimension(true);\n } // MEMO: needed for grids calculation\n\n\n if ($$.isCategorized() && targetsToShow.length === 0) {\n $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n }\n\n if (targetsToShow.length) {\n $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n\n if (!config.axis_x_tick_values) {\n tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n }\n } else {\n $$.xAxis.tickValues([]);\n $$.subXAxis.tickValues([]);\n }\n\n if (config.zoom_rescale && !options.flow) {\n xDomainForZoom = $$.x.orgDomain();\n }\n\n $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n }\n\n if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n } // axes\n\n\n $$.axis.redraw(durationForAxis, hideAxis); // Update axis label\n\n $$.axis.updateLabels(withTransition); // show/hide if manual culling needed\n\n if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n if (config.axis_x_tick_culling && tickValues) {\n for (i = 1; i < tickValues.length; i++) {\n if (tickValues.length / i < config.axis_x_tick_culling_max) {\n intervalForCulling = i;\n break;\n }\n }\n\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n var index = tickValues.indexOf(e);\n\n if (index >= 0) {\n d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n }\n });\n } else {\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n }\n } // setup drawer - MEMO: these must be called after axis updated\n\n\n drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false); // update circleY based on updated parameters\n\n $$.updateCircleY(); // generate circle x/y functions depending on updated params\n\n cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$); // Update sub domain\n\n if (withY) {\n $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n } // xgrid focus\n\n\n $$.updateXgridFocus(); // Data empty label positioning and text.\n\n main.select(\"text.\" + CLASS.text + '.' + CLASS.empty).attr(\"x\", $$.width / 2).attr(\"y\", $$.height / 2).text(config.data_empty_label_text).transition().style('opacity', targetsToShow.length ? 0 : 1); // event rect\n\n if (withEventRect) {\n $$.redrawEventRect();\n } // grid\n\n\n $$.updateGrid(duration);\n $$.updateStanfordElements(duration); // rect for regions\n\n $$.updateRegion(duration); // bars\n\n $$.updateBar(durationForExit); // lines, areas and circles\n\n $$.updateLine(durationForExit);\n $$.updateArea(durationForExit);\n $$.updateCircle(cx, cy); // text\n\n if ($$.hasDataLabel()) {\n $$.updateText(xForText, yForText, durationForExit);\n } // title\n\n\n if ($$.redrawTitle) {\n $$.redrawTitle();\n } // arc\n\n\n if ($$.redrawArc) {\n $$.redrawArc(duration, durationForExit, withTransform);\n } // subchart\n\n\n if ($$.redrawSubchart) {\n $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n }\n\n if ($$.isStanfordGraphType()) {\n $$.drawColorScale();\n } // circles for select\n\n\n main.selectAll('.' + CLASS.selectedCircles).filter($$.isBarType.bind($$)).selectAll('circle').remove();\n\n if (options.flow) {\n flow = $$.generateFlow({\n targets: targetsToShow,\n flow: options.flow,\n duration: options.flow.duration,\n drawBar: drawBar,\n drawLine: drawLine,\n drawArea: drawArea,\n cx: cx,\n cy: cy,\n xv: xv,\n xForText: xForText,\n yForText: yForText\n });\n }\n\n if ($$.isTabVisible()) {\n // Only use transition if tab visible. See #938.\n if (duration) {\n // transition should be derived from one transition\n transition = d3.transition().duration(duration);\n transitionsToWait = [];\n [$$.redrawBar(drawBar, true, transition), $$.redrawLine(drawLine, true, transition), $$.redrawArea(drawArea, true, transition), $$.redrawCircle(cx, cy, true, transition), $$.redrawText(xForText, yForText, options.flow, true, transition), $$.redrawRegion(true, transition), $$.redrawGrid(true, transition)].forEach(function (transitions) {\n transitions.forEach(function (transition) {\n transitionsToWait.push(transition);\n });\n }); // Wait for end of transitions to call flow and onrendered callback\n\n waitForDraw = $$.generateWait();\n transitionsToWait.forEach(function (t) {\n waitForDraw.add(t);\n });\n waitForDraw(function () {\n if (flow) {\n flow();\n }\n\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n });\n } else {\n $$.redrawBar(drawBar);\n $$.redrawLine(drawLine);\n $$.redrawArea(drawArea);\n $$.redrawCircle(cx, cy);\n $$.redrawText(xForText, yForText, options.flow);\n $$.redrawRegion();\n $$.redrawGrid();\n\n if (flow) {\n flow();\n }\n\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n }\n } // update fadein condition\n\n\n $$.mapToIds($$.data.targets).forEach(function (id) {\n $$.withoutFadeIn[id] = true;\n });\n };\n\n ChartInternal.prototype.updateAndRedraw = function (options) {\n var $$ = this,\n config = $$.config,\n transitions;\n options = options || {}; // same with redraw\n\n options.withTransition = getOption(options, \"withTransition\", true);\n options.withTransform = getOption(options, \"withTransform\", false);\n options.withLegend = getOption(options, \"withLegend\", false); // NOT same with redraw\n\n options.withUpdateXDomain = getOption(options, \"withUpdateXDomain\", true);\n options.withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", true);\n options.withTransitionForExit = false;\n options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition); // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n\n $$.updateSizes(); // MEMO: called in updateLegend in redraw if withLegend\n\n if (!(options.withLegend && config.legend_show)) {\n transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0); // Update scales\n\n $$.updateScales();\n $$.updateSvgSize(); // Update g positions\n\n $$.transformAll(options.withTransitionForTransform, transitions);\n } // Draw with new sizes & scales\n\n\n $$.redraw(options, transitions);\n };\n\n ChartInternal.prototype.redrawWithoutRescale = function () {\n this.redraw({\n withY: false,\n withSubchart: false,\n withEventRect: false,\n withTransitionForAxis: false\n });\n };\n\n ChartInternal.prototype.isTimeSeries = function () {\n return this.config.axis_x_type === 'timeseries';\n };\n\n ChartInternal.prototype.isCategorized = function () {\n return this.config.axis_x_type.indexOf('categor') >= 0;\n };\n\n ChartInternal.prototype.isCustomX = function () {\n var $$ = this,\n config = $$.config;\n return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n };\n\n ChartInternal.prototype.isTimeSeriesY = function () {\n return this.config.axis_y_type === 'timeseries';\n };\n\n ChartInternal.prototype.getTranslate = function (target) {\n var $$ = this,\n config = $$.config,\n x,\n y;\n\n if (target === 'main') {\n x = asHalfPixel($$.margin.left);\n y = asHalfPixel($$.margin.top);\n } else if (target === 'context') {\n x = asHalfPixel($$.margin2.left);\n y = asHalfPixel($$.margin2.top);\n } else if (target === 'legend') {\n x = $$.margin3.left;\n y = $$.margin3.top;\n } else if (target === 'x') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height;\n } else if (target === 'y') {\n x = 0;\n y = config.axis_rotated ? $$.height : 0;\n } else if (target === 'y2') {\n x = config.axis_rotated ? 0 : $$.width;\n y = config.axis_rotated ? 1 : 0;\n } else if (target === 'subx') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height2;\n } else if (target === 'arc') {\n x = $$.arcWidth / 2;\n y = $$.arcHeight / 2 - ($$.hasType('gauge') ? 6 : 0); // to prevent wrong display of min and max label\n }\n\n return \"translate(\" + x + \",\" + y + \")\";\n };\n\n ChartInternal.prototype.initialOpacity = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n };\n\n ChartInternal.prototype.initialOpacityForCircle = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n };\n\n ChartInternal.prototype.opacityForCircle = function (d) {\n var isPointShouldBeShown = isFunction(this.config.point_show) ? this.config.point_show(d) : this.config.point_show;\n var opacity = isPointShouldBeShown || this.isStanfordType(d) ? 1 : 0;\n return isValue(d.value) ? this.isScatterType(d) ? 0.5 : opacity : 0;\n };\n\n ChartInternal.prototype.opacityForText = function () {\n return this.hasDataLabel() ? 1 : 0;\n };\n\n ChartInternal.prototype.xx = function (d) {\n return d ? this.x(d.x) : null;\n };\n\n ChartInternal.prototype.xvCustom = function (d, xyValue) {\n var $$ = this,\n value = xyValue ? d[xyValue] : d.value;\n\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n\n return Math.ceil($$.x(value));\n };\n\n ChartInternal.prototype.yvCustom = function (d, xyValue) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y,\n value = xyValue ? d[xyValue] : d.value;\n return Math.ceil(yScale(value));\n };\n\n ChartInternal.prototype.xv = function (d) {\n var $$ = this,\n value = d.value;\n\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n\n return Math.ceil($$.x(value));\n };\n\n ChartInternal.prototype.yv = function (d) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n return Math.ceil(yScale(d.value));\n };\n\n ChartInternal.prototype.subxx = function (d) {\n return d ? this.subX(d.x) : null;\n };\n\n ChartInternal.prototype.transformMain = function (withTransition, transitions) {\n var $$ = this,\n xAxis,\n yAxis,\n y2Axis;\n\n if (transitions && transitions.axisX) {\n xAxis = transitions.axisX;\n } else {\n xAxis = $$.main.select('.' + CLASS.axisX);\n\n if (withTransition) {\n xAxis = xAxis.transition();\n }\n }\n\n if (transitions && transitions.axisY) {\n yAxis = transitions.axisY;\n } else {\n yAxis = $$.main.select('.' + CLASS.axisY);\n\n if (withTransition) {\n yAxis = yAxis.transition();\n }\n }\n\n if (transitions && transitions.axisY2) {\n y2Axis = transitions.axisY2;\n } else {\n y2Axis = $$.main.select('.' + CLASS.axisY2);\n\n if (withTransition) {\n y2Axis = y2Axis.transition();\n }\n }\n\n (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n xAxis.attr(\"transform\", $$.getTranslate('x'));\n yAxis.attr(\"transform\", $$.getTranslate('y'));\n y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n };\n\n ChartInternal.prototype.transformAll = function (withTransition, transitions) {\n var $$ = this;\n $$.transformMain(withTransition, transitions);\n\n if ($$.config.subchart_show) {\n $$.transformContext(withTransition, transitions);\n }\n\n if ($$.legend) {\n $$.transformLegend(withTransition);\n }\n };\n\n ChartInternal.prototype.updateSvgSize = function () {\n var $$ = this,\n brush = $$.svg.select(\".c3-brush .overlay\");\n $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect').attr('width', $$.width).attr('height', $$.height);\n $$.svg.select('#' + $$.clipIdForXAxis).select('rect').attr('x', $$.getXAxisClipX.bind($$)).attr('y', $$.getXAxisClipY.bind($$)).attr('width', $$.getXAxisClipWidth.bind($$)).attr('height', $$.getXAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForYAxis).select('rect').attr('x', $$.getYAxisClipX.bind($$)).attr('y', $$.getYAxisClipY.bind($$)).attr('width', $$.getYAxisClipWidth.bind($$)).attr('height', $$.getYAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForSubchart).select('rect').attr('width', $$.width).attr('height', brush.size() ? brush.attr('height') : 0); // MEMO: parent div's height will be bigger than svg when \n\n $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n };\n\n ChartInternal.prototype.updateDimension = function (withoutAxis) {\n var $$ = this;\n\n if (!withoutAxis) {\n if ($$.config.axis_rotated) {\n $$.axes.x.call($$.xAxis);\n $$.axes.subx.call($$.subXAxis);\n } else {\n $$.axes.y.call($$.yAxis);\n $$.axes.y2.call($$.y2Axis);\n }\n }\n\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n $$.transformAll(false);\n };\n\n ChartInternal.prototype.observeInserted = function (selection) {\n var $$ = this,\n observer;\n\n if (typeof MutationObserver === 'undefined') {\n window.console.error(\"MutationObserver not defined.\");\n return;\n }\n\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'childList' && mutation.previousSibling) {\n observer.disconnect(); // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n\n $$.intervalForObserveInserted = window.setInterval(function () {\n // parentNode will NOT be null when completed\n if (selection.node().parentNode) {\n window.clearInterval($$.intervalForObserveInserted);\n $$.updateDimension();\n\n if ($$.brush) {\n $$.brush.update();\n }\n\n $$.config.oninit.call($$);\n $$.redraw({\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n selection.transition().style('opacity', 1);\n }\n }, 10);\n }\n });\n });\n observer.observe(selection.node(), {\n attributes: true,\n childList: true,\n characterData: true\n });\n };\n /**\n * Binds handlers to the window resize event.\n */\n\n\n ChartInternal.prototype.bindResize = function () {\n var $$ = this,\n config = $$.config;\n $$.resizeFunction = $$.generateResize(); // need to call .remove\n\n $$.resizeFunction.add(function () {\n config.onresize.call($$);\n });\n\n if (config.resize_auto) {\n $$.resizeFunction.add(function () {\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n $$.resizeTimeout = window.setTimeout(function () {\n delete $$.resizeTimeout;\n $$.updateAndRedraw({\n withUpdateXDomain: false,\n withUpdateOrgXDomain: false,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n\n if ($$.brush) {\n $$.brush.update();\n }\n }, 100);\n });\n }\n\n $$.resizeFunction.add(function () {\n config.onresized.call($$);\n });\n\n $$.resizeIfElementDisplayed = function () {\n // if element not displayed skip it\n if ($$.api == null || !$$.api.element.offsetParent) {\n return;\n }\n\n $$.resizeFunction();\n };\n\n if (window.attachEvent) {\n window.attachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.addEventListener) {\n window.addEventListener('resize', $$.resizeIfElementDisplayed, false);\n } else {\n // fallback to this, if this is a very old browser\n var wrapper = window.onresize;\n\n if (!wrapper) {\n // create a wrapper that will call all charts\n wrapper = $$.generateResize();\n } else if (!wrapper.add || !wrapper.remove) {\n // there is already a handler registered, make sure we call it too\n wrapper = $$.generateResize();\n wrapper.add(window.onresize);\n } // add this graph to the wrapper, we will be removed if the user calls destroy\n\n\n wrapper.add($$.resizeFunction);\n\n window.onresize = function () {\n // if element not displayed skip it\n if (!$$.api.element.offsetParent) {\n return;\n }\n\n wrapper();\n };\n }\n };\n /**\n * Binds handlers to the window focus event.\n */\n\n\n ChartInternal.prototype.bindWindowFocus = function () {\n var _this = this;\n\n if (this.windowFocusHandler) {\n // The handler is already set\n return;\n }\n\n this.windowFocusHandler = function () {\n _this.redraw();\n };\n\n window.addEventListener('focus', this.windowFocusHandler);\n };\n /**\n * Unbinds from the window focus event.\n */\n\n\n ChartInternal.prototype.unbindWindowFocus = function () {\n window.removeEventListener('focus', this.windowFocusHandler);\n delete this.windowFocusHandler;\n };\n\n ChartInternal.prototype.generateResize = function () {\n var resizeFunctions = [];\n\n function callResizeFunctions() {\n resizeFunctions.forEach(function (f) {\n f();\n });\n }\n\n callResizeFunctions.add = function (f) {\n resizeFunctions.push(f);\n };\n\n callResizeFunctions.remove = function (f) {\n for (var i = 0; i < resizeFunctions.length; i++) {\n if (resizeFunctions[i] === f) {\n resizeFunctions.splice(i, 1);\n break;\n }\n }\n };\n\n return callResizeFunctions;\n };\n\n ChartInternal.prototype.endall = function (transition, callback) {\n var n = 0;\n transition.each(function () {\n ++n;\n }).on(\"end\", function () {\n if (! --n) {\n callback.apply(this, arguments);\n }\n });\n };\n\n ChartInternal.prototype.generateWait = function () {\n var $$ = this;\n\n var transitionsToWait = [],\n f = function f(callback) {\n var timer = setInterval(function () {\n if (!$$.isTabVisible()) {\n return;\n }\n\n var done = 0;\n transitionsToWait.forEach(function (t) {\n if (t.empty()) {\n done += 1;\n return;\n }\n\n try {\n t.transition();\n } catch (e) {\n done += 1;\n }\n });\n\n if (done === transitionsToWait.length) {\n clearInterval(timer);\n\n if (callback) {\n callback();\n }\n }\n }, 50);\n };\n\n f.add = function (transition) {\n transitionsToWait.push(transition);\n };\n\n return f;\n };\n\n ChartInternal.prototype.parseDate = function (date) {\n var $$ = this,\n parsedDate;\n\n if (date instanceof Date) {\n parsedDate = date;\n } else if (typeof date === 'string') {\n parsedDate = $$.dataTimeParse(date);\n } else if (_typeof(date) === 'object') {\n parsedDate = new Date(+date);\n } else if (typeof date === 'number' && !isNaN(date)) {\n parsedDate = new Date(+date);\n }\n\n if (!parsedDate || isNaN(+parsedDate)) {\n window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n }\n\n return parsedDate;\n };\n\n ChartInternal.prototype.isTabVisible = function () {\n return !document.hidden;\n };\n\n ChartInternal.prototype.getPathBox = getPathBox;\n ChartInternal.prototype.CLASS = CLASS;\n\n /* jshint ignore:start */\n // SVGPathSeg API polyfill\n // https://github.com/progers/pathseg\n //\n // This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n // SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n // changes which were implemented in Firefox 43 and Chrome 46.\n (function () {\n\n if (!(\"SVGPathSeg\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\n this.pathSegType = type;\n this.pathSegTypeAsLetter = typeAsLetter;\n this._owningPathSegList = owningPathSegList;\n };\n\n window.SVGPathSeg.prototype.classname = \"SVGPathSeg\";\n window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\n window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\n window.SVGPathSeg.PATHSEG_ARC_REL = 11;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19; // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n\n window.SVGPathSeg.prototype._segmentChanged = function () {\n if (this._owningPathSegList) this._owningPathSegList.segmentChanged(this);\n };\n\n window.SVGPathSegClosePath = function (owningPathSegList) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n };\n\n window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegClosePath.prototype.toString = function () {\n return \"[object SVGPathSegClosePath]\";\n };\n\n window.SVGPathSegClosePath.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter;\n };\n\n window.SVGPathSegClosePath.prototype.clone = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegMovetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegMovetoAbs]\";\n };\n\n window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegMovetoAbs.prototype.clone = function () {\n return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegMovetoRel.prototype.toString = function () {\n return \"[object SVGPathSegMovetoRel]\";\n };\n\n window.SVGPathSegMovetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegMovetoRel.prototype.clone = function () {\n return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoAbs]\";\n };\n\n window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoRel]\";\n };\n\n window.SVGPathSegLinetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicAbs]\";\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicRel]\";\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticAbs]\";\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticRel]\";\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n\n window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegArcAbs.prototype.toString = function () {\n return \"[object SVGPathSegArcAbs]\";\n };\n\n window.SVGPathSegArcAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegArcAbs.prototype.clone = function () {\n return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r1\", {\n get: function get() {\n return this._r1;\n },\n set: function set(r1) {\n this._r1 = r1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r2\", {\n get: function get() {\n return this._r2;\n },\n set: function set(r2) {\n this._r2 = r2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"angle\", {\n get: function get() {\n return this._angle;\n },\n set: function set(angle) {\n this._angle = angle;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"largeArcFlag\", {\n get: function get() {\n return this._largeArcFlag;\n },\n set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"sweepFlag\", {\n get: function get() {\n return this._sweepFlag;\n },\n set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n\n window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegArcRel.prototype.toString = function () {\n return \"[object SVGPathSegArcRel]\";\n };\n\n window.SVGPathSegArcRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegArcRel.prototype.clone = function () {\n return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r1\", {\n get: function get() {\n return this._r1;\n },\n set: function set(r1) {\n this._r1 = r1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r2\", {\n get: function get() {\n return this._r2;\n },\n set: function set(r2) {\n this._r2 = r2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"angle\", {\n get: function get() {\n return this._angle;\n },\n set: function set(angle) {\n this._angle = angle;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"largeArcFlag\", {\n get: function get() {\n return this._largeArcFlag;\n },\n set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"sweepFlag\", {\n get: function get() {\n return this._sweepFlag;\n },\n set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n this._x = x;\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalAbs]\";\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n this._x = x;\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalRel]\";\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n this._y = y;\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalAbs]\";\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n this._y = y;\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalRel]\";\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothAbs]\";\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothRel]\";\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\";\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\";\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n }); // Add createSVGPathSeg* functions to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-Interfacewindow.SVGPathElement.\n\n window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\n return new window.SVGPathSegMovetoAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\n return new window.SVGPathSegMovetoRel(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\n return new window.SVGPathSegLinetoAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\n return new window.SVGPathSegLinetoRel(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\n return new window.SVGPathSegLinetoVerticalRel(undefined, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\n };\n\n if (!(\"getPathSegAtLength\" in window.SVGPathElement.prototype)) {\n // Add getPathSegAtLength to SVGPathElement.\n // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-__svg__SVGPathElement__getPathSegAtLength\n // This polyfill requires SVGPathElement.getTotalLength to implement the distance-along-a-path algorithm.\n window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\n if (distance === undefined || !isFinite(distance)) throw \"Invalid arguments.\";\n var measurementElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n measurementElement.setAttribute(\"d\", this.getAttribute(\"d\"));\n var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1; // If the path is empty, return 0.\n\n if (lastPathSegment <= 0) return 0;\n\n do {\n measurementElement.pathSegList.removeItem(lastPathSegment);\n if (distance > measurementElement.getTotalLength()) break;\n lastPathSegment--;\n } while (lastPathSegment > 0);\n\n return lastPathSegment;\n };\n }\n }\n\n if (!(\"SVGPathSegList\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n window.SVGPathSegList = function (pathElement) {\n this._pathElement = pathElement;\n this._list = this._parsePath(this._pathElement.getAttribute(\"d\")); // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n\n this._mutationObserverConfig = {\n \"attributes\": true,\n \"attributeFilter\": [\"d\"]\n };\n this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n window.SVGPathSegList.prototype.classname = \"SVGPathSegList\";\n Object.defineProperty(window.SVGPathSegList.prototype, \"numberOfItems\", {\n get: function get() {\n this._checkPathSynchronizedToList();\n\n return this._list.length;\n },\n enumerable: true\n }); // Add the pathSegList accessors to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n\n Object.defineProperty(window.SVGPathElement.prototype, \"pathSegList\", {\n get: function get() {\n if (!this._pathSegList) this._pathSegList = new window.SVGPathSegList(this);\n return this._pathSegList;\n },\n enumerable: true\n }); // FIXME: The following are not implemented and simply return window.SVGPathElement.pathSegList.\n\n Object.defineProperty(window.SVGPathElement.prototype, \"normalizedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedNormalizedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n }); // Process any pending mutations to the path element and update the list as needed.\n // This should be the first call of all public functions and is needed because\n // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n\n window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\n this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n };\n\n window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\n if (!this._pathElement) return;\n var hasPathMutations = false;\n mutationRecords.forEach(function (record) {\n if (record.attributeName == \"d\") hasPathMutations = true;\n });\n if (hasPathMutations) this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n }; // Serialize the list and update the path's 'd' attribute.\n\n\n window.SVGPathSegList.prototype._writeListToPath = function () {\n this._pathElementMutationObserver.disconnect();\n\n this._pathElement.setAttribute(\"d\", window.SVGPathSegList._pathSegArrayAsString(this._list));\n\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n }; // When a path segment changes the list needs to be synchronized back to the path element.\n\n\n window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.clear = function () {\n this._checkPathSynchronizedToList();\n\n this._list.forEach(function (pathSeg) {\n pathSeg._owningPathSegList = null;\n });\n\n this._list = [];\n\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.initialize = function (newItem) {\n this._checkPathSynchronizedToList();\n\n this._list = [newItem];\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype._checkValidIndex = function (index) {\n if (isNaN(index) || index < 0 || index >= this.numberOfItems) throw \"INDEX_SIZE_ERR\";\n };\n\n window.SVGPathSegList.prototype.getItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n\n return this._list[index];\n };\n\n window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\n this._checkPathSynchronizedToList(); // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n\n\n if (index > this.numberOfItems) index = this.numberOfItems;\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._list.splice(index, 0, newItem);\n\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._checkValidIndex(index);\n\n this._list[index] = newItem;\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype.removeItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n\n var item = this._list[index];\n\n this._list.splice(index, 1);\n\n this._writeListToPath();\n\n return item;\n };\n\n window.SVGPathSegList.prototype.appendItem = function (newItem) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._list.push(newItem);\n\n newItem._owningPathSegList = this; // TODO: Optimize this to just append to the existing attribute.\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\n var string = \"\";\n var first = true;\n pathSegArray.forEach(function (pathSeg) {\n if (first) {\n first = false;\n string += pathSeg._asPathString();\n } else {\n string += \" \" + pathSeg._asPathString();\n }\n });\n return string;\n }; // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n\n\n window.SVGPathSegList.prototype._parsePath = function (string) {\n if (!string || string.length == 0) return [];\n var owningPathSegList = this;\n\n var Builder = function Builder() {\n this.pathSegList = [];\n };\n\n Builder.prototype.appendSegment = function (pathSeg) {\n this.pathSegList.push(pathSeg);\n };\n\n var Source = function Source(string) {\n this._string = string;\n this._currentIndex = 0;\n this._endIndex = this._string.length;\n this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\n\n this._skipOptionalSpaces();\n };\n\n Source.prototype._isCurrentSpace = function () {\n var character = this._string[this._currentIndex];\n return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n };\n\n Source.prototype._skipOptionalSpaces = function () {\n while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {\n this._currentIndex++;\n }\n\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype._skipOptionalSpacesOrDelimiter = function () {\n if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\") return false;\n\n if (this._skipOptionalSpaces()) {\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n this._currentIndex++;\n\n this._skipOptionalSpaces();\n }\n }\n\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.hasMoreData = function () {\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.peekSegmentType = function () {\n var lookahead = this._string[this._currentIndex];\n return this._pathSegTypeFromChar(lookahead);\n };\n\n Source.prototype._pathSegTypeFromChar = function (lookahead) {\n switch (lookahead) {\n case \"Z\":\n case \"z\":\n return window.SVGPathSeg.PATHSEG_CLOSEPATH;\n\n case \"M\":\n return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\n\n case \"m\":\n return window.SVGPathSeg.PATHSEG_MOVETO_REL;\n\n case \"L\":\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n\n case \"l\":\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\n\n case \"C\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n\n case \"c\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n\n case \"Q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n\n case \"q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n\n case \"A\":\n return window.SVGPathSeg.PATHSEG_ARC_ABS;\n\n case \"a\":\n return window.SVGPathSeg.PATHSEG_ARC_REL;\n\n case \"H\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n\n case \"h\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n\n case \"V\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n\n case \"v\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n\n case \"S\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n\n case \"s\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n\n case \"T\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n\n case \"t\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n\n default:\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n }\n };\n\n Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\n // Check for remaining coordinates in the current command.\n if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || lookahead >= \"0\" && lookahead <= \"9\") && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS) return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL) return window.SVGPathSeg.PATHSEG_LINETO_REL;\n return previousCommand;\n }\n\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n };\n\n Source.prototype.initialCommandIsMoveTo = function () {\n // If the path is empty it is still valid, so return true.\n if (!this.hasMoreData()) return true;\n var command = this.peekSegmentType(); // Path must start with moveTo.\n\n return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;\n }; // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n\n\n Source.prototype._parseNumber = function () {\n var exponent = 0;\n var integer = 0;\n var frac = 1;\n var decimal = 0;\n var sign = 1;\n var expsign = 1;\n var startIndex = this._currentIndex;\n\n this._skipOptionalSpaces(); // Read the sign.\n\n\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\") this._currentIndex++;else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n sign = -1;\n }\n if (this._currentIndex == this._endIndex || (this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\") // The first character of a number must be one of [0-9+-.].\n return undefined; // Read the integer part, build right-to-left.\n\n var startIntPartIndex = this._currentIndex;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n this._currentIndex++;\n } // Advance to first non-digit.\n\n\n if (this._currentIndex != startIntPartIndex) {\n var scanIntPartIndex = this._currentIndex - 1;\n var multiplier = 1;\n\n while (scanIntPartIndex >= startIntPartIndex) {\n integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n multiplier *= 10;\n }\n } // Read the decimals.\n\n\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n this._currentIndex++; // There must be a least one digit following the .\n\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n frac *= 10;\n decimal += (this._string.charAt(this._currentIndex) - \"0\") / frac;\n this._currentIndex += 1;\n }\n } // Read the exponent part.\n\n\n if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\") {\n this._currentIndex++; // Read the sign of the exponent.\n\n if (this._string.charAt(this._currentIndex) == \"+\") {\n this._currentIndex++;\n } else if (this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n expsign = -1;\n } // There must be an exponent.\n\n\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n exponent *= 10;\n exponent += this._string.charAt(this._currentIndex) - \"0\";\n this._currentIndex++;\n }\n }\n\n var number = integer + decimal;\n number *= sign;\n if (exponent) number *= Math.pow(10, expsign * exponent);\n if (startIndex == this._currentIndex) return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return number;\n };\n\n Source.prototype._parseArcFlag = function () {\n if (this._currentIndex >= this._endIndex) return undefined;\n var flag = false;\n\n var flagChar = this._string.charAt(this._currentIndex++);\n\n if (flagChar == \"0\") flag = false;else if (flagChar == \"1\") flag = true;else return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return flag;\n };\n\n Source.prototype.parseSegment = function () {\n var lookahead = this._string[this._currentIndex];\n\n var command = this._pathSegTypeFromChar(lookahead);\n\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\n // Possibly an implicit command. Not allowed if this is the first command.\n if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n command = this._nextCommandHelper(lookahead, this._previousCommand);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n } else {\n this._currentIndex++;\n }\n\n this._previousCommand = command;\n\n switch (command) {\n case window.SVGPathSeg.PATHSEG_MOVETO_REL:\n return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\n return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_REL:\n return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_ABS:\n return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_CLOSEPATH:\n this._skipOptionalSpaces();\n\n return new window.SVGPathSegClosePath(owningPathSegList);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n var points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n var points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_ARC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n\n case window.SVGPathSeg.PATHSEG_ARC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n\n default:\n throw \"Unknown path seg type.\";\n }\n };\n\n var builder = new Builder();\n var source = new Source(string);\n if (!source.initialCommandIsMoveTo()) return [];\n\n while (source.hasMoreData()) {\n var pathSeg = source.parseSegment();\n if (!pathSeg) return [];\n builder.appendSegment(pathSeg);\n }\n\n return builder.pathSegList;\n };\n }\n })(); // String.padEnd polyfill for IE11\n //\n // https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd\n\n\n if (!String.prototype.padEnd) {\n String.prototype.padEnd = function padEnd(targetLength, padString) {\n targetLength = targetLength >> 0; //floor if number or convert non-number to 0;\n\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\n\n if (this.length > targetLength) {\n return String(this);\n } else {\n targetLength = targetLength - this.length;\n\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n\n return String(this) + padString.slice(0, targetLength);\n }\n };\n }\n /* jshint ignore:end */\n\n Chart.prototype.axis = function () {};\n\n Chart.prototype.axis.labels = function (labels) {\n var $$ = this.internal;\n\n if (arguments.length) {\n Object.keys(labels).forEach(function (axisId) {\n $$.axis.setLabelText(axisId, labels[axisId]);\n });\n $$.axis.updateLabels();\n } // TODO: return some values?\n\n };\n\n Chart.prototype.axis.max = function (max) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length) {\n if (_typeof(max) === 'object') {\n if (isValue(max.x)) {\n config.axis_x_max = max.x;\n }\n\n if (isValue(max.y)) {\n config.axis_y_max = max.y;\n }\n\n if (isValue(max.y2)) {\n config.axis_y2_max = max.y2;\n }\n } else {\n config.axis_y_max = config.axis_y2_max = max;\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n } else {\n return {\n x: config.axis_x_max,\n y: config.axis_y_max,\n y2: config.axis_y2_max\n };\n }\n };\n\n Chart.prototype.axis.min = function (min) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length) {\n if (_typeof(min) === 'object') {\n if (isValue(min.x)) {\n config.axis_x_min = min.x;\n }\n\n if (isValue(min.y)) {\n config.axis_y_min = min.y;\n }\n\n if (isValue(min.y2)) {\n config.axis_y2_min = min.y2;\n }\n } else {\n config.axis_y_min = config.axis_y2_min = min;\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n } else {\n return {\n x: config.axis_x_min,\n y: config.axis_y_min,\n y2: config.axis_y2_min\n };\n }\n };\n\n Chart.prototype.axis.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.axis.max(range.max);\n }\n\n if (isDefined(range.min)) {\n this.axis.min(range.min);\n }\n } else {\n return {\n max: this.axis.max(),\n min: this.axis.min()\n };\n }\n };\n\n Chart.prototype.category = function (i, category) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length > 1) {\n config.axis_x_categories[i] = category;\n $$.redraw();\n }\n\n return config.axis_x_categories[i];\n };\n\n Chart.prototype.categories = function (categories) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!arguments.length) {\n return config.axis_x_categories;\n }\n\n config.axis_x_categories = categories;\n $$.redraw();\n return config.axis_x_categories;\n };\n\n Chart.prototype.resize = function (size) {\n var $$ = this.internal,\n config = $$.config;\n config.size_width = size ? size.width : null;\n config.size_height = size ? size.height : null;\n this.flush();\n };\n\n Chart.prototype.flush = function () {\n var $$ = this.internal;\n $$.updateAndRedraw({\n withLegend: true,\n withTransition: false,\n withTransitionForTransform: false\n });\n };\n\n Chart.prototype.destroy = function () {\n var $$ = this.internal;\n window.clearInterval($$.intervalForObserveInserted);\n\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n if (window.detachEvent) {\n window.detachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.removeEventListener) {\n window.removeEventListener('resize', $$.resizeIfElementDisplayed);\n } else {\n var wrapper = window.onresize; // check if no one else removed our wrapper and remove our resizeFunction from it\n\n if (wrapper && wrapper.add && wrapper.remove) {\n wrapper.remove($$.resizeFunction);\n }\n } // Removes the inner resize functions\n\n\n $$.resizeFunction.remove(); // Unbinds from the window focus event\n\n $$.unbindWindowFocus();\n $$.selectChart.classed('c3', false).html(\"\"); // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n\n Object.keys($$).forEach(function (key) {\n $$[key] = null;\n });\n return null;\n };\n\n Chart.prototype.color = function (id) {\n var $$ = this.internal;\n return $$.color(id); // more patterns\n };\n\n Chart.prototype.data = function (targetIds) {\n var targets = this.internal.data.targets;\n return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n return [].concat(targetIds).indexOf(t.id) >= 0;\n });\n };\n\n Chart.prototype.data.shown = function (targetIds) {\n return this.internal.filterTargetsToShow(this.data(targetIds));\n };\n\n Chart.prototype.data.values = function (targetId) {\n var targets,\n values = null;\n\n if (targetId) {\n targets = this.data(targetId);\n values = targets[0] ? targets[0].values.map(function (d) {\n return d.value;\n }) : null;\n }\n\n return values;\n };\n\n Chart.prototype.data.names = function (names) {\n this.internal.clearLegendItemTextBoxCache();\n return this.internal.updateDataAttributes('names', names);\n };\n\n Chart.prototype.data.colors = function (colors) {\n return this.internal.updateDataAttributes('colors', colors);\n };\n\n Chart.prototype.data.axes = function (axes) {\n return this.internal.updateDataAttributes('axes', axes);\n };\n\n Chart.prototype.flow = function (args) {\n var $$ = this.internal,\n targets,\n data,\n notfoundIds = [],\n orgDataCount = $$.getMaxDataCount(),\n dataCount,\n domain,\n baseTarget,\n baseValue,\n length = 0,\n tail = 0,\n diff,\n to;\n\n if (args.json) {\n data = $$.convertJsonToData(args.json, args.keys);\n } else if (args.rows) {\n data = $$.convertRowsToData(args.rows);\n } else if (args.columns) {\n data = $$.convertColumnsToData(args.columns);\n } else {\n return;\n }\n\n targets = $$.convertDataToTargets(data, true); // Update/Add data\n\n $$.data.targets.forEach(function (t) {\n var found = false,\n i,\n j;\n\n for (i = 0; i < targets.length; i++) {\n if (t.id === targets[i].id) {\n found = true;\n\n if (t.values[t.values.length - 1]) {\n tail = t.values[t.values.length - 1].index + 1;\n }\n\n length = targets[i].values.length;\n\n for (j = 0; j < length; j++) {\n targets[i].values[j].index = tail + j;\n\n if (!$$.isTimeSeries()) {\n targets[i].values[j].x = tail + j;\n }\n }\n\n t.values = t.values.concat(targets[i].values);\n targets.splice(i, 1);\n break;\n }\n }\n\n if (!found) {\n notfoundIds.push(t.id);\n }\n }); // Append null for not found targets\n\n $$.data.targets.forEach(function (t) {\n var i, j;\n\n for (i = 0; i < notfoundIds.length; i++) {\n if (t.id === notfoundIds[i]) {\n tail = t.values[t.values.length - 1].index + 1;\n\n for (j = 0; j < length; j++) {\n t.values.push({\n id: t.id,\n index: tail + j,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n value: null\n });\n }\n }\n }\n }); // Generate null values for new target\n\n if ($$.data.targets.length) {\n targets.forEach(function (t) {\n var i,\n missing = [];\n\n for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n missing.push({\n id: t.id,\n index: i,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n value: null\n });\n }\n\n t.values.forEach(function (v) {\n v.index += tail;\n\n if (!$$.isTimeSeries()) {\n v.x += tail;\n }\n });\n t.values = missing.concat(t.values);\n });\n }\n\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n // check data count because behavior needs to change when it's only one\n\n dataCount = $$.getMaxDataCount();\n baseTarget = $$.data.targets[0];\n baseValue = baseTarget.values[0]; // Update length to flow if needed\n\n if (isDefined(args.to)) {\n length = 0;\n to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n baseTarget.values.forEach(function (v) {\n if (v.x < to) {\n length++;\n }\n });\n } else if (isDefined(args.length)) {\n length = args.length;\n } // If only one data, update the domain to flow from left edge of the chart\n\n\n if (!orgDataCount) {\n if ($$.isTimeSeries()) {\n if (baseTarget.values.length > 1) {\n diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n } else {\n diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n }\n } else {\n diff = 1;\n }\n\n domain = [baseValue.x - diff, baseValue.x];\n $$.updateXDomain(null, true, true, false, domain);\n } else if (orgDataCount === 1) {\n if ($$.isTimeSeries()) {\n diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n $$.updateXDomain(null, true, true, false, domain);\n }\n } // Set targets\n\n\n $$.updateTargets($$.data.targets); // Redraw with new targets\n\n $$.redraw({\n flow: {\n index: baseValue.index,\n length: length,\n duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n done: args.done,\n orgDataCount: orgDataCount\n },\n withLegend: true,\n withTransition: orgDataCount > 1,\n withTrimXDomain: false,\n withUpdateXAxis: true\n });\n };\n\n ChartInternal.prototype.generateFlow = function (args) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n return function () {\n var targets = args.targets,\n flow = args.flow,\n drawBar = args.drawBar,\n drawLine = args.drawLine,\n drawArea = args.drawArea,\n cx = args.cx,\n cy = args.cy,\n xv = args.xv,\n xForText = args.xForText,\n yForText = args.yForText,\n duration = args.duration;\n\n var translateX,\n scaleX = 1,\n transform,\n flowIndex = flow.index,\n flowLength = flow.length,\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n orgDomain = $$.x.domain(),\n domain,\n durationForFlow = flow.duration || duration,\n done = flow.done || function () {},\n wait = $$.generateWait();\n\n var xgrid, xgridLines, mainRegion, mainText, mainBar, mainLine, mainArea, mainCircle; // set flag\n\n $$.flowing = true; // remove head data after rendered\n\n $$.data.targets.forEach(function (d) {\n d.values.splice(0, flowLength);\n }); // update x domain to generate axis elements for flow\n\n domain = $$.updateXDomain(targets, true, true); // update elements related to x scale\n\n if ($$.updateXGrid) {\n $$.updateXGrid(true);\n }\n\n xgrid = $$.xgrid || d3.selectAll([]); // xgrid needs to be obtained after updateXGrid\n\n xgridLines = $$.xgridLines || d3.selectAll([]);\n mainRegion = $$.mainRegion || d3.selectAll([]);\n mainText = $$.mainText || d3.selectAll([]);\n mainBar = $$.mainBar || d3.selectAll([]);\n mainLine = $$.mainLine || d3.selectAll([]);\n mainArea = $$.mainArea || d3.selectAll([]);\n mainCircle = $$.mainCircle || d3.selectAll([]); // generate transform to flow\n\n if (!flow.orgDataCount) {\n // if empty\n if ($$.data.targets[0].values.length !== 1) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n } else {\n translateX = diffDomain(domain) / 2;\n }\n }\n } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n }\n }\n\n scaleX = diffDomain(orgDomain) / diffDomain(domain);\n transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n $$.hideXGridFocus();\n var flowTransition = d3.transition().ease(d3.easeLinear).duration(durationForFlow);\n wait.add($$.xAxis($$.axes.x, flowTransition));\n wait.add(mainBar.transition(flowTransition).attr('transform', transform));\n wait.add(mainLine.transition(flowTransition).attr('transform', transform));\n wait.add(mainArea.transition(flowTransition).attr('transform', transform));\n wait.add(mainCircle.transition(flowTransition).attr('transform', transform));\n wait.add(mainText.transition(flowTransition).attr('transform', transform));\n wait.add(mainRegion.filter($$.isRegionOnX).transition(flowTransition).attr('transform', transform));\n wait.add(xgrid.transition(flowTransition).attr('transform', transform));\n wait.add(xgridLines.transition(flowTransition).attr('transform', transform));\n wait(function () {\n var i,\n shapes = [],\n texts = []; // remove flowed elements\n\n if (flowLength) {\n for (i = 0; i < flowLength; i++) {\n shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n }\n\n $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n $$.svg.select('.' + CLASS.xgrid).remove();\n } // draw again for removing flowed elements and reverting attr\n\n\n xgrid.attr('transform', null).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n xgridLines.attr('transform', null);\n xgridLines.select('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv);\n xgridLines.select('text').attr(\"x\", config.axis_rotated ? $$.width : 0).attr(\"y\", xv);\n mainBar.attr('transform', null).attr(\"d\", drawBar);\n mainLine.attr('transform', null).attr(\"d\", drawLine);\n mainArea.attr('transform', null).attr(\"d\", drawArea);\n mainCircle.attr('transform', null).attr(\"cx\", cx).attr(\"cy\", cy);\n mainText.attr('transform', null).attr('x', xForText).attr('y', yForText).style('fill-opacity', $$.opacityForText.bind($$));\n mainRegion.attr('transform', null);\n mainRegion.filter($$.isRegionOnX).attr(\"x\", $$.regionX.bind($$)).attr(\"width\", $$.regionWidth.bind($$)); // callback for end of flow\n\n done();\n $$.flowing = false;\n });\n };\n };\n\n Chart.prototype.focus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), this.revert();\n this.defocus();\n candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n\n if ($$.hasArcType()) {\n $$.expandArc(targetIds);\n }\n\n $$.toggleFocusLegend(targetIds, true);\n $$.focusedTargetIds = targetIds;\n $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n Chart.prototype.defocus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n\n $$.toggleFocusLegend(targetIds, false);\n $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n $$.defocusedTargetIds = targetIds;\n };\n\n Chart.prototype.revert = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n\n if ($$.config.legend_show) {\n $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n $$.legend.selectAll($$.selectorLegends(targetIds)).filter(function () {\n return $$.d3.select(this).classed(CLASS.legendItemFocused);\n }).classed(CLASS.legendItemFocused, false);\n }\n\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n };\n\n Chart.prototype.xgrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!grids) {\n return config.grid_x_lines;\n }\n\n config.grid_x_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_x_lines;\n };\n\n Chart.prototype.xgrids.add = function (grids) {\n var $$ = this.internal;\n return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n };\n\n Chart.prototype.xgrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, true);\n };\n\n Chart.prototype.ygrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!grids) {\n return config.grid_y_lines;\n }\n\n config.grid_y_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_y_lines;\n };\n\n Chart.prototype.ygrids.add = function (grids) {\n var $$ = this.internal;\n return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n };\n\n Chart.prototype.ygrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, false);\n };\n\n Chart.prototype.groups = function (groups) {\n var $$ = this.internal,\n config = $$.config;\n\n if (isUndefined(groups)) {\n return config.data_groups;\n }\n\n config.data_groups = groups;\n $$.redraw();\n return config.data_groups;\n };\n\n Chart.prototype.legend = function () {};\n\n Chart.prototype.legend.show = function (targetIds) {\n var $$ = this.internal;\n $$.showLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({\n withLegend: true\n });\n };\n\n Chart.prototype.legend.hide = function (targetIds) {\n var $$ = this.internal;\n $$.hideLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({\n withLegend: false\n });\n };\n\n Chart.prototype.load = function (args) {\n var $$ = this.internal,\n config = $$.config; // update xs if specified\n\n if (args.xs) {\n $$.addXs(args.xs);\n } // update names if exists\n\n\n if ('names' in args) {\n Chart.prototype.data.names.bind(this)(args.names);\n } // update classes if exists\n\n\n if ('classes' in args) {\n Object.keys(args.classes).forEach(function (id) {\n config.data_classes[id] = args.classes[id];\n });\n } // update categories if exists\n\n\n if ('categories' in args && $$.isCategorized()) {\n config.axis_x_categories = args.categories;\n } // update axes if exists\n\n\n if ('axes' in args) {\n Object.keys(args.axes).forEach(function (id) {\n config.data_axes[id] = args.axes[id];\n });\n } // update colors if exists\n\n\n if ('colors' in args) {\n Object.keys(args.colors).forEach(function (id) {\n config.data_colors[id] = args.colors[id];\n });\n } // use cache if exists\n\n\n if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n $$.load($$.getCaches(args.cacheIds), args.done);\n return;\n } // unload if needed\n\n\n if ('unload' in args) {\n // TODO: do not unload if target will load (included in url/rows/columns)\n $$.unload($$.mapToTargetIds(typeof args.unload === 'boolean' && args.unload ? null : args.unload), function () {\n $$.loadFromArgs(args);\n });\n } else {\n $$.loadFromArgs(args);\n }\n };\n\n Chart.prototype.unload = function (args) {\n var $$ = this.internal;\n args = args || {};\n\n if (args instanceof Array) {\n args = {\n ids: args\n };\n } else if (typeof args === 'string') {\n args = {\n ids: [args]\n };\n }\n\n $$.unload($$.mapToTargetIds(args.ids), function () {\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n\n if (args.done) {\n args.done();\n }\n });\n };\n\n Chart.prototype.regions = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!regions) {\n return config.regions;\n }\n\n config.regions = regions;\n $$.redrawWithoutRescale();\n return config.regions;\n };\n\n Chart.prototype.regions.add = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!regions) {\n return config.regions;\n }\n\n config.regions = config.regions.concat(regions);\n $$.redrawWithoutRescale();\n return config.regions;\n };\n\n Chart.prototype.regions.remove = function (options) {\n var $$ = this.internal,\n config = $$.config,\n duration,\n classes,\n regions;\n options = options || {};\n duration = getOption(options, \"duration\", config.transition_duration);\n classes = getOption(options, \"classes\", [CLASS.region]);\n regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) {\n return '.' + c;\n }));\n (duration ? regions.transition().duration(duration) : regions).style('opacity', 0).remove();\n config.regions = config.regions.filter(function (region) {\n var found = false;\n\n if (!region['class']) {\n return true;\n }\n\n region['class'].split(' ').forEach(function (c) {\n if (classes.indexOf(c) >= 0) {\n found = true;\n }\n });\n return !found;\n });\n return config.regions;\n };\n\n Chart.prototype.selected = function (targetId) {\n var $$ = this.internal,\n d3 = $$.d3;\n return $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape).filter(function () {\n return d3.select(this).classed(CLASS.SELECTED);\n }).nodes().map(function (d) {\n var data = d.__data__;\n return data.data ? data.data : data;\n });\n };\n\n Chart.prototype.select = function (ids, indices, resetOther) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n\n if (!config.data_selection_enabled) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED); // line/area selection not supported yet\n\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d) && !isSelected) {\n toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n }\n } else if (isDefined(resetOther) && resetOther) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n });\n };\n\n Chart.prototype.unselect = function (ids, indices) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n\n if (!config.data_selection_enabled) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED); // line/area selection not supported yet\n\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d)) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n }\n });\n };\n\n Chart.prototype.show = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n $$.removeHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n targets.transition().style('display', 'initial', 'important').style('opacity', 1, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 1);\n });\n\n if (options.withLegend) {\n $$.showLegend(targetIds);\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n };\n\n Chart.prototype.hide = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n $$.addHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n targets.transition().style('opacity', 0, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 0);\n targets.style('display', 'none');\n });\n\n if (options.withLegend) {\n $$.hideLegend(targetIds);\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n };\n\n Chart.prototype.toggle = function (targetIds, options) {\n var that = this,\n $$ = this.internal;\n $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n });\n };\n\n Chart.prototype.tooltip = function () {};\n\n Chart.prototype.tooltip.show = function (args) {\n var $$ = this.internal,\n targets,\n data,\n mouse = {}; // determine mouse position on the chart\n\n if (args.mouse) {\n mouse = args.mouse;\n } else {\n // determine focus data\n if (args.data) {\n data = args.data;\n } else if (typeof args.x !== 'undefined') {\n if (args.id) {\n targets = $$.data.targets.filter(function (t) {\n return t.id === args.id;\n });\n } else {\n targets = $$.data.targets;\n }\n\n data = $$.filterByX(targets, args.x).slice(0, 1)[0];\n }\n\n mouse = data ? $$.getMousePosition(data) : null;\n } // emulate mouse events to show\n\n\n $$.dispatchEvent('mousemove', mouse);\n $$.config.tooltip_onshow.call($$, data);\n };\n\n Chart.prototype.tooltip.hide = function () {\n // TODO: get target data by checking the state of focus\n this.internal.dispatchEvent('mouseout', 0);\n this.internal.config.tooltip_onhide.call(this);\n };\n\n Chart.prototype.transform = function (type, targetIds) {\n var $$ = this.internal,\n options = ['pie', 'donut'].indexOf(type) >= 0 ? {\n withTransform: true\n } : null;\n $$.transformTo(targetIds, type, options);\n };\n\n ChartInternal.prototype.transformTo = function (targetIds, type, optionsForRedraw) {\n var $$ = this,\n withTransitionForAxis = !$$.hasArcType(),\n options = optionsForRedraw || {\n withTransitionForAxis: withTransitionForAxis\n };\n options.withTransitionForTransform = false;\n $$.transiting = false;\n $$.setTargetType(targetIds, type);\n $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n\n $$.updateAndRedraw(options);\n };\n\n Chart.prototype.x = function (x) {\n var $$ = this.internal;\n\n if (arguments.length) {\n $$.updateTargetX($$.data.targets, x);\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n }\n\n return $$.data.xs;\n };\n\n Chart.prototype.xs = function (xs) {\n var $$ = this.internal;\n\n if (arguments.length) {\n $$.updateTargetXs($$.data.targets, xs);\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n }\n\n return $$.data.xs;\n };\n\n Chart.prototype.zoom = function (domain) {\n var $$ = this.internal;\n\n if (domain) {\n if ($$.isTimeSeries()) {\n domain = domain.map(function (x) {\n return $$.parseDate(x);\n });\n }\n\n if ($$.config.subchart_show) {\n $$.brush.selectionAsValue(domain, true);\n } else {\n $$.updateXDomain(null, true, false, false, domain);\n $$.redraw({\n withY: $$.config.zoom_rescale,\n withSubchart: false\n });\n }\n\n $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n return domain;\n } else {\n return $$.x.domain();\n }\n };\n\n Chart.prototype.zoom.enable = function (enabled) {\n var $$ = this.internal;\n $$.config.zoom_enabled = enabled;\n $$.updateAndRedraw();\n };\n\n Chart.prototype.unzoom = function () {\n var $$ = this.internal;\n\n if ($$.config.subchart_show) {\n $$.brush.clear();\n } else {\n $$.updateXDomain(null, true, false, false, $$.subX.domain());\n $$.redraw({\n withY: $$.config.zoom_rescale,\n withSubchart: false\n });\n }\n };\n\n Chart.prototype.zoom.max = function (max) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n\n if (max === 0 || max) {\n config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n } else {\n return config.zoom_x_max;\n }\n };\n\n Chart.prototype.zoom.min = function (min) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n\n if (min === 0 || min) {\n config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n } else {\n return config.zoom_x_min;\n }\n };\n\n Chart.prototype.zoom.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.domain.max(range.max);\n }\n\n if (isDefined(range.min)) {\n this.domain.min(range.min);\n }\n } else {\n return {\n max: this.domain.max(),\n min: this.domain.min()\n };\n }\n };\n\n ChartInternal.prototype.initPie = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.pie = d3.pie().value(function (d) {\n return d.values.reduce(function (a, b) {\n return a + b.value;\n }, 0);\n });\n var orderFct = $$.getOrderFunction(); // we need to reverse the returned order if asc or desc to have the slice in expected order.\n\n if (orderFct && ($$.isOrderAsc() || $$.isOrderDesc())) {\n var defaultSort = orderFct;\n\n orderFct = function orderFct(t1, t2) {\n return defaultSort(t1, t2) * -1;\n };\n }\n\n $$.pie.sort(orderFct || null);\n };\n\n ChartInternal.prototype.updateRadius = function () {\n var $$ = this,\n config = $$.config,\n w = config.gauge_width || config.donut_width,\n gaugeArcWidth = $$.filterTargetsToShow($$.data.targets).length * $$.config.gauge_arcs_minWidth;\n $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2 * ($$.hasType('gauge') ? 0.85 : 1);\n $$.radius = $$.radiusExpanded * 0.95;\n $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n $$.gaugeArcWidth = w ? w : gaugeArcWidth <= $$.radius - $$.innerRadius ? $$.radius - $$.innerRadius : gaugeArcWidth <= $$.radius ? gaugeArcWidth : $$.radius;\n };\n\n ChartInternal.prototype.updateArc = function () {\n var $$ = this;\n $$.svgArc = $$.getSvgArc();\n $$.svgArcExpanded = $$.getSvgArcExpanded();\n $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n };\n\n ChartInternal.prototype.updateAngle = function (d) {\n var $$ = this,\n config = $$.config,\n found = false,\n index = 0,\n gMin,\n gMax,\n gTic,\n gValue;\n\n if (!config) {\n return null;\n }\n\n $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n if (!found && t.data.id === d.data.id) {\n found = true;\n d = t;\n d.index = index;\n }\n\n index++;\n });\n\n if (isNaN(d.startAngle)) {\n d.startAngle = 0;\n }\n\n if (isNaN(d.endAngle)) {\n d.endAngle = d.startAngle;\n }\n\n if ($$.isGaugeType(d.data)) {\n gMin = config.gauge_min;\n gMax = config.gauge_max;\n gTic = Math.PI * (config.gauge_fullCircle ? 2 : 1) / (gMax - gMin);\n gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : gMax - gMin;\n d.startAngle = config.gauge_startingAngle;\n d.endAngle = d.startAngle + gTic * gValue;\n }\n\n return found ? d : null;\n };\n\n ChartInternal.prototype.getSvgArc = function () {\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n arc = $$.d3.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index : $$.radius;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n }),\n newArc = function newArc(d, withoutUpdate) {\n var updated;\n\n if (withoutUpdate) {\n return arc(d);\n } // for interpolate\n\n\n updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n }; // TODO: extends all function\n\n\n newArc.centroid = arc.centroid;\n return newArc;\n };\n\n ChartInternal.prototype.getSvgArcExpanded = function (rate) {\n rate = rate || 1;\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n expandWidth = Math.min($$.radiusExpanded * rate - $$.radius, singleArcWidth * 0.8 - (1 - rate) * 100),\n arc = $$.d3.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index + expandWidth : $$.radiusExpanded * rate;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n });\n return function (d) {\n var updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.getArc = function (d, withoutUpdate, force) {\n return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n };\n\n ChartInternal.prototype.transformForArcLabel = function (d) {\n var $$ = this,\n config = $$.config,\n updated = $$.updateAngle(d),\n c,\n x,\n y,\n h,\n ratio,\n translate = \"\",\n hasGauge = $$.hasType('gauge');\n\n if (updated && !hasGauge) {\n c = this.svgArc.centroid(updated);\n x = isNaN(c[0]) ? 0 : c[0];\n y = isNaN(c[1]) ? 0 : c[1];\n h = Math.sqrt(x * x + y * y);\n\n if ($$.hasType('donut') && config.donut_label_ratio) {\n ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n } else if ($$.hasType('pie') && config.pie_label_ratio) {\n ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n } else {\n ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n }\n\n translate = \"translate(\" + x * ratio + ',' + y * ratio + \")\";\n } else if (updated && hasGauge && $$.filterTargetsToShow($$.data.targets).length > 1) {\n var y1 = Math.sin(updated.endAngle - Math.PI / 2);\n x = Math.cos(updated.endAngle - Math.PI / 2) * ($$.radiusExpanded + 25);\n y = y1 * ($$.radiusExpanded + 15 - Math.abs(y1 * 10)) + 3;\n translate = \"translate(\" + x + ',' + y + \")\";\n }\n\n return translate;\n };\n\n ChartInternal.prototype.getArcRatio = function (d) {\n var $$ = this,\n config = $$.config,\n whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n return d ? (d.endAngle - d.startAngle) / whole : null;\n };\n\n ChartInternal.prototype.convertToArcData = function (d) {\n return this.addName({\n id: d.data.id,\n value: d.value,\n ratio: this.getArcRatio(d),\n index: d.index\n });\n };\n\n ChartInternal.prototype.textForArcLabel = function (d) {\n var $$ = this,\n updated,\n value,\n ratio,\n id,\n format;\n\n if (!$$.shouldShowArcLabel()) {\n return \"\";\n }\n\n updated = $$.updateAngle(d);\n value = updated ? updated.value : null;\n ratio = $$.getArcRatio(updated);\n id = d.data.id;\n\n if (!$$.hasType('gauge') && !$$.meetsArcLabelThreshold(ratio)) {\n return \"\";\n }\n\n format = $$.getArcLabelFormat();\n return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n };\n\n ChartInternal.prototype.textForGaugeMinMax = function (value, isMax) {\n var $$ = this,\n format = $$.getGaugeLabelExtents();\n return format ? format(value, isMax) : value;\n };\n\n ChartInternal.prototype.expandArc = function (targetIds) {\n var $$ = this,\n interval; // MEMO: avoid to cancel transition\n\n if ($$.transiting) {\n interval = window.setInterval(function () {\n if (!$$.transiting) {\n window.clearInterval(interval);\n\n if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n $$.expandArc(targetIds);\n }\n }\n }, 10);\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n if (!$$.shouldExpand(d.data.id)) {\n return;\n }\n\n $$.d3.select(this).selectAll('path').transition().duration($$.expandDuration(d.data.id)).attr(\"d\", $$.svgArcExpanded).transition().duration($$.expandDuration(d.data.id) * 2).attr(\"d\", $$.svgArcExpandedSub).each(function (d) {\n if ($$.isDonutType(d.data)) ;\n });\n });\n };\n\n ChartInternal.prototype.unexpandArc = function (targetIds) {\n var $$ = this;\n\n if ($$.transiting) {\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path').transition().duration(function (d) {\n return $$.expandDuration(d.data.id);\n }).attr(\"d\", $$.svgArc);\n $$.svg.selectAll('.' + CLASS.arc);\n };\n\n ChartInternal.prototype.expandDuration = function (id) {\n var $$ = this,\n config = $$.config;\n\n if ($$.isDonutType(id)) {\n return config.donut_expand_duration;\n } else if ($$.isGaugeType(id)) {\n return config.gauge_expand_duration;\n } else if ($$.isPieType(id)) {\n return config.pie_expand_duration;\n } else {\n return 50;\n }\n };\n\n ChartInternal.prototype.shouldExpand = function (id) {\n var $$ = this,\n config = $$.config;\n return $$.isDonutType(id) && config.donut_expand || $$.isGaugeType(id) && config.gauge_expand || $$.isPieType(id) && config.pie_expand;\n };\n\n ChartInternal.prototype.shouldShowArcLabel = function () {\n var $$ = this,\n config = $$.config,\n shouldShow = true;\n\n if ($$.hasType('donut')) {\n shouldShow = config.donut_label_show;\n } else if ($$.hasType('pie')) {\n shouldShow = config.pie_label_show;\n } // when gauge, always true\n\n\n return shouldShow;\n };\n\n ChartInternal.prototype.meetsArcLabelThreshold = function (ratio) {\n var $$ = this,\n config = $$.config,\n threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n return ratio >= threshold;\n };\n\n ChartInternal.prototype.getArcLabelFormat = function () {\n var $$ = this,\n config = $$.config,\n format = config.pie_label_format;\n\n if ($$.hasType('gauge')) {\n format = config.gauge_label_format;\n } else if ($$.hasType('donut')) {\n format = config.donut_label_format;\n }\n\n return format;\n };\n\n ChartInternal.prototype.getGaugeLabelExtents = function () {\n var $$ = this,\n config = $$.config;\n return config.gauge_label_extents;\n };\n\n ChartInternal.prototype.getArcTitle = function () {\n var $$ = this;\n return $$.hasType('donut') ? $$.config.donut_title : \"\";\n };\n\n ChartInternal.prototype.updateTargetsForArc = function (targets) {\n var $$ = this,\n main = $$.main,\n mainPies,\n mainPieEnter,\n classChartArc = $$.classChartArc.bind($$),\n classArcs = $$.classArcs.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainPies = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc).data($$.pie(targets)).attr(\"class\", function (d) {\n return classChartArc(d) + classFocus(d.data);\n });\n mainPieEnter = mainPies.enter().append(\"g\").attr(\"class\", classChartArc);\n mainPieEnter.append('g').attr('class', classArcs);\n mainPieEnter.append(\"text\").attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\").style(\"opacity\", 0).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\"); // MEMO: can not keep same color..., but not bad to update color in redraw\n //mainPieUpdate.exit().remove();\n };\n\n ChartInternal.prototype.initArc = function () {\n var $$ = this;\n $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n $$.arcs.append('text').attr('class', CLASS.chartArcsTitle).style(\"text-anchor\", \"middle\").text($$.getArcTitle());\n };\n\n ChartInternal.prototype.redrawArc = function (duration, durationForExit, withTransform) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n main = $$.main,\n arcs,\n mainArc,\n arcLabelLines,\n mainArcLabelLine,\n hasGaugeType = $$.hasType('gauge');\n arcs = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc).data($$.arcData.bind($$));\n mainArc = arcs.enter().append('path').attr(\"class\", $$.classArc.bind($$)).style(\"fill\", function (d) {\n return $$.color(d.data);\n }).style(\"cursor\", function (d) {\n return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null;\n }).each(function (d) {\n if ($$.isGaugeType(d.data)) {\n d.startAngle = d.endAngle = config.gauge_startingAngle;\n }\n\n this._current = d;\n }).merge(arcs);\n\n if (hasGaugeType) {\n arcLabelLines = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arcLabelLine).data($$.arcData.bind($$));\n mainArcLabelLine = arcLabelLines.enter().append('rect').attr(\"class\", function (d) {\n return CLASS.arcLabelLine + ' ' + CLASS.target + ' ' + CLASS.target + '-' + d.data.id;\n }).merge(arcLabelLines);\n\n if ($$.filterTargetsToShow($$.data.targets).length === 1) {\n mainArcLabelLine.style(\"display\", \"none\");\n } else {\n mainArcLabelLine.style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data);\n }).style(\"display\", config.gauge_labelLine_show ? \"\" : \"none\").each(function (d) {\n var lineLength = 0,\n lineThickness = 2,\n x = 0,\n y = 0,\n transform = \"\";\n\n if ($$.hiddenTargetIds.indexOf(d.data.id) < 0) {\n var updated = $$.updateAngle(d),\n innerLineLength = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length * (updated.index + 1),\n lineAngle = updated.endAngle - Math.PI / 2,\n arcInnerRadius = $$.radius - innerLineLength,\n linePositioningAngle = lineAngle - (arcInnerRadius === 0 ? 0 : 1 / arcInnerRadius);\n lineLength = $$.radiusExpanded - $$.radius + innerLineLength;\n x = Math.cos(linePositioningAngle) * arcInnerRadius;\n y = Math.sin(linePositioningAngle) * arcInnerRadius;\n transform = \"rotate(\" + lineAngle * 180 / Math.PI + \", \" + x + \", \" + y + \")\";\n }\n\n d3.select(this).attr('x', x).attr('y', y).attr('width', lineLength).attr('height', lineThickness).attr('transform', transform).style(\"stroke-dasharray\", \"0, \" + (lineLength + lineThickness) + \", 0\");\n });\n }\n }\n\n mainArc.attr(\"transform\", function (d) {\n return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\";\n }).on('mouseover', config.interaction_enabled ? function (d) {\n var updated, arcData;\n\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n\n updated = $$.updateAngle(d);\n\n if (updated) {\n arcData = $$.convertToArcData(updated); // transitions\n\n $$.expandArc(updated.data.id);\n $$.api.focus(updated.data.id);\n $$.toggleFocusLegend(updated.data.id, true);\n $$.config.data_onmouseover(arcData, this);\n }\n } : null).on('mousemove', config.interaction_enabled ? function (d) {\n var updated = $$.updateAngle(d),\n arcData,\n selectedData;\n\n if (updated) {\n arcData = $$.convertToArcData(updated), selectedData = [arcData];\n $$.showTooltip(selectedData, this);\n }\n } : null).on('mouseout', config.interaction_enabled ? function (d) {\n var updated, arcData;\n\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n\n updated = $$.updateAngle(d);\n\n if (updated) {\n arcData = $$.convertToArcData(updated); // transitions\n\n $$.unexpandArc(updated.data.id);\n $$.api.revert();\n $$.revertLegend();\n $$.hideTooltip();\n $$.config.data_onmouseout(arcData, this);\n }\n } : null).on('click', config.interaction_enabled ? function (d, i) {\n var updated = $$.updateAngle(d),\n arcData;\n\n if (updated) {\n arcData = $$.convertToArcData(updated);\n\n if ($$.toggleShape) {\n $$.toggleShape(this, arcData, i);\n }\n\n $$.config.data_onclick.call($$.api, arcData, this);\n }\n } : null).each(function () {\n $$.transiting = true;\n }).transition().duration(duration).attrTween(\"d\", function (d) {\n var updated = $$.updateAngle(d),\n interpolate;\n\n if (!updated) {\n return function () {\n return \"M 0 0\";\n };\n } // if (this._current === d) {\n // this._current = {\n // startAngle: Math.PI*2,\n // endAngle: Math.PI*2,\n // };\n // }\n\n\n if (isNaN(this._current.startAngle)) {\n this._current.startAngle = 0;\n }\n\n if (isNaN(this._current.endAngle)) {\n this._current.endAngle = this._current.startAngle;\n }\n\n interpolate = d3.interpolate(this._current, updated);\n this._current = interpolate(0);\n return function (t) {\n var interpolated = interpolate(t);\n interpolated.data = d.data; // data.id will be updated by interporator\n\n return $$.getArc(interpolated, true);\n };\n }).attr(\"transform\", withTransform ? \"scale(1)\" : \"\").style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n }) // Where gauge reading color would receive customization.\n .call($$.endall, function () {\n $$.transiting = false;\n });\n arcs.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n main.selectAll('.' + CLASS.chartArc).select('text').style(\"opacity\", 0).attr('class', function (d) {\n return $$.isGaugeType(d.data) ? CLASS.gaugeValue : '';\n }).text($$.textForArcLabel.bind($$)).attr(\"transform\", $$.transformForArcLabel.bind($$)).style('font-size', function (d) {\n return $$.isGaugeType(d.data) && $$.filterTargetsToShow($$.data.targets).length === 1 ? Math.round($$.radius / 5) + 'px' : '';\n }).transition().duration(duration).style(\"opacity\", function (d) {\n return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0;\n });\n main.select('.' + CLASS.chartArcsTitle).style(\"opacity\", $$.hasType('donut') || hasGaugeType ? 1 : 0);\n\n if (hasGaugeType) {\n var index = 0;\n var backgroundArc = $$.arcs.select('g.' + CLASS.chartArcsBackground).selectAll('path.' + CLASS.chartArcsBackground).data($$.data.targets);\n backgroundArc.enter().append(\"path\").attr(\"class\", function (d, i) {\n return CLASS.chartArcsBackground + ' ' + CLASS.chartArcsBackground + '-' + i;\n }).merge(backgroundArc).attr(\"d\", function (d1) {\n if ($$.hiddenTargetIds.indexOf(d1.id) >= 0) {\n return \"M 0 0\";\n }\n\n var d = {\n data: [{\n value: config.gauge_max\n }],\n startAngle: config.gauge_startingAngle,\n endAngle: -1 * config.gauge_startingAngle * (config.gauge_fullCircle ? Math.PI : 1),\n index: index++\n };\n return $$.getArc(d, true, true);\n });\n backgroundArc.exit().remove();\n $$.arcs.select('.' + CLASS.chartArcsGaugeUnit).attr(\"dy\", \".75em\").text(config.gauge_label_show ? config.gauge_units : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMin).attr(\"dx\", -1 * ($$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_min, false) : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMax).attr(\"dx\", $$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_max, true) : '');\n }\n };\n\n ChartInternal.prototype.initGauge = function () {\n var arcs = this.arcs;\n\n if (this.hasType('gauge')) {\n arcs.append('g').attr(\"class\", CLASS.chartArcsBackground);\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeUnit).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMin).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMax).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n }\n };\n\n ChartInternal.prototype.getGaugeLabelHeight = function () {\n return this.config.gauge_label_show ? 20 : 0;\n };\n\n ChartInternal.prototype.hasCaches = function (ids) {\n for (var i = 0; i < ids.length; i++) {\n if (!(ids[i] in this.cache)) {\n return false;\n }\n }\n\n return true;\n };\n\n ChartInternal.prototype.addCache = function (id, target) {\n this.cache[id] = this.cloneTarget(target);\n };\n\n ChartInternal.prototype.getCaches = function (ids) {\n var targets = [],\n i;\n\n for (i = 0; i < ids.length; i++) {\n if (ids[i] in this.cache) {\n targets.push(this.cloneTarget(this.cache[ids[i]]));\n }\n }\n\n return targets;\n };\n\n ChartInternal.prototype.categoryName = function (i) {\n var config = this.config;\n return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n };\n\n ChartInternal.prototype.generateTargetClass = function (targetId) {\n return targetId || targetId === 0 ? ('-' + targetId).replace(/\\s/g, '-') : '';\n };\n\n ChartInternal.prototype.generateClass = function (prefix, targetId) {\n return \" \" + prefix + \" \" + prefix + this.generateTargetClass(targetId);\n };\n\n ChartInternal.prototype.classText = function (d) {\n return this.generateClass(CLASS.text, d.index);\n };\n\n ChartInternal.prototype.classTexts = function (d) {\n return this.generateClass(CLASS.texts, d.id);\n };\n\n ChartInternal.prototype.classShape = function (d) {\n return this.generateClass(CLASS.shape, d.index);\n };\n\n ChartInternal.prototype.classShapes = function (d) {\n return this.generateClass(CLASS.shapes, d.id);\n };\n\n ChartInternal.prototype.classLine = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n };\n\n ChartInternal.prototype.classLines = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n };\n\n ChartInternal.prototype.classCircle = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n };\n\n ChartInternal.prototype.classCircles = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n };\n\n ChartInternal.prototype.classBar = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n };\n\n ChartInternal.prototype.classBars = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n };\n\n ChartInternal.prototype.classArc = function (d) {\n return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n };\n\n ChartInternal.prototype.classArcs = function (d) {\n return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n };\n\n ChartInternal.prototype.classArea = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n };\n\n ChartInternal.prototype.classAreas = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n };\n\n ChartInternal.prototype.classRegion = function (d, i) {\n return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n };\n\n ChartInternal.prototype.classEvent = function (d) {\n return this.generateClass(CLASS.eventRect, d.index);\n };\n\n ChartInternal.prototype.classTarget = function (id) {\n var $$ = this;\n var additionalClassSuffix = $$.config.data_classes[id],\n additionalClass = '';\n\n if (additionalClassSuffix) {\n additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n }\n\n return $$.generateClass(CLASS.target, id) + additionalClass;\n };\n\n ChartInternal.prototype.classFocus = function (d) {\n return this.classFocused(d) + this.classDefocused(d);\n };\n\n ChartInternal.prototype.classFocused = function (d) {\n return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n };\n\n ChartInternal.prototype.classDefocused = function (d) {\n return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n };\n\n ChartInternal.prototype.classChartText = function (d) {\n return CLASS.chartText + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartLine = function (d) {\n return CLASS.chartLine + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartBar = function (d) {\n return CLASS.chartBar + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartArc = function (d) {\n return CLASS.chartArc + this.classTarget(d.data.id);\n };\n\n ChartInternal.prototype.getTargetSelectorSuffix = function (targetId) {\n return this.generateTargetClass(targetId).replace(/([?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\])/g, '\\\\$1');\n };\n\n ChartInternal.prototype.selectorTarget = function (id, prefix) {\n return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n };\n\n ChartInternal.prototype.selectorTargets = function (ids, prefix) {\n var $$ = this;\n ids = ids || [];\n return ids.length ? ids.map(function (id) {\n return $$.selectorTarget(id, prefix);\n }) : null;\n };\n\n ChartInternal.prototype.selectorLegend = function (id) {\n return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n };\n\n ChartInternal.prototype.selectorLegends = function (ids) {\n var $$ = this;\n return ids && ids.length ? ids.map(function (id) {\n return $$.selectorLegend(id);\n }) : null;\n };\n\n ChartInternal.prototype.getClipPath = function (id) {\n var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n };\n\n ChartInternal.prototype.appendClip = function (parent, id) {\n return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n };\n\n ChartInternal.prototype.getAxisClipX = function (forHorizontal) {\n // axis line width + padding for left\n var left = Math.max(30, this.margin.left);\n return forHorizontal ? -(1 + left) : -(left - 1);\n };\n\n ChartInternal.prototype.getAxisClipY = function (forHorizontal) {\n return forHorizontal ? -20 : -this.margin.top;\n };\n\n ChartInternal.prototype.getXAxisClipX = function () {\n var $$ = this;\n return $$.getAxisClipX(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getXAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipX = function () {\n var $$ = this;\n return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getAxisClipWidth = function (forHorizontal) {\n var $$ = this,\n left = Math.max(30, $$.margin.left),\n right = Math.max(30, $$.margin.right); // width + axis line width + padding for left/right\n\n return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n };\n\n ChartInternal.prototype.getAxisClipHeight = function (forHorizontal) {\n // less than 20 is not enough to show the axis label 'outer' without legend\n return (forHorizontal ? this.margin.bottom : this.margin.top + this.height) + 20;\n };\n\n ChartInternal.prototype.getXAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getXAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n };\n\n ChartInternal.prototype.getYAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.generateColor = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n colors = config.data_colors,\n pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.schemeCategory10,\n callback = config.data_color,\n ids = [];\n return function (d) {\n var id = d.id || d.data && d.data.id || d,\n color; // if callback function is provided\n\n if (colors[id] instanceof Function) {\n color = colors[id](d);\n } // if specified, choose that color\n else if (colors[id]) {\n color = colors[id];\n } // if not specified, choose from pattern\n else {\n if (ids.indexOf(id) < 0) {\n ids.push(id);\n }\n\n color = pattern[ids.indexOf(id) % pattern.length];\n colors[id] = color;\n }\n\n return callback instanceof Function ? callback(color, d) : color;\n };\n };\n\n ChartInternal.prototype.generateLevelColor = function () {\n var $$ = this,\n config = $$.config,\n colors = config.color_pattern,\n threshold = config.color_threshold,\n asValue = threshold.unit === 'value',\n values = threshold.values && threshold.values.length ? threshold.values : [],\n max = threshold.max || 100;\n return notEmpty(threshold) && notEmpty(colors) ? function (value) {\n var i,\n v,\n color = colors[colors.length - 1];\n\n for (i = 0; i < values.length; i++) {\n v = asValue ? value : value * 100 / max;\n\n if (v < values[i]) {\n color = colors[i];\n break;\n }\n }\n\n return color;\n } : null;\n };\n\n ChartInternal.prototype.getDefaultConfig = function () {\n var config = {\n bindto: '#chart',\n svg_classname: undefined,\n size_width: undefined,\n size_height: undefined,\n padding_left: undefined,\n padding_right: undefined,\n padding_top: undefined,\n padding_bottom: undefined,\n resize_auto: true,\n zoom_enabled: false,\n zoom_initialRange: undefined,\n zoom_type: 'scroll',\n zoom_disableDefaultBehavior: false,\n zoom_privileged: false,\n zoom_rescale: false,\n zoom_onzoom: function zoom_onzoom() {},\n zoom_onzoomstart: function zoom_onzoomstart() {},\n zoom_onzoomend: function zoom_onzoomend() {},\n zoom_x_min: undefined,\n zoom_x_max: undefined,\n interaction_brighten: true,\n interaction_enabled: true,\n onmouseover: function onmouseover() {},\n onmouseout: function onmouseout() {},\n onresize: function onresize() {},\n onresized: function onresized() {},\n oninit: function oninit() {},\n onrendered: function onrendered() {},\n transition_duration: 350,\n data_epochs: 'epochs',\n data_x: undefined,\n data_xs: {},\n data_xFormat: '%Y-%m-%d',\n data_xLocaltime: true,\n data_xSort: true,\n data_idConverter: function data_idConverter(id) {\n return id;\n },\n data_names: {},\n data_classes: {},\n data_groups: [],\n data_axes: {},\n data_type: undefined,\n data_types: {},\n data_labels: {},\n data_order: 'desc',\n data_regions: {},\n data_color: undefined,\n data_colors: {},\n data_hide: false,\n data_filter: undefined,\n data_selection_enabled: false,\n data_selection_grouped: false,\n data_selection_isselectable: function data_selection_isselectable() {\n return true;\n },\n data_selection_multiple: true,\n data_selection_draggable: false,\n data_onclick: function data_onclick() {},\n data_onmouseover: function data_onmouseover() {},\n data_onmouseout: function data_onmouseout() {},\n data_onselected: function data_onselected() {},\n data_onunselected: function data_onunselected() {},\n data_url: undefined,\n data_headers: undefined,\n data_json: undefined,\n data_rows: undefined,\n data_columns: undefined,\n data_mimeType: undefined,\n data_keys: undefined,\n // configuration for no plot-able data supplied.\n data_empty_label_text: \"\",\n // subchart\n subchart_show: false,\n subchart_size_height: 60,\n subchart_axis_x_show: true,\n subchart_onbrush: function subchart_onbrush() {},\n // color\n color_pattern: [],\n color_threshold: {},\n // legend\n legend_show: true,\n legend_hide: false,\n legend_position: 'bottom',\n legend_inset_anchor: 'top-left',\n legend_inset_x: 10,\n legend_inset_y: 0,\n legend_inset_step: undefined,\n legend_item_onclick: undefined,\n legend_item_onmouseover: undefined,\n legend_item_onmouseout: undefined,\n legend_equally: false,\n legend_padding: 0,\n legend_item_tile_width: 10,\n legend_item_tile_height: 10,\n // axis\n axis_rotated: false,\n axis_x_show: true,\n axis_x_type: 'indexed',\n axis_x_localtime: true,\n axis_x_categories: [],\n axis_x_tick_centered: false,\n axis_x_tick_format: undefined,\n axis_x_tick_culling: {},\n axis_x_tick_culling_max: 10,\n axis_x_tick_count: undefined,\n axis_x_tick_fit: true,\n axis_x_tick_values: null,\n axis_x_tick_rotate: 0,\n axis_x_tick_outer: true,\n axis_x_tick_multiline: true,\n axis_x_tick_multilineMax: 0,\n axis_x_tick_width: null,\n axis_x_max: undefined,\n axis_x_min: undefined,\n axis_x_padding: {},\n axis_x_height: undefined,\n axis_x_selection: undefined,\n axis_x_label: {},\n axis_x_inner: undefined,\n axis_y_show: true,\n axis_y_type: undefined,\n axis_y_max: undefined,\n axis_y_min: undefined,\n axis_y_inverted: false,\n axis_y_center: undefined,\n axis_y_inner: undefined,\n axis_y_label: {},\n axis_y_tick_format: undefined,\n axis_y_tick_outer: true,\n axis_y_tick_values: null,\n axis_y_tick_rotate: 0,\n axis_y_tick_count: undefined,\n axis_y_tick_time_type: undefined,\n axis_y_tick_time_interval: undefined,\n axis_y_padding: {},\n axis_y_default: undefined,\n axis_y2_show: false,\n axis_y2_max: undefined,\n axis_y2_min: undefined,\n axis_y2_inverted: false,\n axis_y2_center: undefined,\n axis_y2_inner: undefined,\n axis_y2_label: {},\n axis_y2_tick_format: undefined,\n axis_y2_tick_outer: true,\n axis_y2_tick_values: null,\n axis_y2_tick_count: undefined,\n axis_y2_padding: {},\n axis_y2_default: undefined,\n // grid\n grid_x_show: false,\n grid_x_type: 'tick',\n grid_x_lines: [],\n grid_y_show: false,\n // not used\n // grid_y_type: 'tick',\n grid_y_lines: [],\n grid_y_ticks: 10,\n grid_focus_show: true,\n grid_lines_front: true,\n // point - point of each data\n point_show: true,\n point_r: 2.5,\n point_sensitivity: 10,\n point_focus_expand_enabled: true,\n point_focus_expand_r: undefined,\n point_select_r: undefined,\n // line\n line_connectNull: false,\n line_step_type: 'step',\n // bar\n bar_width: undefined,\n bar_width_ratio: 0.6,\n bar_width_max: undefined,\n bar_zerobased: true,\n bar_space: 0,\n // area\n area_zerobased: true,\n area_above: false,\n // pie\n pie_label_show: true,\n pie_label_format: undefined,\n pie_label_threshold: 0.05,\n pie_label_ratio: undefined,\n pie_expand: {},\n pie_expand_duration: 50,\n // gauge\n gauge_fullCircle: false,\n gauge_label_show: true,\n gauge_labelLine_show: true,\n gauge_label_format: undefined,\n gauge_min: 0,\n gauge_max: 100,\n gauge_startingAngle: -1 * Math.PI / 2,\n gauge_label_extents: undefined,\n gauge_units: undefined,\n gauge_width: undefined,\n gauge_arcs_minWidth: 5,\n gauge_expand: {},\n gauge_expand_duration: 50,\n // donut\n donut_label_show: true,\n donut_label_format: undefined,\n donut_label_threshold: 0.05,\n donut_label_ratio: undefined,\n donut_width: undefined,\n donut_title: \"\",\n donut_expand: {},\n donut_expand_duration: 50,\n // spline\n spline_interpolation_type: 'cardinal',\n // stanford\n stanford_lines: [],\n stanford_regions: [],\n stanford_texts: [],\n stanford_scaleMin: undefined,\n stanford_scaleMax: undefined,\n stanford_scaleWidth: undefined,\n stanford_scaleFormat: undefined,\n stanford_scaleValues: undefined,\n stanford_colors: undefined,\n stanford_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n // region - region to change style\n regions: [],\n // tooltip - show when mouseover on each data\n tooltip_show: true,\n tooltip_grouped: true,\n tooltip_order: undefined,\n tooltip_format_title: undefined,\n tooltip_format_name: undefined,\n tooltip_format_value: undefined,\n tooltip_horizontal: undefined,\n tooltip_position: undefined,\n tooltip_contents: function tooltip_contents(d, defaultTitleFormat, defaultValueFormat, color) {\n return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n },\n tooltip_init_show: false,\n tooltip_init_x: 0,\n tooltip_init_position: {\n top: '0px',\n left: '50px'\n },\n tooltip_onshow: function tooltip_onshow() {},\n tooltip_onhide: function tooltip_onhide() {},\n // title\n title_text: undefined,\n title_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n title_position: 'top-center'\n };\n Object.keys(this.additionalConfig).forEach(function (key) {\n config[key] = this.additionalConfig[key];\n }, this);\n return config;\n };\n\n ChartInternal.prototype.additionalConfig = {};\n\n ChartInternal.prototype.loadConfig = function (config) {\n var this_config = this.config,\n target,\n keys,\n read;\n\n function find() {\n var key = keys.shift(); // console.log(\"key =>\", key, \", target =>\", target);\n\n if (key && target && _typeof(target) === 'object' && key in target) {\n target = target[key];\n return find();\n } else if (!key) {\n return target;\n } else {\n return undefined;\n }\n }\n\n Object.keys(this_config).forEach(function (key) {\n target = config;\n keys = key.split('_');\n read = find(); // console.log(\"CONFIG : \", key, read);\n\n if (isDefined(read)) {\n this_config[key] = read;\n }\n });\n };\n\n ChartInternal.prototype.convertUrlToData = function (url, mimeType, headers, keys, done) {\n var $$ = this,\n type = mimeType ? mimeType : 'csv',\n f,\n converter;\n\n if (type === 'json') {\n f = $$.d3.json;\n converter = $$.convertJsonToData;\n } else if (type === 'tsv') {\n f = $$.d3.tsv;\n converter = $$.convertXsvToData;\n } else {\n f = $$.d3.csv;\n converter = $$.convertXsvToData;\n }\n\n f(url, headers).then(function (data) {\n done.call($$, converter.call($$, data, keys));\n }).catch(function (error) {\n throw error;\n });\n };\n\n ChartInternal.prototype.convertXsvToData = function (xsv) {\n var keys = xsv.columns,\n rows = xsv;\n\n if (rows.length === 0) {\n return {\n keys: keys,\n rows: [keys.reduce(function (row, key) {\n return Object.assign(row, _defineProperty({}, key, null));\n }, {})]\n };\n } else {\n // [].concat() is to convert result into a plain array otherwise\n // test is not happy because rows have properties.\n return {\n keys: keys,\n rows: [].concat(xsv)\n };\n }\n };\n\n ChartInternal.prototype.convertJsonToData = function (json, keys) {\n var $$ = this,\n new_rows = [],\n targetKeys,\n data;\n\n if (keys) {\n // when keys specified, json would be an array that includes objects\n if (keys.x) {\n targetKeys = keys.value.concat(keys.x);\n $$.config.data_x = keys.x;\n } else {\n targetKeys = keys.value;\n }\n\n new_rows.push(targetKeys);\n json.forEach(function (o) {\n var new_row = [];\n targetKeys.forEach(function (key) {\n // convert undefined to null because undefined data will be removed in convertDataToTargets()\n var v = $$.findValueInJson(o, key);\n\n if (isUndefined(v)) {\n v = null;\n }\n\n new_row.push(v);\n });\n new_rows.push(new_row);\n });\n data = $$.convertRowsToData(new_rows);\n } else {\n Object.keys(json).forEach(function (key) {\n new_rows.push([key].concat(json[key]));\n });\n data = $$.convertColumnsToData(new_rows);\n }\n\n return data;\n };\n\n ChartInternal.prototype.findValueInJson = function (object, path) {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n\n path = path.replace(/^\\./, ''); // strip a leading dot\n\n var pathArray = path.split('.');\n\n for (var i = 0; i < pathArray.length; ++i) {\n var k = pathArray[i];\n\n if (k in object) {\n object = object[k];\n } else {\n return;\n }\n }\n\n return object;\n };\n /**\n * Converts the rows to normalized data.\n * @param {any[][]} rows The row data\n * @return {Object}\n */\n\n\n ChartInternal.prototype.convertRowsToData = function (rows) {\n var newRows = [];\n var keys = rows[0];\n\n for (var i = 1; i < rows.length; i++) {\n var newRow = {};\n\n for (var j = 0; j < rows[i].length; j++) {\n if (isUndefined(rows[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n\n newRow[keys[j]] = rows[i][j];\n }\n\n newRows.push(newRow);\n }\n\n return {\n keys: keys,\n rows: newRows\n };\n };\n /**\n * Converts the columns to normalized data.\n * @param {any[][]} columns The column data\n * @return {Object}\n */\n\n\n ChartInternal.prototype.convertColumnsToData = function (columns) {\n var newRows = [];\n var keys = [];\n\n for (var i = 0; i < columns.length; i++) {\n var key = columns[i][0];\n\n for (var j = 1; j < columns[i].length; j++) {\n if (isUndefined(newRows[j - 1])) {\n newRows[j - 1] = {};\n }\n\n if (isUndefined(columns[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n\n newRows[j - 1][key] = columns[i][j];\n }\n\n keys.push(key);\n }\n\n return {\n keys: keys,\n rows: newRows\n };\n };\n /**\n * Converts the data format into the target format.\n * @param {!Object} data\n * @param {!Array} data.keys Ordered list of target IDs.\n * @param {!Array} data.rows Rows of data to convert.\n * @param {boolean} appendXs True to append to $$.data.xs, False to replace.\n * @return {!Array}\n */\n\n\n ChartInternal.prototype.convertDataToTargets = function (data, appendXs) {\n var $$ = this,\n config = $$.config,\n targets,\n ids,\n xs,\n keys,\n epochs; // handles format where keys are not orderly provided\n\n if (isArray(data)) {\n keys = Object.keys(data[0]);\n } else {\n keys = data.keys;\n data = data.rows;\n }\n\n xs = keys.filter($$.isX, $$);\n\n if (!$$.isStanfordGraphType()) {\n ids = keys.filter($$.isNotX, $$);\n } else {\n epochs = keys.filter($$.isEpochs, $$);\n ids = keys.filter($$.isNotXAndNotEpochs, $$);\n\n if (xs.length !== 1 || epochs.length !== 1 || ids.length !== 1) {\n throw new Error('You must define the \\'x\\' key name and the \\'epochs\\' for Stanford Diagrams');\n }\n } // save x for update data by load when custom x and c3.x API\n\n\n ids.forEach(function (id) {\n var xKey = $$.getXKey(id);\n\n if ($$.isCustomX() || $$.isTimeSeries()) {\n // if included in input data\n if (xs.indexOf(xKey) >= 0) {\n $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(data.map(function (d) {\n return d[xKey];\n }).filter(isValue).map(function (rawX, i) {\n return $$.generateTargetX(rawX, id, i);\n }));\n } // if not included in input data, find from preloaded data of other id's x\n else if (config.data_x) {\n $$.data.xs[id] = $$.getOtherTargetXs();\n } // if not included in input data, find from preloaded data\n else if (notEmpty(config.data_xs)) {\n $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n } // MEMO: if no x included, use same x of current will be used\n\n } else {\n $$.data.xs[id] = data.map(function (d, i) {\n return i;\n });\n }\n }); // check x is defined\n\n ids.forEach(function (id) {\n if (!$$.data.xs[id]) {\n throw new Error('x is not defined for id = \"' + id + '\".');\n }\n }); // convert to target\n\n targets = ids.map(function (id, index) {\n var convertedId = config.data_idConverter(id);\n return {\n id: convertedId,\n id_org: id,\n values: data.map(function (d, i) {\n var xKey = $$.getXKey(id),\n rawX = d[xKey],\n value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null,\n x,\n returnData; // use x as categories if custom x and categorized\n\n if ($$.isCustomX() && $$.isCategorized() && !isUndefined(rawX)) {\n if (index === 0 && i === 0) {\n config.axis_x_categories = [];\n }\n\n x = config.axis_x_categories.indexOf(rawX);\n\n if (x === -1) {\n x = config.axis_x_categories.length;\n config.axis_x_categories.push(rawX);\n }\n } else {\n x = $$.generateTargetX(rawX, id, i);\n } // mark as x = undefined if value is undefined and filter to remove after mapped\n\n\n if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n x = undefined;\n }\n\n returnData = {\n x: x,\n value: value,\n id: convertedId\n };\n\n if ($$.isStanfordGraphType()) {\n returnData.epochs = d[epochs];\n }\n\n return returnData;\n }).filter(function (v) {\n return isDefined(v.x);\n })\n };\n }); // finish targets\n\n targets.forEach(function (t) {\n var i; // sort values by its x\n\n if (config.data_xSort) {\n t.values = t.values.sort(function (v1, v2) {\n var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n return x1 - x2;\n });\n } // indexing each value\n\n\n i = 0;\n t.values.forEach(function (v) {\n v.index = i++;\n }); // this needs to be sorted because its index and value.index is identical\n\n $$.data.xs[t.id].sort(function (v1, v2) {\n return v1 - v2;\n });\n }); // cache information about values\n\n $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets); // set target types\n\n if (config.data_type) {\n $$.setTargetType($$.mapToIds(targets).filter(function (id) {\n return !(id in config.data_types);\n }), config.data_type);\n } // cache as original id keyed\n\n\n targets.forEach(function (d) {\n $$.addCache(d.id_org, d);\n });\n return targets;\n };\n\n ChartInternal.prototype.isEpochs = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_epochs && key === config.data_epochs;\n };\n\n ChartInternal.prototype.isX = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_x && key === config.data_x || notEmpty(config.data_xs) && hasValue(config.data_xs, key);\n };\n\n ChartInternal.prototype.isNotX = function (key) {\n return !this.isX(key);\n };\n\n ChartInternal.prototype.isNotXAndNotEpochs = function (key) {\n return !this.isX(key) && !this.isEpochs(key);\n };\n\n ChartInternal.prototype.getXKey = function (id) {\n var $$ = this,\n config = $$.config;\n return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n };\n\n ChartInternal.prototype.getXValuesOfXKey = function (key, targets) {\n var $$ = this,\n xValues,\n ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n ids.forEach(function (id) {\n if ($$.getXKey(id) === key) {\n xValues = $$.data.xs[id];\n }\n });\n return xValues;\n };\n\n ChartInternal.prototype.getXValue = function (id, i) {\n var $$ = this;\n return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n };\n\n ChartInternal.prototype.getOtherTargetXs = function () {\n var $$ = this,\n idsForX = Object.keys($$.data.xs);\n return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n };\n\n ChartInternal.prototype.getOtherTargetX = function (index) {\n var xs = this.getOtherTargetXs();\n return xs && index < xs.length ? xs[index] : null;\n };\n\n ChartInternal.prototype.addXs = function (xs) {\n var $$ = this;\n Object.keys(xs).forEach(function (id) {\n $$.config.data_xs[id] = xs[id];\n });\n };\n\n ChartInternal.prototype.addName = function (data) {\n var $$ = this,\n name;\n\n if (data) {\n name = $$.config.data_names[data.id];\n data.name = name !== undefined ? name : data.id;\n }\n\n return data;\n };\n\n ChartInternal.prototype.getValueOnIndex = function (values, index) {\n var valueOnIndex = values.filter(function (v) {\n return v.index === index;\n });\n return valueOnIndex.length ? valueOnIndex[0] : null;\n };\n\n ChartInternal.prototype.updateTargetX = function (targets, x) {\n var $$ = this;\n targets.forEach(function (t) {\n t.values.forEach(function (v, i) {\n v.x = $$.generateTargetX(x[i], t.id, i);\n });\n $$.data.xs[t.id] = x;\n });\n };\n\n ChartInternal.prototype.updateTargetXs = function (targets, xs) {\n var $$ = this;\n targets.forEach(function (t) {\n if (xs[t.id]) {\n $$.updateTargetX([t], xs[t.id]);\n }\n });\n };\n\n ChartInternal.prototype.generateTargetX = function (rawX, id, index) {\n var $$ = this,\n x;\n\n if ($$.isTimeSeries()) {\n x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n } else if ($$.isCustomX() && !$$.isCategorized()) {\n x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n } else {\n x = index;\n }\n\n return x;\n };\n\n ChartInternal.prototype.cloneTarget = function (target) {\n return {\n id: target.id,\n id_org: target.id_org,\n values: target.values.map(function (d) {\n return {\n x: d.x,\n value: d.value,\n id: d.id\n };\n })\n };\n };\n\n ChartInternal.prototype.getMaxDataCount = function () {\n var $$ = this;\n return $$.d3.max($$.data.targets, function (t) {\n return t.values.length;\n });\n };\n\n ChartInternal.prototype.mapToIds = function (targets) {\n return targets.map(function (d) {\n return d.id;\n });\n };\n\n ChartInternal.prototype.mapToTargetIds = function (ids) {\n var $$ = this;\n return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n };\n\n ChartInternal.prototype.hasTarget = function (targets, id) {\n var ids = this.mapToIds(targets),\n i;\n\n for (i = 0; i < ids.length; i++) {\n if (ids[i] === id) {\n return true;\n }\n }\n\n return false;\n };\n\n ChartInternal.prototype.isTargetToShow = function (targetId) {\n return this.hiddenTargetIds.indexOf(targetId) < 0;\n };\n\n ChartInternal.prototype.isLegendToShow = function (targetId) {\n return this.hiddenLegendIds.indexOf(targetId) < 0;\n };\n\n ChartInternal.prototype.filterTargetsToShow = function (targets) {\n var $$ = this;\n return targets.filter(function (t) {\n return $$.isTargetToShow(t.id);\n });\n };\n\n ChartInternal.prototype.mapTargetsToUniqueXs = function (targets) {\n var $$ = this;\n var xs = $$.d3.set($$.d3.merge(targets.map(function (t) {\n return t.values.map(function (v) {\n return +v.x;\n });\n }))).values();\n xs = $$.isTimeSeries() ? xs.map(function (x) {\n return new Date(+x);\n }) : xs.map(function (x) {\n return +x;\n });\n return xs.sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n });\n };\n\n ChartInternal.prototype.addHiddenTargetIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenTargetIds.indexOf(targetIds[i]) < 0) {\n this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds[i]);\n }\n }\n };\n\n ChartInternal.prototype.removeHiddenTargetIds = function (targetIds) {\n this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n ChartInternal.prototype.addHiddenLegendIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenLegendIds.indexOf(targetIds[i]) < 0) {\n this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds[i]);\n }\n }\n };\n\n ChartInternal.prototype.removeHiddenLegendIds = function (targetIds) {\n this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n ChartInternal.prototype.getValuesAsIdKeyed = function (targets) {\n var ys = {};\n targets.forEach(function (t) {\n ys[t.id] = [];\n t.values.forEach(function (v) {\n ys[t.id].push(v.value);\n });\n });\n return ys;\n };\n\n ChartInternal.prototype.checkValueInTargets = function (targets, checker) {\n var ids = Object.keys(targets),\n i,\n j,\n values;\n\n for (i = 0; i < ids.length; i++) {\n values = targets[ids[i]].values;\n\n for (j = 0; j < values.length; j++) {\n if (checker(values[j].value)) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n ChartInternal.prototype.hasNegativeValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v < 0;\n });\n };\n\n ChartInternal.prototype.hasPositiveValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v > 0;\n });\n };\n\n ChartInternal.prototype.isOrderDesc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'desc';\n };\n\n ChartInternal.prototype.isOrderAsc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'asc';\n };\n\n ChartInternal.prototype.getOrderFunction = function () {\n var $$ = this,\n config = $$.config,\n orderAsc = $$.isOrderAsc(),\n orderDesc = $$.isOrderDesc();\n\n if (orderAsc || orderDesc) {\n var reducer = function reducer(p, c) {\n return p + Math.abs(c.value);\n };\n\n return function (t1, t2) {\n var t1Sum = t1.values.reduce(reducer, 0),\n t2Sum = t2.values.reduce(reducer, 0);\n return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\n };\n } else if (isFunction(config.data_order)) {\n return config.data_order;\n } else if (isArray(config.data_order)) {\n var order = config.data_order;\n return function (t1, t2) {\n return order.indexOf(t1.id) - order.indexOf(t2.id);\n };\n }\n };\n\n ChartInternal.prototype.orderTargets = function (targets) {\n var fct = this.getOrderFunction();\n\n if (fct) {\n targets.sort(fct);\n }\n\n return targets;\n };\n\n ChartInternal.prototype.filterByX = function (targets, x) {\n return this.d3.merge(targets.map(function (t) {\n return t.values;\n })).filter(function (v) {\n return v.x - x === 0;\n });\n };\n\n ChartInternal.prototype.filterRemoveNull = function (data) {\n return data.filter(function (d) {\n return isValue(d.value);\n });\n };\n\n ChartInternal.prototype.filterByXDomain = function (targets, xDomain) {\n return targets.map(function (t) {\n return {\n id: t.id,\n id_org: t.id_org,\n values: t.values.filter(function (v) {\n return xDomain[0] <= v.x && v.x <= xDomain[1];\n })\n };\n });\n };\n\n ChartInternal.prototype.hasDataLabel = function () {\n var config = this.config;\n\n if (typeof config.data_labels === 'boolean' && config.data_labels) {\n return true;\n } else if (_typeof(config.data_labels) === 'object' && notEmpty(config.data_labels)) {\n return true;\n }\n\n return false;\n };\n\n ChartInternal.prototype.getDataLabelLength = function (min, max, key) {\n var $$ = this,\n lengths = [0, 0],\n paddingCoef = 1.3;\n $$.selectChart.select('svg').selectAll('.dummy').data([min, max]).enter().append('text').text(function (d) {\n return $$.dataLabelFormat(d.id)(d);\n }).each(function (d, i) {\n lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n }).remove();\n return lengths;\n };\n /**\n * Returns true if the given data point is not arc type, otherwise false.\n * @param {Object} d The data point\n * @return {boolean}\n */\n\n\n ChartInternal.prototype.isNoneArc = function (d) {\n return this.hasTarget(this.data.targets, d.id);\n };\n /**\n * Returns true if the given data point is arc type, otherwise false.\n * @param {Object} d The data point\n * @return {boolean}\n */\n\n\n ChartInternal.prototype.isArc = function (d) {\n return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n };\n\n ChartInternal.prototype.findClosestFromTargets = function (targets, pos) {\n var $$ = this,\n candidates; // map to array of closest points of each target\n\n candidates = targets.map(function (target) {\n return $$.findClosest(target.values, pos);\n }); // decide closest point and return\n\n return $$.findClosest(candidates, pos);\n };\n\n ChartInternal.prototype.findClosest = function (values, pos) {\n var $$ = this,\n minDist = $$.config.point_sensitivity,\n closest; // find mouseovering bar\n\n values.filter(function (v) {\n return v && $$.isBarType(v.id);\n }).forEach(function (v) {\n var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n\n if (!closest && $$.isWithinBar($$.d3.mouse(shape), shape)) {\n closest = v;\n }\n }); // find closest point from non-bar\n\n values.filter(function (v) {\n return v && !$$.isBarType(v.id);\n }).forEach(function (v) {\n var d = $$.config.tooltip_horizontal ? $$.horizontalDistance(v, pos) : $$.dist(v, pos);\n\n if (d < minDist) {\n minDist = d;\n closest = v;\n }\n });\n return closest;\n };\n\n ChartInternal.prototype.dist = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n yIndex = config.axis_rotated ? 0 : 1,\n y = $$.circleY(data, data.index),\n x = $$.x(data.x);\n return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n };\n\n ChartInternal.prototype.horizontalDistance = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n x = $$.x(data.x);\n return Math.abs(x - pos[xIndex]);\n };\n\n ChartInternal.prototype.convertValuesToStep = function (values) {\n var converted = [].concat(values),\n i;\n\n if (!this.isCategorized()) {\n return values;\n }\n\n for (i = values.length + 1; 0 < i; i--) {\n converted[i] = converted[i - 1];\n }\n\n converted[0] = {\n x: converted[0].x - 1,\n value: converted[0].value,\n id: converted[0].id\n };\n converted[values.length + 1] = {\n x: converted[values.length].x + 1,\n value: converted[values.length].value,\n id: converted[values.length].id\n };\n return converted;\n };\n\n ChartInternal.prototype.updateDataAttributes = function (name, attrs) {\n var $$ = this,\n config = $$.config,\n current = config['data_' + name];\n\n if (typeof attrs === 'undefined') {\n return current;\n }\n\n Object.keys(attrs).forEach(function (id) {\n current[id] = attrs[id];\n });\n $$.redraw({\n withLegend: true\n });\n return current;\n };\n\n ChartInternal.prototype.load = function (targets, args) {\n var $$ = this;\n\n if (targets) {\n // filter loading targets if needed\n if (args.filter) {\n targets = targets.filter(args.filter);\n } // set type if args.types || args.type specified\n\n\n if (args.type || args.types) {\n targets.forEach(function (t) {\n var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n $$.setTargetType(t.id, type);\n });\n } // Update/Add data\n\n\n $$.data.targets.forEach(function (d) {\n for (var i = 0; i < targets.length; i++) {\n if (d.id === targets[i].id) {\n d.values = targets[i].values;\n targets.splice(i, 1);\n break;\n }\n }\n });\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n } // Set targets\n\n\n $$.updateTargets($$.data.targets); // Redraw with new targets\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n\n if (args.done) {\n args.done();\n }\n };\n\n ChartInternal.prototype.loadFromArgs = function (args) {\n var $$ = this;\n\n if (args.data) {\n $$.load($$.convertDataToTargets(args.data), args);\n } else if (args.url) {\n $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n $$.load($$.convertDataToTargets(data), args);\n });\n } else if (args.json) {\n $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n } else if (args.rows) {\n $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n } else if (args.columns) {\n $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n } else {\n $$.load(null, args);\n }\n };\n\n ChartInternal.prototype.unload = function (targetIds, done) {\n var $$ = this;\n\n if (!done) {\n done = function done() {};\n } // filter existing target\n\n\n targetIds = targetIds.filter(function (id) {\n return $$.hasTarget($$.data.targets, id);\n }); // If no target, call done and return\n\n if (!targetIds || targetIds.length === 0) {\n done();\n return;\n }\n\n $$.svg.selectAll(targetIds.map(function (id) {\n return $$.selectorTarget(id);\n })).transition().style('opacity', 0).remove().call($$.endall, done);\n targetIds.forEach(function (id) {\n // Reset fadein for future load\n $$.withoutFadeIn[id] = false; // Remove target's elements\n\n if ($$.legend) {\n $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n } // Remove target\n\n\n $$.data.targets = $$.data.targets.filter(function (t) {\n return t.id !== id;\n });\n });\n };\n\n ChartInternal.prototype.getYDomainMin = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasNegativeValue;\n\n if (config.data_groups.length > 0) {\n hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n\n if (idsInGroup.length === 0) {\n continue;\n }\n\n baseId = idsInGroup[0]; // Consider negative values\n\n if (hasNegativeValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v < 0 ? v : 0;\n });\n } // Compute min\n\n\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n\n if (!ys[id]) {\n continue;\n }\n\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n\n return $$.d3.min(Object.keys(ys).map(function (key) {\n return $$.d3.min(ys[key]);\n }));\n };\n\n ChartInternal.prototype.getYDomainMax = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasPositiveValue;\n\n if (config.data_groups.length > 0) {\n hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n\n if (idsInGroup.length === 0) {\n continue;\n }\n\n baseId = idsInGroup[0]; // Consider positive values\n\n if (hasPositiveValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v > 0 ? v : 0;\n });\n } // Compute max\n\n\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n\n if (!ys[id]) {\n continue;\n }\n\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n\n return $$.d3.max(Object.keys(ys).map(function (key) {\n return $$.d3.max(ys[key]);\n }));\n };\n\n ChartInternal.prototype.getYDomain = function (targets, axisId, xDomain) {\n var $$ = this,\n config = $$.config,\n targetsByAxisId = targets.filter(function (t) {\n return $$.axis.getId(t.id) === axisId;\n }),\n yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n yDomainMin = $$.getYDomainMin(yTargets),\n yDomainMax = $$.getYDomainMax(yTargets),\n domain,\n domainLength,\n padding,\n padding_top,\n padding_bottom,\n center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n yDomainAbs,\n lengths,\n diff,\n ratio,\n isAllPositive,\n isAllNegative,\n isZeroBased = $$.hasType('bar', yTargets) && config.bar_zerobased || $$.hasType('area', yTargets) && config.area_zerobased,\n isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated; // MEMO: avoid inverting domain unexpectedly\n\n yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? yDomainMin < yMax ? yDomainMin : yMax - 10 : yDomainMin;\n yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? yMin < yDomainMax ? yDomainMax : yMin + 10 : yDomainMax;\n\n if (yTargets.length === 0) {\n // use current domain if target of axisId is none\n return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n }\n\n if (isNaN(yDomainMin)) {\n // set minimum to zero when not number\n yDomainMin = 0;\n }\n\n if (isNaN(yDomainMax)) {\n // set maximum to have same value as yDomainMin\n yDomainMax = yDomainMin;\n }\n\n if (yDomainMin === yDomainMax) {\n yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n }\n\n isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n isAllNegative = yDomainMin <= 0 && yDomainMax <= 0; // Cancel zerobased if axis_*_min / axis_*_max specified\n\n if (isValue(yMin) && isAllPositive || isValue(yMax) && isAllNegative) {\n isZeroBased = false;\n } // Bar/Area chart should be 0-based if all positive|negative\n\n\n if (isZeroBased) {\n if (isAllPositive) {\n yDomainMin = 0;\n }\n\n if (isAllNegative) {\n yDomainMax = 0;\n }\n }\n\n domainLength = Math.abs(yDomainMax - yDomainMin);\n padding = padding_top = padding_bottom = domainLength * 0.1;\n\n if (typeof center !== 'undefined') {\n yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n yDomainMax = center + yDomainAbs;\n yDomainMin = center - yDomainAbs;\n } // add padding for data label\n\n\n if (showHorizontalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n diff = diffDomain($$.y.range());\n ratio = [lengths[0] / diff, lengths[1] / diff];\n padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n } else if (showVerticalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n }\n\n if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n }\n\n if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n } // Bar/Area chart should be 0-based if all positive|negative\n\n\n if (isZeroBased) {\n if (isAllPositive) {\n padding_bottom = yDomainMin;\n }\n\n if (isAllNegative) {\n padding_top = -yDomainMax;\n }\n }\n\n domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n return isInverted ? domain.reverse() : domain;\n };\n\n ChartInternal.prototype.getXDomainMin = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_min) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min : $$.d3.min(targets, function (t) {\n return $$.d3.min(t.values, function (v) {\n return v.x;\n });\n });\n };\n\n ChartInternal.prototype.getXDomainMax = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_max) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max : $$.d3.max(targets, function (t) {\n return $$.d3.max(t.values, function (v) {\n return v.x;\n });\n });\n };\n\n ChartInternal.prototype.getXDomainPadding = function (domain) {\n var $$ = this,\n config = $$.config,\n diff = domain[1] - domain[0],\n maxDataCount,\n padding,\n paddingLeft,\n paddingRight;\n\n if ($$.isCategorized()) {\n padding = 0;\n } else if ($$.hasType('bar')) {\n maxDataCount = $$.getMaxDataCount();\n padding = maxDataCount > 1 ? diff / (maxDataCount - 1) / 2 : 0.5;\n } else {\n padding = diff * 0.01;\n }\n\n if (_typeof(config.axis_x_padding) === 'object' && notEmpty(config.axis_x_padding)) {\n paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n } else if (typeof config.axis_x_padding === 'number') {\n paddingLeft = paddingRight = config.axis_x_padding;\n } else {\n paddingLeft = paddingRight = padding;\n }\n\n return {\n left: paddingLeft,\n right: paddingRight\n };\n };\n\n ChartInternal.prototype.getXDomain = function (targets) {\n var $$ = this,\n xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n firstX = xDomain[0],\n lastX = xDomain[1],\n padding = $$.getXDomainPadding(xDomain),\n min = 0,\n max = 0; // show center of x domain if min and max are the same\n\n if (firstX - lastX === 0 && !$$.isCategorized()) {\n if ($$.isTimeSeries()) {\n firstX = new Date(firstX.getTime() * 0.5);\n lastX = new Date(lastX.getTime() * 1.5);\n } else {\n firstX = firstX === 0 ? 1 : firstX * 0.5;\n lastX = lastX === 0 ? -1 : lastX * 1.5;\n }\n }\n\n if (firstX || firstX === 0) {\n min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n }\n\n if (lastX || lastX === 0) {\n max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n }\n\n return [min, max];\n };\n\n ChartInternal.prototype.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n var $$ = this,\n config = $$.config;\n\n if (withUpdateOrgXDomain) {\n $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n $$.orgXDomain = $$.x.domain();\n\n if (config.zoom_enabled) {\n $$.zoom.update();\n }\n\n $$.subX.domain($$.x.domain());\n\n if ($$.brush) {\n $$.brush.updateScale($$.subX);\n }\n }\n\n if (withUpdateXDomain) {\n $$.x.domain(domain ? domain : !$$.brush || $$.brush.empty() ? $$.orgXDomain : $$.brush.selectionAsValue());\n } // Trim domain when too big by zoom mousemove event\n\n\n if (withTrim) {\n $$.x.domain($$.trimXDomain($$.x.orgDomain()));\n }\n\n return $$.x.domain();\n };\n\n ChartInternal.prototype.trimXDomain = function (domain) {\n var zoomDomain = this.getZoomDomain(),\n min = zoomDomain[0],\n max = zoomDomain[1];\n\n if (domain[0] <= min) {\n domain[1] = +domain[1] + (min - domain[0]);\n domain[0] = min;\n }\n\n if (max <= domain[1]) {\n domain[0] = +domain[0] - (domain[1] - max);\n domain[1] = max;\n }\n\n return domain;\n };\n\n ChartInternal.prototype.drag = function (mouse) {\n var $$ = this,\n config = $$.config,\n main = $$.main,\n d3 = $$.d3;\n var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n if (!config.data_selection_multiple) {\n return;\n } // skip when single selection because drag is used for multiple selection\n\n\n sx = $$.dragStart[0];\n sy = $$.dragStart[1];\n mx = mouse[0];\n my = mouse[1];\n minX = Math.min(sx, mx);\n maxX = Math.max(sx, mx);\n minY = config.data_selection_grouped ? $$.margin.top : Math.min(sy, my);\n maxY = config.data_selection_grouped ? $$.height : Math.max(sy, my);\n main.select('.' + CLASS.dragarea).attr('x', minX).attr('y', minY).attr('width', maxX - minX).attr('height', maxY - minY); // TODO: binary search when multiple xs\n\n main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).filter(function (d) {\n return config.data_selection_isselectable(d);\n }).each(function (d, i) {\n var shape = d3.select(this),\n isSelected = shape.classed(CLASS.SELECTED),\n isIncluded = shape.classed(CLASS.INCLUDED),\n _x,\n _y,\n _w,\n _h,\n toggle,\n isWithin = false,\n box;\n\n if (shape.classed(CLASS.circle)) {\n _x = shape.attr(\"cx\") * 1;\n _y = shape.attr(\"cy\") * 1;\n toggle = $$.togglePoint;\n isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n } else if (shape.classed(CLASS.bar)) {\n box = getPathBox(this);\n _x = box.x;\n _y = box.y;\n _w = box.width;\n _h = box.height;\n toggle = $$.togglePath;\n isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n } else {\n // line/area selection not supported yet\n return;\n }\n\n if (isWithin ^ isIncluded) {\n shape.classed(CLASS.INCLUDED, !isIncluded); // TODO: included/unincluded callback here\n\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle.call($$, !isSelected, shape, d, i);\n }\n });\n };\n\n ChartInternal.prototype.dragstart = function (mouse) {\n var $$ = this,\n config = $$.config;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n $$.dragStart = mouse;\n $$.main.select('.' + CLASS.chart).append('rect').attr('class', CLASS.dragarea).style('opacity', 0.1);\n $$.dragging = true;\n };\n\n ChartInternal.prototype.dragend = function () {\n var $$ = this,\n config = $$.config;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n $$.main.select('.' + CLASS.dragarea).transition().duration(100).style('opacity', 0).remove();\n $$.main.selectAll('.' + CLASS.shape).classed(CLASS.INCLUDED, false);\n $$.dragging = false;\n };\n\n ChartInternal.prototype.getYFormat = function (forArc) {\n var $$ = this,\n formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n return function (v, ratio, id) {\n var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n return format.call($$, v, ratio);\n };\n };\n\n ChartInternal.prototype.yFormat = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n\n ChartInternal.prototype.y2Format = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n\n ChartInternal.prototype.defaultValueFormat = function (v) {\n return isValue(v) ? +v : \"\";\n };\n\n ChartInternal.prototype.defaultArcValueFormat = function (v, ratio) {\n return (ratio * 100).toFixed(1) + '%';\n };\n\n ChartInternal.prototype.dataLabelFormat = function (targetId) {\n var $$ = this,\n data_labels = $$.config.data_labels,\n format,\n defaultFormat = function defaultFormat(v) {\n return isValue(v) ? +v : \"\";\n }; // find format according to axis id\n\n\n if (typeof data_labels.format === 'function') {\n format = data_labels.format;\n } else if (_typeof(data_labels.format) === 'object') {\n if (data_labels.format[targetId]) {\n format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n } else {\n format = function format() {\n return '';\n };\n }\n } else {\n format = defaultFormat;\n }\n\n return format;\n };\n\n ChartInternal.prototype.initGrid = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n $$.grid = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid);\n\n if (config.grid_x_show) {\n $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n }\n\n if (config.grid_y_show) {\n $$.grid.append('g').attr('class', CLASS.ygrids);\n }\n\n if (config.grid_focus_show) {\n $$.grid.append('g').attr(\"class\", CLASS.xgridFocus).append('line').attr('class', CLASS.xgridFocus);\n }\n\n $$.xgrid = d3.selectAll([]);\n\n if (!config.grid_lines_front) {\n $$.initGridLines();\n }\n };\n\n ChartInternal.prototype.initGridLines = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.gridLines = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n $$.xgridLines = d3.selectAll([]);\n };\n\n ChartInternal.prototype.updateXGrid = function (withoutUpdate) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n $$.xgridAttr = config.axis_rotated ? {\n 'x1': 0,\n 'x2': $$.width,\n 'y1': function y1(d) {\n return $$.x(d) - tickOffset;\n },\n 'y2': function y2(d) {\n return $$.x(d) - tickOffset;\n }\n } : {\n 'x1': function x1(d) {\n return $$.x(d) + tickOffset;\n },\n 'x2': function x2(d) {\n return $$.x(d) + tickOffset;\n },\n 'y1': 0,\n 'y2': $$.height\n };\n\n $$.xgridAttr.opacity = function () {\n var pos = +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1');\n return pos === (config.axis_rotated ? $$.height : 0) ? 0 : 1;\n };\n\n var xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid).data(xgridData);\n var xgridEnter = xgrid.enter().append('line').attr(\"class\", CLASS.xgrid).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", 0);\n $$.xgrid = xgridEnter.merge(xgrid);\n\n if (!withoutUpdate) {\n $$.xgrid.attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n }\n\n xgrid.exit().remove();\n };\n\n ChartInternal.prototype.updateYGrid = function () {\n var $$ = this,\n config = $$.config,\n gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n var ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid).data(gridValues);\n var ygridEnter = ygrid.enter().append('line') // TODO: x1, x2, y1, y2, opacity need to be set here maybe\n .attr('class', CLASS.ygrid);\n $$.ygrid = ygridEnter.merge(ygrid);\n $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0).attr(\"x2\", config.axis_rotated ? $$.y : $$.width).attr(\"y1\", config.axis_rotated ? 0 : $$.y).attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n ygrid.exit().remove();\n $$.smoothLines($$.ygrid, 'grid');\n };\n\n ChartInternal.prototype.gridTextAnchor = function (d) {\n return d.position ? d.position : \"end\";\n };\n\n ChartInternal.prototype.gridTextDx = function (d) {\n return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n };\n\n ChartInternal.prototype.xGridTextX = function (d) {\n return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n };\n\n ChartInternal.prototype.yGridTextX = function (d) {\n return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n };\n\n ChartInternal.prototype.updateGrid = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n xgridLine,\n xgridLineEnter,\n ygridLine,\n ygridLineEnter,\n xv = $$.xv.bind($$),\n yv = $$.yv.bind($$),\n xGridTextX = $$.xGridTextX.bind($$),\n yGridTextX = $$.yGridTextX.bind($$); // hide if arc type\n\n $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n\n if (config.grid_x_show) {\n $$.updateXGrid();\n }\n\n xgridLine = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine).data(config.grid_x_lines); // enter\n\n xgridLineEnter = xgridLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n xgridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 0);\n xgridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").attr(\"x\", config.axis_rotated ? yGridTextX : xGridTextX).attr(\"y\", xv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0); // udpate\n\n $$.xgridLines = xgridLineEnter.merge(xgridLine); // done in d3.transition() of the end of this function\n // exit\n\n xgridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Y-Grid\n\n if (config.grid_y_show) {\n $$.updateYGrid();\n }\n\n ygridLine = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine).data(config.grid_y_lines); // enter\n\n ygridLineEnter = ygridLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n ygridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 0);\n ygridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").attr(\"x\", config.axis_rotated ? xGridTextX : yGridTextX).attr(\"y\", yv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0); // update\n\n $$.ygridLines = ygridLineEnter.merge(ygridLine);\n $$.ygridLines.select('line').transition().duration(duration).attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 1);\n $$.ygridLines.select('text').transition().duration(duration).attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$)).attr(\"y\", yv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1); // exit\n\n ygridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.redrawGrid = function (withTransition, transition) {\n var $$ = this,\n config = $$.config,\n xv = $$.xv.bind($$),\n lines = $$.xgridLines.select('line'),\n texts = $$.xgridLines.select('text');\n return [(withTransition ? lines.transition(transition) : lines).attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 1), (withTransition ? texts.transition(transition) : texts).attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$)).attr(\"y\", xv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.showXGridFocus = function (selectedData) {\n var $$ = this,\n config = $$.config,\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n xx = $$.xx.bind($$);\n\n if (!config.tooltip_show) {\n return;\n } // Hide when scatter plot exists\n\n\n if ($$.hasType('scatter') || $$.hasType('stanford') || $$.hasArcType()) {\n return;\n }\n\n focusEl.style(\"visibility\", \"visible\").data([dataToShow[0]]).attr(config.axis_rotated ? 'y1' : 'x1', xx).attr(config.axis_rotated ? 'y2' : 'x2', xx);\n $$.smoothLines(focusEl, 'grid');\n };\n\n ChartInternal.prototype.hideXGridFocus = function () {\n this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n };\n\n ChartInternal.prototype.updateXgridFocus = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('line.' + CLASS.xgridFocus).attr(\"x1\", config.axis_rotated ? 0 : -10).attr(\"x2\", config.axis_rotated ? $$.width : -10).attr(\"y1\", config.axis_rotated ? -10 : 0).attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n };\n\n ChartInternal.prototype.generateGridData = function (type, scale) {\n var $$ = this,\n gridData = [],\n xDomain,\n firstYear,\n lastYear,\n i,\n tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n\n if (type === 'year') {\n xDomain = $$.getXDomain();\n firstYear = xDomain[0].getFullYear();\n lastYear = xDomain[1].getFullYear();\n\n for (i = firstYear; i <= lastYear; i++) {\n gridData.push(new Date(i + '-01-01 00:00:00'));\n }\n } else {\n gridData = scale.ticks(10);\n\n if (gridData.length > tickNum) {\n // use only int\n gridData = gridData.filter(function (d) {\n return (\"\" + d).indexOf('.') < 0;\n });\n }\n }\n\n return gridData;\n };\n\n ChartInternal.prototype.getGridFilterToRemove = function (params) {\n return params ? function (line) {\n var found = false;\n [].concat(params).forEach(function (param) {\n if ('value' in param && line.value === param.value || 'class' in param && line['class'] === param['class']) {\n found = true;\n }\n });\n return found;\n } : function () {\n return true;\n };\n };\n\n ChartInternal.prototype.removeGridLines = function (params, forX) {\n var $$ = this,\n config = $$.config,\n toRemove = $$.getGridFilterToRemove(params),\n toShow = function toShow(line) {\n return !toRemove(line);\n },\n classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n\n $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove).transition().duration(config.transition_duration).style('opacity', 0).remove();\n\n if (forX) {\n config.grid_x_lines = config.grid_x_lines.filter(toShow);\n } else {\n config.grid_y_lines = config.grid_y_lines.filter(toShow);\n }\n };\n\n ChartInternal.prototype.initEventRect = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.eventRects).style('fill-opacity', 0);\n $$.eventRect = $$.main.select('.' + CLASS.eventRects).append('rect').attr('class', CLASS.eventRect); // event rect handle zoom event as well\n\n if (config.zoom_enabled && $$.zoom) {\n $$.eventRect.call($$.zoom).on(\"dblclick.zoom\", null);\n\n if (config.zoom_initialRange) {\n // WORKAROUND: Add transition to apply transform immediately when no subchart\n $$.eventRect.transition().duration(0).call($$.zoom.transform, $$.zoomTransform(config.zoom_initialRange));\n }\n }\n };\n\n ChartInternal.prototype.redrawEventRect = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n x,\n y,\n w,\n h; // TODO: rotated not supported yet\n\n x = 0;\n y = 0;\n w = $$.width;\n h = $$.height;\n\n function mouseout() {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n $$.hideXGridFocus();\n $$.hideTooltip();\n $$.unexpandCircles();\n $$.unexpandBars();\n } // rects for mouseover\n\n\n $$.main.select('.' + CLASS.eventRects).style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null);\n $$.eventRect.attr('x', x).attr('y', y).attr('width', w).attr('height', h).on('mouseout', config.interaction_enabled ? function () {\n if (!config) {\n return;\n } // chart is destroyed\n\n\n if ($$.hasArcType()) {\n return;\n }\n\n mouseout();\n } : null).on('mousemove', config.interaction_enabled ? function () {\n var targetsToShow, mouse, closest, sameXData, selectedData;\n\n if ($$.dragging) {\n return;\n } // do nothing when dragging\n\n\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n config.data_onmouseout.call($$.api, $$.mouseover);\n $$.mouseover = undefined;\n }\n\n if (!closest) {\n mouseout();\n return;\n }\n\n if ($$.isScatterOrStanfordType(closest) || !config.tooltip_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n } // show tooltip when cursor is close to some point\n\n\n selectedData = sameXData.map(function (d) {\n return $$.addName(d);\n });\n $$.showTooltip(selectedData, this); // expand points\n\n if (config.point_focus_expand_enabled) {\n $$.unexpandCircles();\n selectedData.forEach(function (d) {\n $$.expandCircles(d.index, d.id, false);\n });\n }\n\n $$.expandBars(closest.index, closest.id, true); // Show xgrid focus line\n\n $$.showXGridFocus(selectedData); // Show cursor as pointer if point is close to mouse position\n\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n\n if (!$$.mouseover) {\n config.data_onmouseover.call($$.api, closest);\n $$.mouseover = closest;\n }\n }\n } : null).on('click', config.interaction_enabled ? function () {\n var targetsToShow, mouse, closest, sameXData;\n\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if (!closest) {\n return;\n } // select if selection enabled\n\n\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n if ($$.isScatterOrStanfordType(closest) || !config.data_selection_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n }\n\n sameXData.forEach(function (d) {\n $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.shape + '-' + d.index).each(function () {\n if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n $$.toggleShape(this, d, d.index);\n config.data_onclick.call($$.api, d, this);\n }\n });\n });\n }\n } : null).call(config.interaction_enabled && config.data_selection_draggable && $$.drag ? d3.drag().on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('start', function () {\n $$.dragstart(d3.mouse(this));\n }).on('end', function () {\n $$.dragend();\n }) : function () {});\n };\n\n ChartInternal.prototype.getMousePosition = function (data) {\n var $$ = this;\n return [$$.x(data.x), $$.getYScale(data.id)(data.value)];\n };\n\n ChartInternal.prototype.dispatchEvent = function (type, mouse) {\n var $$ = this,\n selector = '.' + CLASS.eventRect,\n eventRect = $$.main.select(selector).node(),\n box = eventRect.getBoundingClientRect(),\n x = box.left + (mouse ? mouse[0] : 0),\n y = box.top + (mouse ? mouse[1] : 0),\n event = document.createEvent(\"MouseEvents\");\n event.initMouseEvent(type, true, true, window, 0, x, y, x, y, false, false, false, false, 0, null);\n eventRect.dispatchEvent(event);\n };\n\n ChartInternal.prototype.initLegend = function () {\n var $$ = this;\n $$.legendItemTextBox = {};\n $$.legendHasRendered = false;\n $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n\n if (!$$.config.legend_show) {\n $$.legend.style('visibility', 'hidden');\n $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n return;\n } // MEMO: call here to update legend box and tranlate for all\n // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n\n\n $$.updateLegendWithDefaults();\n };\n\n ChartInternal.prototype.updateLegendWithDefaults = function () {\n var $$ = this;\n $$.updateLegend($$.mapToIds($$.data.targets), {\n withTransform: false,\n withTransitionForTransform: false,\n withTransition: false\n });\n };\n\n ChartInternal.prototype.updateSizeForLegend = function (legendHeight, legendWidth) {\n var $$ = this,\n config = $$.config,\n insetLegendPosition = {\n top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n };\n $$.margin3 = {\n top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n right: NaN,\n bottom: 0,\n left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n };\n };\n\n ChartInternal.prototype.transformLegend = function (withTransition) {\n var $$ = this;\n (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n };\n\n ChartInternal.prototype.updateLegendStep = function (step) {\n this.legendStep = step;\n };\n\n ChartInternal.prototype.updateLegendItemWidth = function (w) {\n this.legendItemWidth = w;\n };\n\n ChartInternal.prototype.updateLegendItemHeight = function (h) {\n this.legendItemHeight = h;\n };\n\n ChartInternal.prototype.getLegendWidth = function () {\n var $$ = this;\n return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n };\n\n ChartInternal.prototype.getLegendHeight = function () {\n var $$ = this,\n h = 0;\n\n if ($$.config.legend_show) {\n if ($$.isLegendRight) {\n h = $$.currentHeight;\n } else {\n h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n }\n }\n\n return h;\n };\n\n ChartInternal.prototype.opacityForLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n };\n\n ChartInternal.prototype.opacityForUnfocusedLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n };\n\n ChartInternal.prototype.toggleFocusLegend = function (targetIds, focus) {\n var $$ = this;\n targetIds = $$.mapToTargetIds(targetIds);\n $$.legend.selectAll('.' + CLASS.legendItem).filter(function (id) {\n return targetIds.indexOf(id) >= 0;\n }).classed(CLASS.legendItemFocused, focus).transition().duration(100).style('opacity', function () {\n var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n return opacity.call($$, $$.d3.select(this));\n });\n };\n\n ChartInternal.prototype.revertLegend = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemFocused, false).transition().duration(100).style('opacity', function () {\n return $$.opacityForLegend(d3.select(this));\n });\n };\n\n ChartInternal.prototype.showLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n\n if (!config.legend_show) {\n config.legend_show = true;\n $$.legend.style('visibility', 'visible');\n\n if (!$$.legendHasRendered) {\n $$.updateLegendWithDefaults();\n }\n }\n\n $$.removeHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('visibility', 'visible').transition().style('opacity', function () {\n return $$.opacityForLegend($$.d3.select(this));\n });\n };\n\n ChartInternal.prototype.hideLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n\n if (config.legend_show && isEmpty(targetIds)) {\n config.legend_show = false;\n $$.legend.style('visibility', 'hidden');\n }\n\n $$.addHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('opacity', 0).style('visibility', 'hidden');\n };\n\n ChartInternal.prototype.clearLegendItemTextBoxCache = function () {\n this.legendItemTextBox = {};\n };\n\n ChartInternal.prototype.updateLegend = function (targetIds, options, transitions) {\n var $$ = this,\n config = $$.config;\n var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n var paddingTop = 4,\n paddingRight = 10,\n maxWidth = 0,\n maxHeight = 0,\n posMin = 10,\n tileWidth = config.legend_item_tile_width + 5;\n var l,\n totalLength = 0,\n offsets = {},\n widths = {},\n heights = {},\n margins = [0],\n steps = {},\n step = 0;\n var withTransition, withTransitionForTransform;\n var texts, rects, tiles, background; // Skip elements when their name is set to null\n\n targetIds = targetIds.filter(function (id) {\n return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n });\n options = options || {};\n withTransition = getOption(options, \"withTransition\", true);\n withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n function getTextBox(textElement, id) {\n if (!$$.legendItemTextBox[id]) {\n $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n }\n\n return $$.legendItemTextBox[id];\n }\n\n function updatePositions(textElement, id, index) {\n var reset = index === 0,\n isLast = index === targetIds.length - 1,\n box = getTextBox(textElement, id),\n itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n itemHeight = box.height + paddingTop,\n itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n margin,\n maxLength; // MEMO: care about condifion of step, totalLength\n\n function updateValues(id, withoutStep) {\n if (!withoutStep) {\n margin = (areaLength - totalLength - itemLength) / 2;\n\n if (margin < posMin) {\n margin = (areaLength - itemLength) / 2;\n totalLength = 0;\n step++;\n }\n }\n\n steps[id] = step;\n margins[step] = $$.isLegendInset ? 10 : margin;\n offsets[id] = totalLength;\n totalLength += itemLength;\n }\n\n if (reset) {\n totalLength = 0;\n step = 0;\n maxWidth = 0;\n maxHeight = 0;\n }\n\n if (config.legend_show && !$$.isLegendToShow(id)) {\n widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n return;\n }\n\n widths[id] = itemWidth;\n heights[id] = itemHeight;\n\n if (!maxWidth || itemWidth >= maxWidth) {\n maxWidth = itemWidth;\n }\n\n if (!maxHeight || itemHeight >= maxHeight) {\n maxHeight = itemHeight;\n }\n\n maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n if (config.legend_equally) {\n Object.keys(widths).forEach(function (id) {\n widths[id] = maxWidth;\n });\n Object.keys(heights).forEach(function (id) {\n heights[id] = maxHeight;\n });\n margin = (areaLength - maxLength * targetIds.length) / 2;\n\n if (margin < posMin) {\n totalLength = 0;\n step = 0;\n targetIds.forEach(function (id) {\n updateValues(id);\n });\n } else {\n updateValues(id, true);\n }\n } else {\n updateValues(id);\n }\n }\n\n if ($$.isLegendInset) {\n step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n $$.updateLegendStep(step);\n }\n\n if ($$.isLegendRight) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id];\n };\n\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else if ($$.isLegendInset) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id] + 10;\n };\n\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else {\n xForLegend = function xForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n\n yForLegend = function yForLegend(id) {\n return maxHeight * steps[id];\n };\n }\n\n xForLegendText = function xForLegendText(id, i) {\n return xForLegend(id, i) + 4 + config.legend_item_tile_width;\n };\n\n yForLegendText = function yForLegendText(id, i) {\n return yForLegend(id, i) + 9;\n };\n\n xForLegendRect = function xForLegendRect(id, i) {\n return xForLegend(id, i);\n };\n\n yForLegendRect = function yForLegendRect(id, i) {\n return yForLegend(id, i) - 5;\n };\n\n x1ForLegendTile = function x1ForLegendTile(id, i) {\n return xForLegend(id, i) - 2;\n };\n\n x2ForLegendTile = function x2ForLegendTile(id, i) {\n return xForLegend(id, i) - 2 + config.legend_item_tile_width;\n };\n\n yForLegendTile = function yForLegendTile(id, i) {\n return yForLegend(id, i) + 4;\n }; // Define g for legend area\n\n\n l = $$.legend.selectAll('.' + CLASS.legendItem).data(targetIds).enter().append('g').attr('class', function (id) {\n return $$.generateClass(CLASS.legendItem, id);\n }).style('visibility', function (id) {\n return $$.isLegendToShow(id) ? 'visible' : 'hidden';\n }).style('cursor', 'pointer').on('click', function (id) {\n if (config.legend_item_onclick) {\n config.legend_item_onclick.call($$, id);\n } else {\n if ($$.d3.event.altKey) {\n $$.api.hide();\n $$.api.show(id);\n } else {\n $$.api.toggle(id);\n $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n }\n }\n }).on('mouseover', function (id) {\n if (config.legend_item_onmouseover) {\n config.legend_item_onmouseover.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n\n if (!$$.transiting && $$.isTargetToShow(id)) {\n $$.api.focus(id);\n }\n }\n }).on('mouseout', function (id) {\n if (config.legend_item_onmouseout) {\n config.legend_item_onmouseout.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n $$.api.revert();\n }\n });\n l.append('text').text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }).each(function (id, i) {\n updatePositions(this, id, i);\n }).style(\"pointer-events\", \"none\").attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n l.append('rect').attr(\"class\", CLASS.legendItemEvent).style('fill-opacity', 0).attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n l.append('line').attr('class', CLASS.legendItemTile).style('stroke', $$.color).style(\"pointer-events\", \"none\").attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200).attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200).attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('stroke-width', config.legend_item_tile_height); // Set background for inset legend\n\n background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n\n if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n background = $$.legend.insert('g', '.' + CLASS.legendItem).attr(\"class\", CLASS.legendBackground).append('rect');\n }\n\n texts = $$.legend.selectAll('text').data(targetIds).text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }) // MEMO: needed for update\n .each(function (id, i) {\n updatePositions(this, id, i);\n });\n (withTransition ? texts.transition() : texts).attr('x', xForLegendText).attr('y', yForLegendText);\n rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent).data(targetIds);\n (withTransition ? rects.transition() : rects).attr('width', function (id) {\n return widths[id];\n }).attr('height', function (id) {\n return heights[id];\n }).attr('x', xForLegendRect).attr('y', yForLegendRect);\n tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile).data(targetIds);\n (withTransition ? tiles.transition() : tiles).style('stroke', $$.levelColor ? function (id) {\n return $$.levelColor($$.cache[id].values[0].value);\n } : $$.color).attr('x1', x1ForLegendTile).attr('y1', yForLegendTile).attr('x2', x2ForLegendTile).attr('y2', yForLegendTile);\n\n if (background) {\n (withTransition ? background.transition() : background).attr('height', $$.getLegendHeight() - 12).attr('width', maxWidth * (step + 1) + 10);\n } // toggle legend state\n\n\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemHidden, function (id) {\n return !$$.isTargetToShow(id);\n }); // Update all to reflect change of legend\n\n $$.updateLegendItemWidth(maxWidth);\n $$.updateLegendItemHeight(maxHeight);\n $$.updateLegendStep(step); // Update size and scale\n\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize(); // Update g positions\n\n $$.transformAll(withTransitionForTransform, transitions);\n $$.legendHasRendered = true;\n };\n\n ChartInternal.prototype.initRegion = function () {\n var $$ = this;\n $$.region = $$.main.append('g').attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.regions);\n };\n\n ChartInternal.prototype.updateRegion = function (duration) {\n var $$ = this,\n config = $$.config; // hide if arc type\n\n $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n var mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region).data(config.regions);\n var mainRegionEnter = mainRegion.enter().append('rect').attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", 0);\n $$.mainRegion = mainRegionEnter.merge(mainRegion).attr('class', $$.classRegion.bind($$));\n mainRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.redrawRegion = function (withTransition, transition) {\n var $$ = this,\n regions = $$.mainRegion;\n return [(withTransition ? regions.transition(transition) : regions).attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", function (d) {\n return isValue(d.opacity) ? d.opacity : 0.1;\n })];\n };\n\n ChartInternal.prototype.regionX = function (d) {\n var $$ = this,\n config = $$.config,\n xPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n xPos = config.axis_rotated ? 'start' in d ? yScale(d.start) : 0 : 0;\n } else {\n xPos = config.axis_rotated ? 0 : 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0;\n }\n\n return xPos;\n };\n\n ChartInternal.prototype.regionY = function (d) {\n var $$ = this,\n config = $$.config,\n yPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n yPos = config.axis_rotated ? 0 : 'end' in d ? yScale(d.end) : 0;\n } else {\n yPos = config.axis_rotated ? 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0 : 0;\n }\n\n return yPos;\n };\n\n ChartInternal.prototype.regionWidth = function (d) {\n var $$ = this,\n config = $$.config,\n start = $$.regionX(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? 'end' in d ? yScale(d.end) : $$.width : $$.width;\n } else {\n end = config.axis_rotated ? $$.width : 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width;\n }\n\n return end < start ? 0 : end - start;\n };\n\n ChartInternal.prototype.regionHeight = function (d) {\n var $$ = this,\n config = $$.config,\n start = this.regionY(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? $$.height : 'start' in d ? yScale(d.start) : $$.height;\n } else {\n end = config.axis_rotated ? 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height : $$.height;\n }\n\n return end < start ? 0 : end - start;\n };\n\n ChartInternal.prototype.isRegionOnX = function (d) {\n return !d.axis || d.axis === 'x';\n };\n\n ChartInternal.prototype.getScale = function (min, max, forTimeseries) {\n return (forTimeseries ? this.d3.scaleTime() : this.d3.scaleLinear()).range([min, max]);\n };\n\n ChartInternal.prototype.getX = function (min, max, domain, offset) {\n var $$ = this,\n scale = $$.getScale(min, max, $$.isTimeSeries()),\n _scale = domain ? scale.domain(domain) : scale,\n key; // Define customized scale if categorized axis\n\n\n if ($$.isCategorized()) {\n offset = offset || function () {\n return 0;\n };\n\n scale = function scale(d, raw) {\n var v = _scale(d) + offset(d);\n return raw ? v : Math.ceil(v);\n };\n } else {\n scale = function scale(d, raw) {\n var v = _scale(d);\n\n return raw ? v : Math.ceil(v);\n };\n } // define functions\n\n\n for (key in _scale) {\n scale[key] = _scale[key];\n }\n\n scale.orgDomain = function () {\n return _scale.domain();\n }; // define custom domain() for categorized axis\n\n\n if ($$.isCategorized()) {\n scale.domain = function (domain) {\n if (!arguments.length) {\n domain = this.orgDomain();\n return [domain[0], domain[1] + 1];\n }\n\n _scale.domain(domain);\n\n return scale;\n };\n }\n\n return scale;\n };\n\n ChartInternal.prototype.getY = function (min, max, domain) {\n var scale = this.getScale(min, max, this.isTimeSeriesY());\n\n if (domain) {\n scale.domain(domain);\n }\n\n return scale;\n };\n\n ChartInternal.prototype.getYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n };\n\n ChartInternal.prototype.getSubYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n };\n\n ChartInternal.prototype.updateScales = function () {\n var $$ = this,\n config = $$.config,\n forInit = !$$.x; // update edges\n\n $$.xMin = config.axis_rotated ? 1 : 0;\n $$.xMax = config.axis_rotated ? $$.height : $$.width;\n $$.yMin = config.axis_rotated ? 0 : $$.height;\n $$.yMax = config.axis_rotated ? $$.width : 1;\n $$.subXMin = $$.xMin;\n $$.subXMax = $$.xMax;\n $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n $$.subYMax = config.axis_rotated ? $$.width2 : 1; // update scales\n\n $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () {\n return $$.xAxis.tickOffset();\n });\n $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) {\n return d % 1 ? 0 : $$.subXAxis.tickOffset();\n });\n $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain()); // update axes\n\n $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer); // Set initialized scales to brush and zoom\n\n if (!forInit) {\n if ($$.brush) {\n $$.brush.updateScale($$.subX);\n }\n } // update for arc\n\n\n if ($$.updateArc) {\n $$.updateArc();\n }\n };\n\n ChartInternal.prototype.selectPoint = function (target, d, i) {\n var $$ = this,\n config = $$.config,\n cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n r = $$.pointSelectR.bind($$);\n config.data_onselected.call($$.api, d, target.node()); // add selected-circle on low layer g\n\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).data([d]).enter().append('circle').attr(\"class\", function () {\n return $$.generateClass(CLASS.selectedCircle, i);\n }).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"stroke\", function () {\n return $$.color(d);\n }).attr(\"r\", function (d) {\n return $$.pointSelectR(d) * 1.4;\n }).transition().duration(100).attr(\"r\", r);\n };\n\n ChartInternal.prototype.unselectPoint = function (target, d, i) {\n var $$ = this;\n $$.config.data_onunselected.call($$.api, d, target.node()); // remove selected-circle from low layer g\n\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).transition().duration(100).attr('r', 0).remove();\n };\n\n ChartInternal.prototype.togglePoint = function (selected, target, d, i) {\n selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n };\n\n ChartInternal.prototype.selectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onselected.call($$, d, target.node());\n\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.d3.rgb($$.color(d)).brighter(0.75);\n });\n }\n };\n\n ChartInternal.prototype.unselectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onunselected.call($$, d, target.node());\n\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.color(d);\n });\n }\n };\n\n ChartInternal.prototype.togglePath = function (selected, target, d, i) {\n selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n };\n\n ChartInternal.prototype.getToggle = function (that, d) {\n var $$ = this,\n toggle;\n\n if (that.nodeName === 'circle') {\n if ($$.isStepType(d)) {\n // circle is hidden in step chart, so treat as within the click area\n toggle = function toggle() {}; // TODO: how to select step chart?\n\n } else {\n toggle = $$.togglePoint;\n }\n } else if (that.nodeName === 'path') {\n toggle = $$.togglePath;\n }\n\n return toggle;\n };\n\n ChartInternal.prototype.toggleShape = function (that, d, i) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n shape = d3.select(that),\n isSelected = shape.classed(CLASS.SELECTED),\n toggle = $$.getToggle(that, d).bind($$);\n\n if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n if (!config.data_selection_multiple) {\n $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this);\n\n if (shape.classed(CLASS.SELECTED)) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n });\n }\n\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle(!isSelected, shape, d, i);\n }\n };\n\n ChartInternal.prototype.initBar = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n };\n\n ChartInternal.prototype.updateTargetsForBar = function (targets) {\n var $$ = this,\n config = $$.config,\n mainBars,\n mainBarEnter,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainBars = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', function (d) {\n return classChartBar(d) + classFocus(d);\n });\n mainBarEnter = mainBars.enter().append('g').attr('class', classChartBar).style(\"pointer-events\", \"none\"); // Bars for each data\n\n mainBarEnter.append('g').attr(\"class\", classBars).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n };\n\n ChartInternal.prototype.updateBar = function (durationForExit) {\n var $$ = this,\n barData = $$.barData.bind($$),\n classBar = $$.classBar.bind($$),\n initialOpacity = $$.initialOpacity.bind($$),\n color = function color(d) {\n return $$.color(d.id);\n };\n\n var mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data(barData);\n var mainBarEnter = mainBar.enter().append('path').attr(\"class\", classBar).style(\"stroke\", color).style(\"fill\", color);\n $$.mainBar = mainBarEnter.merge(mainBar).style(\"opacity\", initialOpacity);\n mainBar.exit().transition().duration(durationForExit).style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawBar = function (drawBar, withTransition, transition) {\n return [(withTransition ? this.mainBar.transition(transition) : this.mainBar).attr('d', drawBar).style(\"stroke\", this.color).style(\"fill\", this.color).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.getBarW = function (axis, barTargetsNum) {\n var $$ = this,\n config = $$.config,\n w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? axis.tickInterval() * config.bar_width_ratio / barTargetsNum : 0;\n return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n };\n\n ChartInternal.prototype.getBars = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n };\n\n ChartInternal.prototype.expandBars = function (i, id, reset) {\n var $$ = this;\n\n if (reset) {\n $$.unexpandBars();\n }\n\n $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n };\n\n ChartInternal.prototype.unexpandBars = function (i) {\n var $$ = this;\n $$.getBars(i).classed(CLASS.EXPANDED, false);\n };\n\n ChartInternal.prototype.generateDrawBar = function (barIndices, isSub) {\n var $$ = this,\n config = $$.config,\n getPoints = $$.generateGetBarPoints(barIndices, isSub);\n return function (d, i) {\n // 4 points that make a bar\n var points = getPoints(d, i); // switch points if axis is rotated, not applicable for sub chart\n\n var indexX = config.axis_rotated ? 1 : 0;\n var indexY = config.axis_rotated ? 0 : 1;\n var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' + 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' + 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' + 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' + 'z';\n return path;\n };\n };\n\n ChartInternal.prototype.generateGetBarPoints = function (barIndices, isSub) {\n var $$ = this,\n axis = isSub ? $$.subXAxis : $$.xAxis,\n barTargetsNum = barIndices.__max__ + 1,\n barW = $$.getBarW(axis, barTargetsNum),\n barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n barY = $$.getShapeY(!!isSub),\n barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n barSpaceOffset = barW * ($$.config.bar_space / 2),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = barOffset(d, i) || y0,\n // offset is for stacked bar chart\n posX = barX(d),\n posY = barY(d); // fix posY not to overflow opposite quadrant\n\n if ($$.config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 4 points that make a bar\n\n\n return [[posX + barSpaceOffset, offset], [posX + barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, offset]];\n };\n };\n\n ChartInternal.prototype.isWithinBar = function (mouse, that) {\n var box = that.getBoundingClientRect(),\n seg0 = that.pathSegList.getItem(0),\n seg1 = that.pathSegList.getItem(1),\n x = Math.min(seg0.x, seg1.x),\n y = Math.min(seg0.y, seg1.y),\n w = box.width,\n h = box.height,\n offset = 2,\n sx = x - offset,\n ex = x + w + offset,\n sy = y + h + offset,\n ey = y - offset;\n return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n };\n\n ChartInternal.prototype.getShapeIndices = function (typeFilter) {\n var $$ = this,\n config = $$.config,\n indices = {},\n i = 0,\n j,\n k;\n $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n for (j = 0; j < config.data_groups.length; j++) {\n if (config.data_groups[j].indexOf(d.id) < 0) {\n continue;\n }\n\n for (k = 0; k < config.data_groups[j].length; k++) {\n if (config.data_groups[j][k] in indices) {\n indices[d.id] = indices[config.data_groups[j][k]];\n break;\n }\n }\n }\n\n if (isUndefined(indices[d.id])) {\n indices[d.id] = i++;\n }\n });\n indices.__max__ = i - 1;\n return indices;\n };\n\n ChartInternal.prototype.getShapeX = function (offset, targetsNum, indices, isSub) {\n var $$ = this,\n scale = isSub ? $$.subX : $$.x;\n return function (d) {\n var index = d.id in indices ? indices[d.id] : 0;\n return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n };\n };\n\n ChartInternal.prototype.getShapeY = function (isSub) {\n var $$ = this;\n return function (d) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n return scale(d.value);\n };\n };\n\n ChartInternal.prototype.getShapeOffset = function (typeFilter, indices, isSub) {\n var $$ = this,\n targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n targetIds = targets.map(function (t) {\n return t.id;\n });\n return function (d, i) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n y0 = scale(0),\n offset = y0;\n targets.forEach(function (t) {\n var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n\n if (t.id === d.id || indices[t.id] !== indices[d.id]) {\n return;\n }\n\n if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n // check if the x values line up\n if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {\n // \"+\" for timeseries\n // if not, try to find the value that does line up\n i = -1;\n values.forEach(function (v, j) {\n if (v.x === d.x) {\n i = j;\n }\n });\n }\n\n if (i in values && values[i].value * d.value >= 0) {\n offset += scale(values[i].value) - y0;\n }\n }\n });\n return offset;\n };\n };\n\n ChartInternal.prototype.isWithinShape = function (that, d) {\n var $$ = this,\n shape = $$.d3.select(that),\n isWithin;\n\n if (!$$.isTargetToShow(d.id)) {\n isWithin = false;\n } else if (that.nodeName === 'circle') {\n isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n } else if (that.nodeName === 'path') {\n isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar($$.d3.mouse(that), that) : true;\n }\n\n return isWithin;\n };\n\n ChartInternal.prototype.getInterpolate = function (d) {\n var $$ = this,\n d3 = $$.d3,\n types = {\n 'linear': d3.curveLinear,\n 'linear-closed': d3.curveLinearClosed,\n 'basis': d3.curveBasis,\n 'basis-open': d3.curveBasisOpen,\n 'basis-closed': d3.curveBasisClosed,\n 'bundle': d3.curveBundle,\n 'cardinal': d3.curveCardinal,\n 'cardinal-open': d3.curveCardinalOpen,\n 'cardinal-closed': d3.curveCardinalClosed,\n 'monotone': d3.curveMonotoneX,\n 'step': d3.curveStep,\n 'step-before': d3.curveStepBefore,\n 'step-after': d3.curveStepAfter\n },\n type;\n\n if ($$.isSplineType(d)) {\n type = types[$$.config.spline_interpolation_type] || types.cardinal;\n } else if ($$.isStepType(d)) {\n type = types[$$.config.line_step_type];\n } else {\n type = types.linear;\n }\n\n return type;\n };\n\n ChartInternal.prototype.initLine = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n };\n\n ChartInternal.prototype.updateTargetsForLine = function (targets) {\n var $$ = this,\n config = $$.config,\n mainLines,\n mainLineEnter,\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$),\n classCircles = $$.classCircles.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainLines = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', function (d) {\n return classChartLine(d) + classFocus(d);\n });\n mainLineEnter = mainLines.enter().append('g').attr('class', classChartLine).style('opacity', 0).style(\"pointer-events\", \"none\"); // Lines for each data\n\n mainLineEnter.append('g').attr(\"class\", classLines); // Areas\n\n mainLineEnter.append('g').attr('class', classAreas); // Circles for each data point on lines\n\n mainLineEnter.append('g').attr(\"class\", function (d) {\n return $$.generateClass(CLASS.selectedCircles, d.id);\n });\n mainLineEnter.append('g').attr(\"class\", classCircles).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n }); // Update date for selected circles\n\n targets.forEach(function (t) {\n $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n d.value = t.values[d.index].value;\n });\n }); // MEMO: can not keep same color...\n //mainLineUpdate.exit().remove();\n };\n\n ChartInternal.prototype.updateLine = function (durationForExit) {\n var $$ = this;\n var mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n var mainLineEnter = mainLine.enter().append('path').attr('class', $$.classLine.bind($$)).style(\"stroke\", $$.color);\n $$.mainLine = mainLineEnter.merge(mainLine).style(\"opacity\", $$.initialOpacity.bind($$)).style('shape-rendering', function (d) {\n return $$.isStepType(d) ? 'crispEdges' : '';\n }).attr('transform', null);\n mainLine.exit().transition().duration(durationForExit).style('opacity', 0);\n };\n\n ChartInternal.prototype.redrawLine = function (drawLine, withTransition, transition) {\n return [(withTransition ? this.mainLine.transition(transition) : this.mainLine).attr(\"d\", drawLine).style(\"stroke\", this.color).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.generateDrawLine = function (lineIndices, isSub) {\n var $$ = this,\n config = $$.config,\n line = $$.d3.line(),\n getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n yValue = function yValue(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n\n if (!config.line_connectNull) {\n line = line.defined(function (d) {\n return d.value != null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x = isSub ? $$.subX : $$.x,\n y = yScaleGetter.call($$, d.id),\n x0 = 0,\n y0 = 0,\n path;\n\n if ($$.isLineType(d)) {\n if (config.data_regions[d.id]) {\n path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n } else {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n\n path = line.curve($$.getInterpolate(d))(values);\n }\n } else {\n if (values[0]) {\n x0 = x(values[0].x);\n y0 = y(values[0].value);\n }\n\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n\n return path ? path : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.generateGetLinePoints = function (lineIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n lineTargetsNum = lineIndices.__max__ + 1,\n x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = lineOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d); // fix posY not to overflow opposite quadrant\n\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 1 point that marks the line position\n\n\n return [[posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)] // needed for compatibility\n ];\n };\n };\n\n ChartInternal.prototype.lineWithRegions = function (d, x, y, _regions) {\n var $$ = this,\n config = $$.config,\n prev = -1,\n i,\n j,\n s = \"M\",\n sWithRegion,\n xp,\n yp,\n dx,\n dy,\n dd,\n diff,\n diffx2,\n xOffset = $$.isCategorized() ? 0.5 : 0,\n xValue,\n yValue,\n regions = [];\n\n function isWithinRegions(x, regions) {\n var i;\n\n for (i = 0; i < regions.length; i++) {\n if (regions[i].start < x && x <= regions[i].end) {\n return true;\n }\n }\n\n return false;\n } // Check start/end of regions\n\n\n if (isDefined(_regions)) {\n for (i = 0; i < _regions.length; i++) {\n regions[i] = {};\n\n if (isUndefined(_regions[i].start)) {\n regions[i].start = d[0].x;\n } else {\n regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n }\n\n if (isUndefined(_regions[i].end)) {\n regions[i].end = d[d.length - 1].x;\n } else {\n regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n }\n }\n } // Set scales\n\n\n xValue = config.axis_rotated ? function (d) {\n return y(d.value);\n } : function (d) {\n return x(d.x);\n };\n yValue = config.axis_rotated ? function (d) {\n return x(d.x);\n } : function (d) {\n return y(d.value);\n }; // Define svg generator function for region\n\n function generateM(points) {\n return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n }\n\n if ($$.isTimeSeries()) {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var x0 = d0.x.getTime(),\n x_diff = d1.x - d0.x,\n xv0 = new Date(x0 + x_diff * j),\n xv1 = new Date(x0 + x_diff * (j + diff)),\n points;\n\n if (config.axis_rotated) {\n points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n } else {\n points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n }\n\n return generateM(points);\n };\n } else {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var points;\n\n if (config.axis_rotated) {\n points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n } else {\n points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n }\n\n return generateM(points);\n };\n } // Generate\n\n\n for (i = 0; i < d.length; i++) {\n // Draw as normal\n if (isUndefined(regions) || !isWithinRegions(d[i].x, regions)) {\n s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n } // Draw with region // TODO: Fix for horizotal charts\n else {\n xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n yp = $$.getScale(d[i - 1].value, d[i].value);\n dx = x(d[i].x) - x(d[i - 1].x);\n dy = y(d[i].value) - y(d[i - 1].value);\n dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n diff = 2 / dd;\n diffx2 = diff * 2;\n\n for (j = diff; j <= 1; j += diffx2) {\n s += sWithRegion(d[i - 1], d[i], j, diff);\n }\n }\n\n prev = d[i].x;\n }\n\n return s;\n };\n\n ChartInternal.prototype.updateArea = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n var mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n var mainAreaEnter = mainArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\n return 0;\n });\n $$.mainArea = mainAreaEnter.merge(mainArea).style(\"opacity\", $$.orgAreaOpacity);\n mainArea.exit().transition().duration(durationForExit).style('opacity', 0);\n };\n\n ChartInternal.prototype.redrawArea = function (drawArea, withTransition, transition) {\n return [(withTransition ? this.mainArea.transition(transition) : this.mainArea).attr(\"d\", drawArea).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity)];\n };\n\n ChartInternal.prototype.generateDrawArea = function (areaIndices, isSub) {\n var $$ = this,\n config = $$.config,\n area = $$.d3.area(),\n getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n value0 = function value0(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n },\n value1 = function value1(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n\n if (!config.line_connectNull) {\n area = area.defined(function (d) {\n return d.value !== null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x0 = 0,\n y0 = 0,\n path;\n\n if ($$.isAreaType(d)) {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n\n path = area.curve($$.getInterpolate(d))(values);\n } else {\n if (values[0]) {\n x0 = $$.x(values[0].x);\n y0 = $$.getYScale(d.id)(values[0].value);\n }\n\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n\n return path ? path : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.getAreaBaseValue = function () {\n return 0;\n };\n\n ChartInternal.prototype.generateGetAreaPoints = function (areaIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n areaTargetsNum = areaIndices.__max__ + 1,\n x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = areaOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d); // fix posY not to overflow opposite quadrant\n\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 1 point that marks the area position\n\n\n return [[posX, offset], [posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, offset] // needed for compatibility\n ];\n };\n };\n\n ChartInternal.prototype.updateCircle = function (cx, cy) {\n var $$ = this;\n var mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle).data($$.lineOrScatterOrStanfordData.bind($$));\n var mainCircleEnter = mainCircle.enter().append(\"circle\").attr('shape-rendering', 'crispEdges').attr(\"class\", $$.classCircle.bind($$)).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"r\", $$.pointR.bind($$)).style(\"fill\", $$.isStanfordGraphType() ? $$.getStanfordPointColor.bind($$) : $$.color);\n $$.mainCircle = mainCircleEnter.merge(mainCircle).style(\"opacity\", $$.isStanfordGraphType() ? 1 : $$.initialOpacityForCircle.bind($$));\n mainCircle.exit().style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawCircle = function (cx, cy, withTransition, transition) {\n var $$ = this,\n selectedCircles = $$.main.selectAll('.' + CLASS.selectedCircle);\n return [(withTransition ? $$.mainCircle.transition(transition) : $$.mainCircle).style('opacity', this.opacityForCircle.bind($$)).style(\"fill\", $$.isStanfordGraphType() ? $$.getStanfordPointColor.bind($$) : $$.color).attr(\"cx\", cx).attr(\"cy\", cy), (withTransition ? selectedCircles.transition(transition) : selectedCircles).attr(\"cx\", cx).attr(\"cy\", cy)];\n };\n\n ChartInternal.prototype.circleX = function (d) {\n return d.x || d.x === 0 ? this.x(d.x) : null;\n };\n\n ChartInternal.prototype.updateCircleY = function () {\n var $$ = this,\n lineIndices,\n getPoints;\n\n if ($$.config.data_groups.length > 0) {\n lineIndices = $$.getShapeIndices($$.isLineType), getPoints = $$.generateGetLinePoints(lineIndices);\n\n $$.circleY = function (d, i) {\n return getPoints(d, i)[0][1];\n };\n } else {\n $$.circleY = function (d) {\n return $$.getYScale(d.id)(d.value);\n };\n }\n };\n\n ChartInternal.prototype.getCircles = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n };\n\n ChartInternal.prototype.expandCircles = function (i, id, reset) {\n var $$ = this,\n r = $$.pointExpandedR.bind($$);\n\n if (reset) {\n $$.unexpandCircles();\n }\n\n $$.getCircles(i, id).classed(CLASS.EXPANDED, true).attr('r', r);\n };\n\n ChartInternal.prototype.unexpandCircles = function (i) {\n var $$ = this,\n r = $$.pointR.bind($$);\n $$.getCircles(i).filter(function () {\n return $$.d3.select(this).classed(CLASS.EXPANDED);\n }).classed(CLASS.EXPANDED, false).attr('r', r);\n };\n\n ChartInternal.prototype.pointR = function (d) {\n var $$ = this,\n config = $$.config;\n return $$.isStepType(d) ? 0 : isFunction(config.point_r) ? config.point_r(d) : config.point_r;\n };\n\n ChartInternal.prototype.pointExpandedR = function (d) {\n var $$ = this,\n config = $$.config;\n\n if (config.point_focus_expand_enabled) {\n return isFunction(config.point_focus_expand_r) ? config.point_focus_expand_r(d) : config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75;\n } else {\n return $$.pointR(d);\n }\n };\n\n ChartInternal.prototype.pointSelectR = function (d) {\n var $$ = this,\n config = $$.config;\n return isFunction(config.point_select_r) ? config.point_select_r(d) : config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;\n };\n\n ChartInternal.prototype.isWithinCircle = function (that, r) {\n var d3 = this.d3,\n mouse = d3.mouse(that),\n d3_this = d3.select(that),\n cx = +d3_this.attr(\"cx\"),\n cy = +d3_this.attr(\"cy\");\n return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n };\n\n ChartInternal.prototype.isWithinStep = function (that, y) {\n return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n };\n\n ChartInternal.prototype.getCurrentWidth = function () {\n var $$ = this,\n config = $$.config;\n return config.size_width ? config.size_width : $$.getParentWidth();\n };\n\n ChartInternal.prototype.getCurrentHeight = function () {\n var $$ = this,\n config = $$.config,\n h = config.size_height ? config.size_height : $$.getParentHeight();\n return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1);\n };\n\n ChartInternal.prototype.getCurrentPaddingTop = function () {\n var $$ = this,\n config = $$.config,\n padding = isValue(config.padding_top) ? config.padding_top : 0;\n\n if ($$.title && $$.title.node()) {\n padding += $$.getTitlePadding();\n }\n\n return padding;\n };\n\n ChartInternal.prototype.getCurrentPaddingBottom = function () {\n var config = this.config;\n return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n };\n\n ChartInternal.prototype.getCurrentPaddingLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config;\n\n if (isValue(config.padding_left)) {\n return config.padding_left;\n } else if (config.axis_rotated) {\n return !config.axis_x_show || config.axis_x_inner ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n } else if (!config.axis_y_show || config.axis_y_inner) {\n // && !config.axis_rotated\n return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n } else {\n return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n }\n };\n\n ChartInternal.prototype.getCurrentPaddingRight = function () {\n var $$ = this,\n config = $$.config,\n padding = 0,\n defaultPadding = 10,\n legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n\n if (isValue(config.padding_right)) {\n padding = config.padding_right + 1; // 1 is needed not to hide tick line\n } else if (config.axis_rotated) {\n padding = defaultPadding + legendWidthOnRight;\n } else if (!config.axis_y2_show || config.axis_y2_inner) {\n // && !config.axis_rotated\n padding = 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n } else {\n padding = ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n }\n\n if ($$.colorScale && $$.colorScale.node()) {\n padding += $$.getColorScalePadding();\n }\n\n return padding;\n };\n\n ChartInternal.prototype.getParentRectValue = function (key) {\n var parent = this.selectChart.node(),\n v;\n\n while (parent && parent.tagName !== 'BODY') {\n try {\n v = parent.getBoundingClientRect()[key];\n } catch (e) {\n if (key === 'width') {\n // In IE in certain cases getBoundingClientRect\n // will cause an \"unspecified error\"\n v = parent.offsetWidth;\n }\n }\n\n if (v) {\n break;\n }\n\n parent = parent.parentNode;\n }\n\n return v;\n };\n\n ChartInternal.prototype.getParentWidth = function () {\n return this.getParentRectValue('width');\n };\n\n ChartInternal.prototype.getParentHeight = function () {\n var h = this.selectChart.style('height');\n return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n };\n\n ChartInternal.prototype.getSvgLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config,\n hasLeftAxisRect = config.axis_rotated || !config.axis_rotated && !config.axis_y_inner,\n leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n leftAxis = $$.main.select('.' + leftAxisClass).node(),\n svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {\n right: 0\n },\n chartRect = $$.selectChart.node().getBoundingClientRect(),\n hasArc = $$.hasArcType(),\n svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n return svgLeft > 0 ? svgLeft : 0;\n };\n\n ChartInternal.prototype.getAxisWidthByAxisId = function (id, withoutRecompute) {\n var $$ = this,\n position = $$.axis.getLabelPositionById(id);\n return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n };\n\n ChartInternal.prototype.getHorizontalAxisHeight = function (axisId) {\n var $$ = this,\n config = $$.config,\n h = 30;\n\n if (axisId === 'x' && !config.axis_x_show) {\n return 8;\n }\n\n if (axisId === 'x' && config.axis_x_height) {\n return config.axis_x_height;\n }\n\n if (axisId === 'y' && !config.axis_y_show) {\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n }\n\n if (axisId === 'y2' && !config.axis_y2_show) {\n return $$.rotated_padding_top;\n } // Calculate x axis height when tick rotated\n\n\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180);\n } // Calculate y axis height when tick rotated\n\n\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180);\n }\n\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n ChartInternal.prototype.initBrush = function (scale) {\n var $$ = this,\n d3 = $$.d3; // TODO: dynamically change brushY/brushX according to axis_rotated.\n\n $$.brush = ($$.config.axis_rotated ? d3.brushY() : d3.brushX()).on(\"brush\", function () {\n var event = d3.event.sourceEvent;\n\n if (event && event.type === \"zoom\") {\n return;\n }\n\n $$.redrawForBrush();\n }).on(\"end\", function () {\n var event = d3.event.sourceEvent;\n\n if (event && event.type === \"zoom\") {\n return;\n }\n\n if ($$.brush.empty() && event && event.type !== 'end') {\n $$.brush.clear();\n }\n });\n\n $$.brush.updateExtent = function () {\n var range = this.scale.range(),\n extent;\n\n if ($$.config.axis_rotated) {\n extent = [[0, range[0]], [$$.width2, range[1]]];\n } else {\n extent = [[range[0], 0], [range[1], $$.height2]];\n }\n\n this.extent(extent);\n return this;\n };\n\n $$.brush.updateScale = function (scale) {\n this.scale = scale;\n return this;\n };\n\n $$.brush.update = function (scale) {\n this.updateScale(scale || $$.subX).updateExtent();\n $$.context.select('.' + CLASS.brush).call(this);\n };\n\n $$.brush.clear = function () {\n $$.context.select('.' + CLASS.brush).call($$.brush.move, null);\n };\n\n $$.brush.selection = function () {\n return d3.brushSelection($$.context.select('.' + CLASS.brush).node());\n };\n\n $$.brush.selectionAsValue = function (selectionAsValue, withTransition) {\n var selection, brush;\n\n if (selectionAsValue) {\n if ($$.context) {\n selection = [this.scale(selectionAsValue[0]), this.scale(selectionAsValue[1])];\n brush = $$.context.select('.' + CLASS.brush);\n\n if (withTransition) {\n brush = brush.transition();\n }\n\n $$.brush.move(brush, selection);\n }\n\n return [];\n }\n\n selection = $$.brush.selection() || [0, 0];\n return [this.scale.invert(selection[0]), this.scale.invert(selection[1])];\n };\n\n $$.brush.empty = function () {\n var selection = $$.brush.selection();\n return !selection || selection[0] === selection[1];\n };\n\n return $$.brush.updateScale(scale);\n };\n\n ChartInternal.prototype.initSubchart = function () {\n var $$ = this,\n config = $$.config,\n context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n visibility = config.subchart_show ? 'visible' : 'hidden'; // set style\n\n context.style('visibility', visibility); // Define g for chart area\n\n context.append('g').attr(\"clip-path\", $$.clipPathForSubchart).attr('class', CLASS.chart); // Define g for bar chart area\n\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars); // Define g for line chart area\n\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines); // Add extent rect for Brush\n\n context.append(\"g\").attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.brush); // ATTENTION: This must be called AFTER chart added\n // Add Axis\n\n $$.axes.subx = context.append(\"g\").attr(\"class\", CLASS.axisX).attr(\"transform\", $$.getTranslate('subx')).attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis);\n };\n\n ChartInternal.prototype.initSubchartBrush = function () {\n var $$ = this; // Add extent rect for Brush\n\n $$.initBrush($$.subX).updateExtent();\n $$.context.select('.' + CLASS.brush).call($$.brush);\n };\n\n ChartInternal.prototype.updateTargetsForSubchart = function (targets) {\n var $$ = this,\n context = $$.context,\n config = $$.config,\n contextLineEnter,\n contextLine,\n contextBarEnter,\n contextBar,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$);\n\n if (config.subchart_show) {\n //-- Bar --//\n contextBar = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets);\n contextBarEnter = contextBar.enter().append('g').style('opacity', 0);\n contextBarEnter.merge(contextBar).attr('class', classChartBar); // Bars for each data\n\n contextBarEnter.append('g').attr(\"class\", classBars); //-- Line --//\n\n contextLine = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets);\n contextLineEnter = contextLine.enter().append('g').style('opacity', 0);\n contextLineEnter.merge(contextLine).attr('class', classChartLine); // Lines for each data\n\n contextLineEnter.append(\"g\").attr(\"class\", classLines); // Area\n\n contextLineEnter.append(\"g\").attr(\"class\", classAreas); //-- Brush --//\n\n context.selectAll('.' + CLASS.brush + ' rect').attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n }\n };\n\n ChartInternal.prototype.updateBarForSubchart = function (durationForExit) {\n var $$ = this;\n var contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data($$.barData.bind($$));\n var contextBarEnter = contextBar.enter().append('path').attr(\"class\", $$.classBar.bind($$)).style(\"stroke\", 'none').style(\"fill\", $$.color);\n contextBar.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextBar = contextBarEnter.merge(contextBar).style(\"opacity\", $$.initialOpacity.bind($$));\n };\n\n ChartInternal.prototype.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar).attr('d', drawBarOnSub).style('opacity', 1);\n };\n\n ChartInternal.prototype.updateLineForSubchart = function (durationForExit) {\n var $$ = this;\n var contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n var contextLineEnter = contextLine.enter().append('path').attr('class', $$.classLine.bind($$)).style('stroke', $$.color);\n contextLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextLine = contextLineEnter.merge(contextLine).style(\"opacity\", $$.initialOpacity.bind($$));\n };\n\n ChartInternal.prototype.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine).attr(\"d\", drawLineOnSub).style('opacity', 1);\n };\n\n ChartInternal.prototype.updateAreaForSubchart = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n var contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n var contextAreaEnter = contextArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\n return 0;\n });\n contextArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextArea = contextAreaEnter.merge(contextArea).style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea).attr(\"d\", drawAreaOnSub).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity);\n };\n\n ChartInternal.prototype.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n drawAreaOnSub,\n drawBarOnSub,\n drawLineOnSub;\n $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden'); // subchart\n\n if (config.subchart_show) {\n // reflect main chart to extent on subchart if zoomed\n if (d3.event && d3.event.type === 'zoom') {\n $$.brush.selectionAsValue($$.x.orgDomain());\n } // update subchart elements if needed\n\n\n if (withSubchart) {\n // extent rect\n if (!$$.brush.empty()) {\n $$.brush.selectionAsValue($$.x.orgDomain());\n } // setup drawer - MEMO: this must be called after axis updated\n\n\n drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n drawBarOnSub = $$.generateDrawBar(barIndices, true);\n drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n $$.updateBarForSubchart(duration);\n $$.updateLineForSubchart(duration);\n $$.updateAreaForSubchart(duration);\n $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n }\n }\n };\n\n ChartInternal.prototype.redrawForBrush = function () {\n var $$ = this,\n x = $$.x,\n d3 = $$.d3,\n s;\n $$.redraw({\n withTransition: false,\n withY: $$.config.zoom_rescale,\n withSubchart: false,\n withUpdateXDomain: true,\n withEventRect: false,\n withDimension: false\n }); // update zoom transation binded to event rect\n\n s = d3.event.selection || $$.brush.scale.range();\n $$.main.select('.' + CLASS.eventRect).call($$.zoom.transform, d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0));\n $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n };\n\n ChartInternal.prototype.transformContext = function (withTransition, transitions) {\n var $$ = this,\n subXAxis;\n\n if (transitions && transitions.axisSubX) {\n subXAxis = transitions.axisSubX;\n } else {\n subXAxis = $$.context.select('.' + CLASS.axisX);\n\n if (withTransition) {\n subXAxis = subXAxis.transition();\n }\n }\n\n $$.context.attr(\"transform\", $$.getTranslate('context'));\n subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n };\n\n ChartInternal.prototype.getDefaultSelection = function () {\n var $$ = this,\n config = $$.config,\n selection = isFunction(config.axis_x_selection) ? config.axis_x_selection($$.getXDomain($$.data.targets)) : config.axis_x_selection;\n\n if ($$.isTimeSeries()) {\n selection = [$$.parseDate(selection[0]), $$.parseDate(selection[1])];\n }\n\n return selection;\n };\n\n ChartInternal.prototype.initText = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartTexts);\n $$.mainText = $$.d3.selectAll([]);\n };\n\n ChartInternal.prototype.updateTargetsForText = function (targets) {\n var $$ = this,\n classChartText = $$.classChartText.bind($$),\n classTexts = $$.classTexts.bind($$),\n classFocus = $$.classFocus.bind($$);\n var mainText = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText).data(targets);\n var mainTextEnter = mainText.enter().append('g').attr('class', classChartText).style('opacity', 0).style(\"pointer-events\", \"none\");\n mainTextEnter.append('g').attr('class', classTexts);\n mainTextEnter.merge(mainText).attr('class', function (d) {\n return classChartText(d) + classFocus(d);\n });\n };\n\n ChartInternal.prototype.updateText = function (xForText, yForText, durationForExit) {\n var $$ = this,\n config = $$.config,\n barOrLineData = $$.barOrLineData.bind($$),\n classText = $$.classText.bind($$);\n var mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text).data(barOrLineData);\n var mainTextEnter = mainText.enter().append('text').attr(\"class\", classText).attr('text-anchor', function (d) {\n return config.axis_rotated ? d.value < 0 ? 'end' : 'start' : 'middle';\n }).style(\"stroke\", 'none').attr('x', xForText).attr('y', yForText).style(\"fill\", function (d) {\n return $$.color(d);\n }).style(\"fill-opacity\", 0);\n $$.mainText = mainTextEnter.merge(mainText).text(function (d, i, j) {\n return $$.dataLabelFormat(d.id)(d.value, d.id, i, j);\n });\n mainText.exit().transition().duration(durationForExit).style('fill-opacity', 0).remove();\n };\n\n ChartInternal.prototype.redrawText = function (xForText, yForText, forFlow, withTransition, transition) {\n return [(withTransition ? this.mainText.transition(transition) : this.mainText).attr('x', xForText).attr('y', yForText).style(\"fill\", this.color).style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))];\n };\n\n ChartInternal.prototype.getTextRect = function (text, cls, element) {\n var dummy = this.d3.select('body').append('div').classed('c3', true),\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n font = this.d3.select(element).style('font'),\n rect;\n svg.selectAll('.dummy').data([text]).enter().append('text').classed(cls ? cls : \"\", true).style('font', font).text(text).each(function () {\n rect = this.getBoundingClientRect();\n });\n dummy.remove();\n return rect;\n };\n\n ChartInternal.prototype.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n var $$ = this,\n getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n getBarPoints = $$.generateGetBarPoints(barIndices, false),\n getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n getter = forX ? $$.getXForText : $$.getYForText;\n return function (d, i) {\n var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n return getter.call($$, getPoints(d, i), d, this);\n };\n };\n\n ChartInternal.prototype.getXForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n xPos,\n padding;\n\n if ($$.config.axis_rotated) {\n padding = $$.isBarType(d) ? 4 : 6;\n xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n } else {\n xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n } // show labels regardless of the domain if value is null\n\n\n if (d.value === null) {\n if (xPos > $$.width) {\n xPos = $$.width - box.width;\n } else if (xPos < 0) {\n xPos = 4;\n }\n }\n\n return xPos;\n };\n\n ChartInternal.prototype.getYForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n yPos;\n\n if ($$.config.axis_rotated) {\n yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n } else {\n yPos = points[2][1];\n\n if (d.value < 0 || d.value === 0 && !$$.hasPositiveValue) {\n yPos += box.height;\n\n if ($$.isBarType(d) && $$.isSafari()) {\n yPos -= 3;\n } else if (!$$.isBarType(d) && $$.isChrome()) {\n yPos += 3;\n }\n } else {\n yPos += $$.isBarType(d) ? -3 : -6;\n }\n } // show labels regardless of the domain if value is null\n\n\n if (d.value === null && !$$.config.axis_rotated) {\n if (yPos < box.height) {\n yPos = box.height;\n } else if (yPos > this.height) {\n yPos = this.height - 4;\n }\n }\n\n return yPos;\n };\n\n ChartInternal.prototype.initTitle = function () {\n var $$ = this;\n $$.title = $$.svg.append(\"text\").text($$.config.title_text).attr(\"class\", $$.CLASS.title);\n };\n\n ChartInternal.prototype.redrawTitle = function () {\n var $$ = this;\n $$.title.attr(\"x\", $$.xForTitle.bind($$)).attr(\"y\", $$.yForTitle.bind($$));\n };\n\n ChartInternal.prototype.xForTitle = function () {\n var $$ = this,\n config = $$.config,\n position = config.title_position || 'left',\n x;\n\n if (position.indexOf('right') >= 0) {\n x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n } else if (position.indexOf('center') >= 0) {\n x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n } else {\n // left\n x = config.title_padding.left;\n }\n\n return x;\n };\n\n ChartInternal.prototype.yForTitle = function () {\n var $$ = this;\n return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n };\n\n ChartInternal.prototype.getTitlePadding = function () {\n var $$ = this;\n return $$.yForTitle() + $$.config.title_padding.bottom;\n };\n\n function powerOfTen(d) {\n return d / Math.pow(10, Math.ceil(Math.log(d) / Math.LN10 - 1e-12)) === 1;\n }\n\n ChartInternal.prototype.drawColorScale = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n target = $$.data.targets[0],\n barWidth,\n barHeight,\n axis,\n points,\n legendAxis,\n axisScale,\n inverseScale,\n height;\n barWidth = !isNaN(config.stanford_scaleWidth) ? config.stanford_scaleWidth : 20;\n barHeight = 5;\n\n if (barHeight < 0 || barWidth < 0) {\n throw Error(\"Colorscale's barheight and barwidth must be greater than 0.\");\n }\n\n height = $$.height - config.stanford_padding.bottom - config.stanford_padding.top;\n points = d3.range(config.stanford_padding.bottom, height, barHeight);\n inverseScale = d3.scaleSequential(target.colors).domain([points[points.length - 1], points[0]]);\n\n if ($$.colorScale) {\n $$.colorScale.remove();\n }\n\n $$.colorScale = $$.svg.append(\"g\").attr('width', 50).attr('height', height).attr('class', CLASS.colorScale);\n $$.colorScale.append('g').attr('transform', \"translate(0, \".concat(config.stanford_padding.top, \")\")).selectAll('bars').data(points).enter().append('rect').attr('y', function (d, i) {\n return i * barHeight;\n }).attr('x', 0).attr('width', barWidth).attr('height', barHeight).attr('fill', function (d) {\n return inverseScale(d);\n }); // Legend Axis\n\n axisScale = d3.scaleLog().domain([target.minEpochs, target.maxEpochs]).range([points[0] + config.stanford_padding.top + points[points.length - 1] + barHeight - 1, points[0] + config.stanford_padding.top]);\n legendAxis = d3.axisRight(axisScale);\n\n if (config.stanford_scaleFormat === 'pow10') {\n legendAxis.tickValues([1, 10, 100, 1000, 10000, 100000, 1000000, 10000000]);\n } else if (isFunction(config.stanford_scaleFormat)) {\n legendAxis.tickFormat(config.stanford_scaleFormat);\n } else {\n legendAxis.tickFormat(d3.format(\"d\"));\n }\n\n if (isFunction(config.stanford_scaleValues)) {\n legendAxis.tickValues(config.stanford_scaleValues(target.minEpochs, target.maxEpochs));\n } // Draw Axis\n\n\n axis = $$.colorScale.append(\"g\").attr(\"class\", \"legend axis\").attr(\"transform\", \"translate(\".concat(barWidth, \",0)\")).call(legendAxis);\n\n if (config.stanford_scaleFormat === 'pow10') {\n axis.selectAll(\".tick text\").text(null).filter(powerOfTen).text(10).append(\"tspan\").attr(\"dy\", \"-.7em\") // https://bl.ocks.org/mbostock/6738229\n .text(function (d) {\n return Math.round(Math.log(d) / Math.LN10);\n });\n }\n\n $$.colorScale.attr('transform', \"translate(\".concat($$.currentWidth - $$.xForColorScale(), \", 0)\"));\n };\n\n ChartInternal.prototype.xForColorScale = function () {\n var $$ = this;\n return $$.config.stanford_padding.right + $$.colorScale.node().getBBox().width;\n };\n\n ChartInternal.prototype.getColorScalePadding = function () {\n var $$ = this;\n return $$.xForColorScale() + $$.config.stanford_padding.left + 20;\n };\n\n ChartInternal.prototype.isStanfordGraphType = function () {\n var $$ = this;\n return $$.config.data_type === 'stanford';\n };\n\n ChartInternal.prototype.initStanfordData = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n target = $$.data.targets[0],\n epochs,\n maxEpochs,\n minEpochs; // Make larger values appear on top\n\n target.values.sort(compareEpochs); // Get array of epochs\n\n epochs = target.values.map(function (a) {\n return a.epochs;\n });\n minEpochs = !isNaN(config.stanford_scaleMin) ? config.stanford_scaleMin : d3.min(epochs);\n maxEpochs = !isNaN(config.stanford_scaleMax) ? config.stanford_scaleMax : d3.max(epochs);\n\n if (minEpochs > maxEpochs) {\n throw Error(\"Number of minEpochs has to be smaller than maxEpochs\");\n }\n\n target.colors = isFunction(config.stanford_colors) ? config.stanford_colors : d3.interpolateHslLong(d3.hsl(250, 1, 0.5), d3.hsl(0, 1, 0.5));\n target.colorscale = d3.scaleSequentialLog(target.colors).domain([minEpochs, maxEpochs]);\n target.minEpochs = minEpochs;\n target.maxEpochs = maxEpochs;\n };\n\n ChartInternal.prototype.getStanfordPointColor = function (d) {\n var $$ = this,\n target = $$.data.targets[0];\n return target.colorscale(d.epochs);\n }; // http://jsfiddle.net/Xotic750/KtzLq/\n\n\n ChartInternal.prototype.getCentroid = function (points) {\n var area = getRegionArea(points);\n var x = 0,\n y = 0,\n i,\n j,\n f,\n point1,\n point2;\n\n for (i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {\n point1 = points[i];\n point2 = points[j];\n f = point1.x * point2.y - point2.x * point1.y;\n x += (point1.x + point2.x) * f;\n y += (point1.y + point2.y) * f;\n }\n\n f = area * 6;\n return {\n x: x / f,\n y: y / f\n };\n };\n\n ChartInternal.prototype.getStanfordTooltipTitle = function (d) {\n var $$ = this,\n labelX = $$.axis.getLabelText('x'),\n labelY = $$.axis.getLabelText('y');\n return \"\\n \".concat(labelX ? sanitise(labelX) : \"x\", \"\").concat(d.x, \"\\n \").concat(labelY ? sanitise(labelY) : \"y\", \"\").concat(d.value, \"\\n \");\n };\n\n ChartInternal.prototype.countEpochsInRegion = function (region) {\n var $$ = this,\n target = $$.data.targets[0],\n total,\n count;\n total = target.values.reduce(function (accumulator, currentValue) {\n return accumulator + Number(currentValue.epochs);\n }, 0);\n count = target.values.reduce(function (accumulator, currentValue) {\n if (pointInRegion(currentValue, region)) {\n return accumulator + Number(currentValue.epochs);\n }\n\n return accumulator;\n }, 0);\n return {\n value: count,\n percentage: count !== 0 ? (count / total * 100).toFixed(1) : 0\n };\n };\n\n var getRegionArea = function getRegionArea(points) {\n // thanks to: https://stackoverflow.com/questions/16282330/find-centerpoint-of-polygon-in-javascript\n var area = 0,\n i,\n j,\n point1,\n point2;\n\n for (i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {\n point1 = points[i];\n point2 = points[j];\n area += point1.x * point2.y;\n area -= point1.y * point2.x;\n }\n\n area /= 2;\n return area;\n };\n var pointInRegion = function pointInRegion(point, region) {\n // thanks to: http://bl.ocks.org/bycoffe/5575904\n // ray-casting algorithm based on\n // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n var xi,\n yi,\n yj,\n xj,\n intersect,\n x = point.x,\n y = point.value,\n inside = false;\n\n for (var i = 0, j = region.length - 1; i < region.length; j = i++) {\n xi = region[i].x;\n yi = region[i].y;\n xj = region[j].x;\n yj = region[j].y;\n intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n\n if (intersect) {\n inside = !inside;\n }\n }\n\n return inside;\n };\n var compareEpochs = function compareEpochs(a, b) {\n if (a.epochs < b.epochs) {\n return -1;\n }\n\n if (a.epochs > b.epochs) {\n return 1;\n }\n\n return 0;\n };\n\n ChartInternal.prototype.initStanfordElements = function () {\n var $$ = this; // Avoid blocking eventRect\n\n $$.stanfordElements = $$.main.select('.' + CLASS.chart).append('g').attr('class', CLASS.stanfordElements);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordLines);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordTexts);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordRegions);\n };\n\n ChartInternal.prototype.updateStanfordElements = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n stanfordLine,\n stanfordLineEnter,\n stanfordRegion,\n stanfordRegionEnter,\n stanfordText,\n stanfordTextEnter,\n xvCustom = $$.xvCustom.bind($$),\n yvCustom = $$.yvCustom.bind($$),\n countPointsInRegion = $$.countEpochsInRegion.bind($$); // Stanford-Lines\n\n stanfordLine = main.select('.' + CLASS.stanfordLines).style('shape-rendering', 'geometricprecision').selectAll('.' + CLASS.stanfordLine).data(config.stanford_lines); // enter\n\n stanfordLineEnter = stanfordLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordLine + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordLineEnter.append('line').attr(\"x1\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y1') : xvCustom(d, 'value_x1');\n }).attr(\"x2\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y2') : xvCustom(d, 'value_x2');\n }).attr(\"y1\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x1') : yvCustom(d, 'value_y1');\n }).attr(\"y2\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x2') : yvCustom(d, 'value_y2');\n }).style(\"opacity\", 0); // update\n\n $$.stanfordLines = stanfordLineEnter.merge(stanfordLine);\n $$.stanfordLines.select('line').transition().duration(duration).attr(\"x1\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y1') : xvCustom(d, 'value_x1');\n }).attr(\"x2\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y2') : xvCustom(d, 'value_x2');\n }).attr(\"y1\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x1') : yvCustom(d, 'value_y1');\n }).attr(\"y2\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x2') : yvCustom(d, 'value_y2');\n }).style(\"opacity\", 1); // exit\n\n stanfordLine.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Stanford-Text\n\n stanfordText = main.select('.' + CLASS.stanfordTexts).selectAll('.' + CLASS.stanfordText).data(config.stanford_texts); // enter\n\n stanfordTextEnter = stanfordText.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordText + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordTextEnter.append('text').attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'y') : xvCustom(d, 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'x') : yvCustom(d, 'y');\n }).style(\"opacity\", 0); // update\n\n $$.stanfordTexts = stanfordTextEnter.merge(stanfordText);\n $$.stanfordTexts.select('text').transition().duration(duration).attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'y') : xvCustom(d, 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'x') : yvCustom(d, 'y');\n }).text(function (d) {\n return d.content;\n }).style(\"opacity\", 1); // exit\n\n stanfordText.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Stanford-Regions\n\n stanfordRegion = main.select('.' + CLASS.stanfordRegions).selectAll('.' + CLASS.stanfordRegion).data(config.stanford_regions); // enter\n\n stanfordRegionEnter = stanfordRegion.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordRegion + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordRegionEnter.append('polygon').attr(\"points\", function (d) {\n return d.points.map(function (value) {\n return [config.axis_rotated ? yvCustom(value, 'y') : xvCustom(value, 'x'), config.axis_rotated ? xvCustom(value, 'x') : yvCustom(value, 'y')].join(\",\");\n }).join(\" \");\n }).style(\"opacity\", 0);\n stanfordRegionEnter.append('text').attr(\"x\", function (d) {\n return $$.getCentroid(d.points).x;\n }).attr(\"y\", function (d) {\n return $$.getCentroid(d.points).y;\n }).style(\"opacity\", 0); // update\n\n $$.stanfordRegions = stanfordRegionEnter.merge(stanfordRegion);\n $$.stanfordRegions.select('polygon').transition().duration(duration).attr(\"points\", function (d) {\n return d.points.map(function (value) {\n return [config.axis_rotated ? yvCustom(value, 'y') : xvCustom(value, 'x'), config.axis_rotated ? xvCustom(value, 'x') : yvCustom(value, 'y')].join(\",\");\n }).join(\" \");\n }).style(\"opacity\", function (d) {\n return d.opacity ? d.opacity : 0.2;\n });\n $$.stanfordRegions.select('text').transition().duration(duration).attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom($$.getCentroid(d.points), 'y') : xvCustom($$.getCentroid(d.points), 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom($$.getCentroid(d.points), 'x') : yvCustom($$.getCentroid(d.points), 'y');\n }).text(function (d) {\n if (d.text) {\n var value, percentage, temp;\n\n if ($$.isStanfordGraphType()) {\n temp = countPointsInRegion(d.points);\n value = temp.value;\n percentage = temp.percentage;\n }\n\n return d.text(value, percentage);\n }\n\n return \"\";\n }).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").style(\"opacity\", 1); // exit\n\n stanfordRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.initTooltip = function () {\n var $$ = this,\n config = $$.config,\n i;\n $$.tooltip = $$.selectChart.style(\"position\", \"relative\").append(\"div\").attr('class', CLASS.tooltipContainer).style(\"position\", \"absolute\").style(\"pointer-events\", \"none\").style(\"display\", \"none\"); // Show tooltip if needed\n\n if (config.tooltip_init_show) {\n if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n\n for (i = 0; i < $$.data.targets[0].values.length; i++) {\n if ($$.data.targets[0].values[i].x - config.tooltip_init_x === 0) {\n break;\n }\n }\n\n config.tooltip_init_x = i;\n }\n\n $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n return $$.addName(d.values[config.tooltip_init_x]);\n }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n $$.tooltip.style(\"top\", config.tooltip_init_position.top).style(\"left\", config.tooltip_init_position.left).style(\"display\", \"block\");\n }\n };\n\n ChartInternal.prototype.getTooltipSortFunction = function () {\n var $$ = this,\n config = $$.config;\n\n if (config.data_groups.length === 0 || config.tooltip_order !== undefined) {\n // if data are not grouped or if an order is specified\n // for the tooltip values we sort them by their values\n var order = config.tooltip_order;\n\n if (order === undefined) {\n order = config.data_order;\n }\n\n var valueOf = function valueOf(obj) {\n return obj ? obj.value : null;\n }; // if data are not grouped, we sort them by their value\n\n\n if (isString(order) && order.toLowerCase() === 'asc') {\n return function (a, b) {\n return valueOf(a) - valueOf(b);\n };\n } else if (isString(order) && order.toLowerCase() === 'desc') {\n return function (a, b) {\n return valueOf(b) - valueOf(a);\n };\n } else if (isFunction(order)) {\n // if the function is from data_order we need\n // to wrap the returned function in order to format\n // the sorted value to the expected format\n var sortFunction = order;\n\n if (config.tooltip_order === undefined) {\n sortFunction = function sortFunction(a, b) {\n return order(a ? {\n id: a.id,\n values: [a]\n } : null, b ? {\n id: b.id,\n values: [b]\n } : null);\n };\n }\n\n return sortFunction;\n } else if (isArray(order)) {\n return function (a, b) {\n return order.indexOf(a.id) - order.indexOf(b.id);\n };\n }\n } else {\n // if data are grouped, we follow the order of grouped targets\n var ids = $$.orderTargets($$.data.targets).map(function (i) {\n return i.id;\n }); // if it was either asc or desc we need to invert the order\n // returned by orderTargets\n\n if ($$.isOrderAsc() || $$.isOrderDesc()) {\n ids = ids.reverse();\n }\n\n return function (a, b) {\n return ids.indexOf(a.id) - ids.indexOf(b.id);\n };\n }\n };\n\n ChartInternal.prototype.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n var $$ = this,\n config = $$.config,\n titleFormat = config.tooltip_format_title || defaultTitleFormat,\n nameFormat = config.tooltip_format_name || function (name) {\n return name;\n },\n valueFormat = config.tooltip_format_value || defaultValueFormat,\n text,\n i,\n title,\n value,\n name,\n bgcolor;\n\n var tooltipSortFunction = this.getTooltipSortFunction();\n\n if (tooltipSortFunction) {\n d.sort(tooltipSortFunction);\n }\n\n for (i = 0; i < d.length; i++) {\n if (!(d[i] && (d[i].value || d[i].value === 0))) {\n continue;\n }\n\n if ($$.isStanfordGraphType()) {\n // Custom tooltip for stanford plots\n if (!text) {\n title = $$.getStanfordTooltipTitle(d[i]);\n text = \"\" + title;\n }\n\n bgcolor = $$.getStanfordPointColor(d[i]);\n name = sanitise(config.data_epochs); // Epochs key name\n\n value = d[i].epochs;\n } else {\n // Regular tooltip\n if (!text) {\n title = sanitise(titleFormat ? titleFormat(d[i].x, d[i].index) : d[i].x);\n text = \"
\" + (title || title === 0 ? \"\" : \"\");\n }\n\n value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n\n if (value !== undefined) {\n // Skip elements when their name is set to null\n if (d[i].name === null) {\n continue;\n }\n\n name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n }\n }\n\n if (value !== undefined) {\n text += \"\";\n text += \"\";\n text += \"\";\n text += \"\";\n }\n }\n\n return text + \"
\" + title + \"
\" + name + \"\" + value + \"
\";\n };\n\n ChartInternal.prototype.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n var forArc = $$.hasArcType(),\n mouse = d3.mouse(element); // Determin tooltip position\n\n if (forArc) {\n tooltipLeft = ($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2 + mouse[0];\n tooltipTop = ($$.hasType('gauge') ? $$.height : $$.height / 2) + mouse[1] + 20;\n } else {\n svgLeft = $$.getSvgLeft(true);\n\n if (config.axis_rotated) {\n tooltipLeft = svgLeft + mouse[0] + 100;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = $$.x(dataToShow[0].x) + 20;\n } else {\n tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = mouse[1] + 15;\n }\n\n if (tooltipRight > chartRight) {\n // 20 is needed for Firefox to keep tooltip width\n tooltipLeft -= tooltipRight - chartRight + 20;\n }\n\n if (tooltipTop + tHeight > $$.currentHeight) {\n tooltipTop -= tHeight + 30;\n }\n }\n\n if (tooltipTop < 0) {\n tooltipTop = 0;\n }\n\n return {\n top: tooltipTop,\n left: tooltipLeft\n };\n };\n\n ChartInternal.prototype.showTooltip = function (selectedData, element) {\n var $$ = this,\n config = $$.config;\n var tWidth, tHeight, position;\n var forArc = $$.hasArcType(),\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n positionFunction = config.tooltip_position || ChartInternal.prototype.tooltipPosition;\n\n if (dataToShow.length === 0 || !config.tooltip_show) {\n return;\n }\n\n $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\"); // Get tooltip dimensions\n\n tWidth = $$.tooltip.property('offsetWidth');\n tHeight = $$.tooltip.property('offsetHeight');\n position = positionFunction.call(this, dataToShow, tWidth, tHeight, element); // Set tooltip\n\n $$.tooltip.style(\"top\", position.top + \"px\").style(\"left\", position.left + 'px');\n };\n\n ChartInternal.prototype.hideTooltip = function () {\n this.tooltip.style(\"display\", \"none\");\n };\n\n ChartInternal.prototype.setTargetType = function (targetIds, type) {\n var $$ = this,\n config = $$.config;\n $$.mapToTargetIds(targetIds).forEach(function (id) {\n $$.withoutFadeIn[id] = type === config.data_types[id];\n config.data_types[id] = type;\n });\n\n if (!targetIds) {\n config.data_type = type;\n }\n };\n\n ChartInternal.prototype.hasType = function (type, targets) {\n var $$ = this,\n types = $$.config.data_types,\n has = false;\n targets = targets || $$.data.targets;\n\n if (targets && targets.length) {\n targets.forEach(function (target) {\n var t = types[target.id];\n\n if (t && t.indexOf(type) >= 0 || !t && type === 'line') {\n has = true;\n }\n });\n } else if (Object.keys(types).length) {\n Object.keys(types).forEach(function (id) {\n if (types[id] === type) {\n has = true;\n }\n });\n } else {\n has = $$.config.data_type === type;\n }\n\n return has;\n };\n\n ChartInternal.prototype.hasArcType = function (targets) {\n return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n };\n\n ChartInternal.prototype.isLineType = function (d) {\n var config = this.config,\n id = isString(d) ? d : d.id;\n return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isStepType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isSplineType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isAreaType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isBarType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'bar';\n };\n\n ChartInternal.prototype.isScatterType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'scatter';\n };\n\n ChartInternal.prototype.isStanfordType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'stanford';\n };\n\n ChartInternal.prototype.isScatterOrStanfordType = function (d) {\n return this.isScatterType(d) || this.isStanfordType(d);\n };\n\n ChartInternal.prototype.isPieType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'pie';\n };\n\n ChartInternal.prototype.isGaugeType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'gauge';\n };\n\n ChartInternal.prototype.isDonutType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'donut';\n };\n\n ChartInternal.prototype.isArcType = function (d) {\n return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n };\n\n ChartInternal.prototype.lineData = function (d) {\n return this.isLineType(d) ? [d] : [];\n };\n\n ChartInternal.prototype.arcData = function (d) {\n return this.isArcType(d.data) ? [d] : [];\n };\n /* not used\n function scatterData(d) {\n return isScatterType(d) ? d.values : [];\n }\n */\n\n\n ChartInternal.prototype.barData = function (d) {\n return this.isBarType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.lineOrScatterOrStanfordData = function (d) {\n return this.isLineType(d) || this.isScatterType(d) || this.isStanfordType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.barOrLineData = function (d) {\n return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.isSafari = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n };\n\n ChartInternal.prototype.isChrome = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Chrome') >= 0;\n };\n\n ChartInternal.prototype.initZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n startEvent;\n $$.zoom = d3.zoom().on(\"start\", function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n }\n\n startEvent = e;\n config.zoom_onzoomstart.call($$.api, e);\n }).on(\"zoom\", function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n }\n\n $$.redrawForZoom();\n config.zoom_onzoom.call($$.api, $$.x.orgDomain());\n }).on('end', function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n } // if click, do nothing. otherwise, click interaction will be canceled.\n\n\n if (e && startEvent.clientX === e.clientX && startEvent.clientY === e.clientY) {\n return;\n }\n\n config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n });\n\n $$.zoom.updateDomain = function () {\n if (d3.event && d3.event.transform) {\n $$.x.domain(d3.event.transform.rescaleX($$.subX).domain());\n }\n\n return this;\n };\n\n $$.zoom.updateExtent = function () {\n this.scaleExtent([1, Infinity]).translateExtent([[0, 0], [$$.width, $$.height]]).extent([[0, 0], [$$.width, $$.height]]);\n return this;\n };\n\n $$.zoom.update = function () {\n return this.updateExtent().updateDomain();\n };\n\n return $$.zoom.updateExtent();\n };\n\n ChartInternal.prototype.zoomTransform = function (range) {\n var $$ = this,\n s = [$$.x(range[0]), $$.x(range[1])];\n return $$.d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0);\n };\n\n ChartInternal.prototype.initDragZoom = function () {\n var $$ = this;\n var d3 = $$.d3;\n var config = $$.config;\n var context = $$.context = $$.svg;\n var brushXPos = $$.margin.left + 20.5;\n var brushYPos = $$.margin.top + 0.5;\n\n if (!(config.zoom_type === 'drag' && config.zoom_enabled)) {\n return;\n }\n\n var getZoomedDomain = function getZoomedDomain(selection) {\n return selection && selection.map(function (x) {\n return $$.x.invert(x);\n });\n };\n\n var brush = $$.dragZoomBrush = d3.brushX().on(\"start\", function () {\n $$.api.unzoom();\n $$.svg.select(\".\" + CLASS.dragZoom).classed(\"disabled\", false);\n config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n }).on(\"brush\", function () {\n config.zoom_onzoom.call($$.api, getZoomedDomain(d3.event.selection));\n }).on(\"end\", function () {\n if (d3.event.selection == null) {\n return;\n }\n\n var zoomedDomain = getZoomedDomain(d3.event.selection);\n\n if (!config.zoom_disableDefaultBehavior) {\n $$.api.zoom(zoomedDomain);\n }\n\n $$.svg.select(\".\" + CLASS.dragZoom).classed(\"disabled\", true);\n config.zoom_onzoomend.call($$.api, zoomedDomain);\n });\n context.append(\"g\").classed(CLASS.dragZoom, true).attr(\"clip-path\", $$.clipPath).attr(\"transform\", \"translate(\" + brushXPos + \",\" + brushYPos + \")\").call(brush);\n };\n\n ChartInternal.prototype.getZoomDomain = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n return [min, max];\n };\n\n ChartInternal.prototype.redrawForZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n zoom = $$.zoom,\n x = $$.x;\n\n if (!config.zoom_enabled) {\n return;\n }\n\n if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n return;\n }\n\n zoom.update();\n\n if (config.zoom_disableDefaultBehavior) {\n return;\n }\n\n if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n }\n\n $$.redraw({\n withTransition: false,\n withY: config.zoom_rescale,\n withSubchart: false,\n withEventRect: false,\n withDimension: false\n });\n\n if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'mousemove') {\n $$.cancelClick = true;\n }\n };\n\n return c3;\n\n}));\n","export function testObject(input) {\n if (input !== null && typeof input.getTime === 'function' && !isNaN(input.getTime())) {\n return true;\n }\n return false;\n}\n\nexport function testString(input) {\n const ISO_8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n return ISO_8601.test(input);\n}\n\nexport default function (input) {\n if (typeof input === 'object') {\n return testObject(input);\n } else if (typeof input === 'string') {\n return testString(input);\n }\n return false;\n}\n","// Modifiers\nimport * as append from './modifiers/append';\nimport * as del from './modifiers/delete';\nimport * as filter from './modifiers/filter';\nimport * as insert from './modifiers/insert';\nimport * as select from './modifiers/select';\nimport * as sort from './modifiers/sort';\nimport * as update from './modifiers/update';\n\n// Utils\nimport analyses from './utils/analyses';\nimport { extend } from '../utils/extend';\nimport parsers from './utils/parsers';\n\nexport const Dataset = function (config = {}) {\n if (this instanceof Dataset === false) {\n return new Dataset(config);\n }\n\n this.matrix = [\n ['Index']\n ];\n this.meta = {\n type: undefined\n };\n this.config = config;\n}\n\nDataset.prototype.data = function (arr) {\n if (!arguments.length) return this.matrix;\n this.matrix = (arr instanceof Array ? arr : null);\n return this;\n};\n\nDataset.prototype.set = function (coords, value) {\n if (arguments.length < 2 || coords.length < 2) {\n throw Error('Incorrect arguments provided for #set method');\n }\n\n var colIndex = 'number' === typeof coords[0] ? coords[0] : this.matrix[0].indexOf(coords[0]),\n rowIndex = 'number' === typeof coords[1] ? coords[1] : select.selectColumn.call(this, 0).indexOf(coords[1]);\n\n var colResult = select.selectColumn.call(this, coords[0]),\n rowResult = select.selectRow.call(this, coords[1]);\n\n // Column doesn't exist, create and reset colIndex\n if (colResult.length < 1) {\n append.appendColumn.call(this, String(coords[0]));\n colIndex = this.matrix[0].length - 1;\n }\n\n // Row doesn't exist, create and reset rowIndex\n if (rowResult.length < 1) {\n append.appendRow.call(this, String(coords[1]));\n rowIndex = this.matrix.length - 1;\n }\n\n // Set provided value\n this.matrix[ rowIndex ][ colIndex ] = value;\n return this;\n};\n\nDataset.prototype.type = function(str){\n if (!arguments.length) return this.meta['type'];\n this.meta['type'] = (str ? String(str) : undefined);\n return this;\n};\n\nextend(Dataset.prototype, append);\nextend(Dataset.prototype, del);\nextend(Dataset.prototype, filter);\nextend(Dataset.prototype, insert);\nextend(Dataset.prototype, select);\nextend(Dataset.prototype, sort);\nextend(Dataset.prototype, update);\nextend(Dataset.prototype, analyses);\nDataset.parser = parsers(Dataset);\n\nexport default Dataset;\n","import { each } from '../../utils/each';\nimport { extend } from '../../utils/extend';\n\nfunction average(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0,\n avg = null;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum / set.length;\n}\n\nfunction maximum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.max.apply(Math, nums);\n}\n\nfunction minimum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.min.apply(Math, nums);\n}\n\nfunction sum(arr, start, end){\n // Copy set with given range\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum;\n}\n\nconst getColumnAverage = function (arr) {\n return average(arr, 1);\n};\nconst getRowAverage = getColumnAverage;\n\nconst getColumnSum = function (arr) {\n return sum(arr, 1);\n};\nconst getRowSum = getColumnSum;\n\nconst getColumnMaximum = function (arr) {\n return maximum(arr, 1);\n};\nconst getRowMaximum = getColumnMaximum;\n\nconst getColumnMinimum = function (arr) {\n return minimum(arr, 1);\n};\nconst getRowMinimum = getColumnMinimum;\n\nconst getColumnLabel = function (arr) {\n return arr[0];\n};\nconst getRowIndex = getColumnLabel;\n\nexport default {\n average,\n maximum,\n minimum,\n sum,\n getColumnAverage,\n getRowAverage,\n getColumnSum,\n getRowSum,\n getColumnMaximum,\n getRowMaximum,\n getColumnMinimum,\n getRowMinimum,\n getColumnLabel,\n getRowIndex,\n};\n","// Pure awesomeness by Will Rayner (penguinboy)\n// https://gist.github.com/penguinboy/762197\n\nexport function flatten(ob){\n var toReturn = {};\n for (var i in ob) {\n if (!ob.hasOwnProperty(i)) continue;\n if ((typeof ob[i]) == 'object' && ob[i] !== null) {\n var flatObject = flatten(ob[i]);\n for (var x in flatObject) {\n if (!flatObject.hasOwnProperty(x)) continue;\n toReturn[i + '.' + x] = flatObject[x];\n }\n } else {\n toReturn[i] = ob[i];\n }\n }\n return toReturn;\n};\n","/**\n * Strip html tags from string\n *\n * @param {string} string The string to strip\n * @return {string}\n * @public\n */\n\nexport function stripHtmlTags(inputString) {\n if (typeof inputString !== 'string') {\n return inputString;\n }\n return inputString.replace(/(<([^>]+)>)/ig, '');\n}\n","import { each } from './each';\n\nexport function extendDeep(target) {\n for (var i = 1; i < arguments.length; i++) {\n each(arguments[i], function(prop, key){\n if (( typeof target[key] !== 'undefined' && typeof prop !== 'undefined' ) &&\n ( typeof target[key] === 'object' && typeof prop === 'object' ) &&\n ( target[key] !== null && prop !== null )) {\n extendDeep(target[key], prop);\n }\n else {\n target[key] = prop;\n }\n });\n }\n return target;\n}\n","import downloadResults from './download-results';\n\nexport default function renderDownloadButton({\n element,\n label = 'Download',\n type = 'json',\n data,\n} = {}) {\n const btnClass = 'keen-dataviz-button';\n const isBtnRendered = [...element.parentNode.children]\n .find(child => child.className === btnClass);\n if (isBtnRendered) return;\n\n const button = document.createElement('button');\n button.innerText = label;\n button.className = btnClass;\n button.addEventListener('click', event => downloadResults({ event, type, data}));\n element.parentNode.insertBefore(button, element.nextSibling);\n};","import domtoimage from 'dom-to-image';\nimport { saveAs } from 'file-saver';\n\nexport default function exportImage(obj) {\n const { node, quality, bgcolor } = obj;\n if (quality) {\n if (quality < 0 || quality > 1) throw Error('Please provide image quality between 0 and 1');\n domtoimage.toBlob(node, { quality, bgcolor })\n .then((blob) => {\n saveAs(blob, 'chart.jpeg');\n });\n }\n\n if (!quality) {\n domtoimage.toBlob(node)\n .then((blob) => {\n saveAs(blob, 'chart.png');\n });\n }\n}\n","function generateCsvContent(data) {\n let csvContent = '';\n\n data.forEach((row, i) => {\n row.forEach((cell, j) => {\n csvContent += String(cell).replace(/,/g, '');\n if (row.length > j + 1) {\n csvContent += ',';\n }\n });\n if (data.length > i + 1) {\n csvContent += '\\n';\n }\n });\n return `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n}\n\nexport default function exportData(obj) {\n const { type, data } = obj;\n const supportedFormats = ['json', 'csv'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = supportedFormats[0];\n let content = '';\n\n if (format === 'json') {\n content = `data:text/json;charset=utf-8, ${encodeURIComponent(JSON.stringify(data))}`;\n }\n\n if (format === 'csv') {\n content = generateCsvContent(data);\n fileFormat = format;\n }\n\n const htmlElement = document.createElement('a');\n htmlElement.setAttribute('href', content);\n htmlElement.setAttribute('download', `${fileName}.${fileFormat}`);\n document.body.appendChild(htmlElement);\n htmlElement.click();\n document.body.removeChild(htmlElement);\n}\n","/*!\n *\n * Rangeable\n * Copyright (c) 2018 Karl Saunders (mobius1(at)gmx(dot)com)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.1.6\n *\n */\n(function(i,j){\"object\"==typeof exports?module.exports=j(\"Rangeable\"):\"function\"==typeof define&&define.amd?define([],j):i.Rangeable=j(\"Rangeable\")})(\"undefined\"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&\"function\"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=[\"ruler\"],\"string\"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:\"single\",tooltips:\"always\",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:\"rangeable-input\",container:\"rangeable-container\",vertical:\"rangeable-vertical\",progress:\"rangeable-progress\",handle:\"rangeable-handle\",track:\"rangeable-track\",multiple:\"rangeable-multiple\",disabled:\"rangeable-disabled\",tooltips:\"rangeable-tooltips\",tooltip:\"rangeable-tooltip\",visible:\"rangeable-tooltips--visible\"}},t),this.mouseAxis={x:\"clientX\",y:\"clientY\"},this.trackSize={x:\"width\",y:\"height\"},this.trackPos={x:\"left\",y:\"top\"},this.lastPos=0,this.double=\"double\"===this.config.type||Array.isArray(this.config.value),this.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version=\"0.1.6\",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?\"y\":\"x\",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i(\"div\",u.container),w=i(\"div\",u.track),x=i(\"div\",u.progress),y=i(\"div\",u.handle),z=i(\"div\",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i(\"div\",u.handle),i(\"div\",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i(\"div\",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+\"px\"),t.tooltips&&(v.classList.add(u.tooltips),\"string\"==typeof t.tooltips&&\"always\"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i(\"div\",\"rangeable-buffers\");this.input.values.forEach(function(C,D){var E=i(\"div\",\"rangeable-buffer\");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i(\"div\",\"rangeable-buffer\"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return\"mousedown\"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add(\"dragging\"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add(\"active\"),this.setValueFromPosition(s),this.touch?(document.addEventListener(\"touchmove\",this.events.move,!1),document.addEventListener(\"touchend\",this.events.stop,!1),document.addEventListener(\"touchcancel\",this.events.stop,!1)):(document.addEventListener(\"mousemove\",this.events.move,!1),document.addEventListener(\"mouseup\",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove(\"dragging\"),this.onEnd(),this.activeHandle.classList.remove(\"active\"),this.activeHandle=!1,this.touch?(document.removeEventListener(\"touchmove\",this.events.move),document.removeEventListener(\"touchend\",this.events.stop),document.removeEventListener(\"touchcancel\",this.events.stop)):(document.removeEventListener(\"mousemove\",this.events.move),document.removeEventListener(\"mouseup\",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event(\"change\")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case\"ArrowRight\":case\"ArrowUp\":t.stepUp(v);break;case\"ArrowLeft\":case\"ArrowDown\":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle(\"combined-tooltip\",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+\" - \"+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event(\"input\")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?\"bottom\":\"left\"]=s+\"px\",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+\"px\"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest(\".\"+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute(\"tabindex\")}):this.nodes.handle.removeAttribute(\"tabindex\"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},\"start move stop update reset native keydown\".split(\" \").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener(\"scroll\",this.events.scroll,!1),window.addEventListener(\"resize\",this.events.resize,!1),document.addEventListener(\"keydown\",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.input.addEventListener(\"input\",this.events.native,!1),this.input.form&&this.input.form.addEventListener(\"reset\",this.events.reset,!1)},r.unbind=function(){document.removeEventListener(\"scroll\",this.events.scroll),window.removeEventListener(\"resize\",this.events.resize),document.removeEventListener(\"keydown\",this.events.keydown),this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.input.removeEventListener(\"input\",this.events.native),this.input.form&&this.input.form.removeEventListener(\"reset\",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q});","import { Dataviz, Dataset } from './index';\n\nconst env = typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {};\n\nexport const extendKeenGlobalObject = function(env) {\n env.KeenDataviz = Dataviz;\n env.KeenDataset = Dataset;\n\n // just for backward compatibility\n env.Keen = env.Keen || {};\n env.Keen.Dataset = Dataset;\n env.Keen.Dataviz = Dataviz;\n};\n\nif (typeof KEEN_GLOBAL_OBJECT !== 'undefined'\n && KEEN_GLOBAL_OBJECT) {\n extendKeenGlobalObject(env);\n}\n\nexport let keenGlobals = undefined;\nif (typeof webpackKeenGlobals !== 'undefined') {\n keenGlobals = webpackKeenGlobals;\n}\n\nexport { Dataviz, Dataset } from './index';\nexport default Dataviz;\n","/* eslint-env browser */\nimport * as d3 from 'd3';\nimport c3 from 'c3';\n\nimport pkg from '../package.json';\nimport data from './data';\nimport { Dataset } from './dataset';\n\n// Utils\nimport { each } from './utils/each';\nimport isDateString from './utils/assert-date-string';\nimport { stripHtmlTags } from './utils/strip-html-tags';\nimport { escapeHtml } from './utils/escape-html';\nimport libraries from './libraries';\nimport { extendDeep } from './utils/extend-deep';\nimport exportImage from './utils/export-svg';\nimport exportData from './utils/export-data';\nimport renderDownloadButton from './utils/render-download-btn';\nimport renderExecutionMetadata from './utils/render-execution-metadata';\nimport copyToClipboard from './utils/copy-to-clipboard';\n\nimport palettes from './palettes/index';\n\n// Constructor\nexport const Dataviz = function (options = {}) {\n if (this instanceof Dataviz === false) {\n return new Dataviz(options);\n }\n\n this.c3 = c3; // expose for use outside\n this.d3 = d3;\n\n const datavizInstance = this;\n const defaultOptions = {\n showDeprecationWarnings: true,\n showLoadingSpinner: false,\n\n container: undefined, // querySelector of container, for example '#someDiv'\n containerElement: undefined, // HTML parent element for the chart\n\n // width: undefined, *deprecated* - use CSS\n // height: undefined, *deprecated* - use CSS\n\n title: undefined,\n showTitle: true,\n\n subtitle: undefined,\n\n notes: undefined,\n theme: 'keen-dataviz',\n\n colors: [\n '#00bbde', '#fe6672', '#eeb058', '#8a8ad6', '#ff855c', '#00cfbb',\n '#5a9eed', '#73d483', '#c879bb', '#0099b6', '#d74d58', '#cb9141',\n '#6b6bb6', '#d86945', '#00aa99', '#4281c9', '#57b566', '#ac5c9e',\n '#27cceb', '#ff818b', '#f6bf71', '#9b9be1', '#ff9b79', '#26dfcd',\n '#73aff4', '#87e096', '#d88bcb',\n ],\n\n colorMapping: {},\n ui: {\n executionMetadata: true,\n },\n utils: {\n clickToCopyToClipboard: true,\n },\n\n indexBy: 'timeframe.start',\n labels: [],\n labelMapping: {},\n labelMappingRegExp: undefined,\n errorMapping: {},\n showErrorMessages: true,\n library: 'default',\n sortGroups: undefined,\n sortIntervals: undefined,\n\n results: undefined, // raw data\n\n // C3 chartOptions\n type: undefined,\n stacked: false,\n dateFormat: undefined,\n legend: {\n show: true,\n position: 'right',\n alignment: 'top',\n label: {\n textMaxLength: 12\n },\n pagination: {\n offset: 0, // start from\n limit: 5 // items per page\n },\n tooltip: {\n show: true,\n pointer: true\n },\n sort: undefined\n },\n\n axis: {},\n color: {},\n size: {\n // control it with CSS of .c3-chart\n },\n padding: {\n top: 15\n },\n point: {\n focus: {\n expand: {\n enabled: false\n }\n },\n r: 2,\n show: true,\n sensitivity: 300\n },\n tooltip: {\n horizontal: true,\n format: {\n // https://c3js.org/samples/tooltip_format.html\n }\n },\n transition: {\n // duration: 0\n },\n data: {\n order: null,\n selection: {\n enabled: true,\n draggable: true,\n multiple: true\n },\n onselected: (d, element) => {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n },\n },\n grid: {\n y: {\n show: true\n }\n },\n partialIntervalIndicator: {\n show: undefined,\n className: 'partial-interval-indicator'\n },\n timezone: 'UTC',\n table: {\n schema: 'static',\n },\n renderOnVisible: false,\n funnel: {\n lines: true,\n resultValues: true,\n percents: {\n show: false,\n countingMethod: 'absolute',\n decimals: 0\n },\n marginBetweenElements: false,\n hover: true,\n effect3d: 'both-sides',\n minimalSize: false,\n },\n react: false,\n range: false,\n sparkline: false,\n choropleth: {\n map: 'world',\n borders: {\n show: true,\n size: 0.5,\n color: '#000'\n },\n showSlider: false\n },\n heatmap: {},\n };\n\n this.config = { ...extendDeep(defaultOptions, options) };\n\n if (options.palette) {\n if (!palettes[options.palette]){\n console.log('Colors pallete not found', options.palette);\n }\n this.config.colors = palettes[options.palette].colors;\n }\n\n if (this.config.type) {\n // backward compatibility with v2016... areachart -> area\n this.config.type = convertChartTypes(this.config.type);\n }\n\n // overwriting options for range chart\n if(this.config.type && this.config.type.includes('-range')) {\n this.config.range = true;\n this.config.type = this.config.type.replace('-range', '');\n this.config.legend.show = false;\n this.config.stacking = 'normal';\n this.config.labels = ['Max', 'Min'];\n this.config.colors = [\n this.config.colors[0],\n this.config.colors[0],\n ];\n }\n\n // overwriting stacked when stacking added\n if (this.config.stacking) {\n this.config.stacked = true;\n }\n\n // overwriting options for sparkline chart\n if (this.config.sparkline) {\n this.config.legend.show = false;\n this.config.axis = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n this.config.grid = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n }\n\n // get DOM node by query\n if (this.config.container) {\n this.el(this.config.container);\n }\n\n if (options.legend !== undefined && !options.legend) {\n this.config.legend = {\n ...options,\n show: false\n };\n }\n\n if (options.color && options.color.pattern) {\n // to match c3 options\n this.config.colors = options.color.pattern;\n }\n\n if (this.config.legend\n && this.config.legend.tooltip\n && this.config.legend.tooltip.show === false\n && this.config.tooltip.show === undefined) {\n this.config.tooltip = { show: false };\n }\n\n this.dataset = new Dataset(this.config);\n this.view = {\n _prepared: false,\n _rendered: false,\n _artifacts: { /* state bin */ }\n };\n\n Dataviz.visuals.push(this);\n\n if (this.config.showLoadingSpinner) {\n this.prepare();\n }\n\n if (!!this.config.results) {\n this.render(this.config.results);\n }\n this.config.firstVisibilityState = document.visibilityState;\n\n if (!this.config.utils.clickToCopyToClipboard) {\n this.config.data.onselected = () => {};\n }\n\n if (options.data && options.data.onselected) {\n this.config.data.onselected = (d, element) => {\n const callback = options.data.onselected.bind(null, d, element);\n callback();\n\n if (this.config.utils.clickToCopyToClipboard) {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n }\n };\n }\n\n};\n\n\nDataviz.libraries = { default: {} };\nif (typeof window !== 'undefined') {\n Dataviz.libraries.default = libraries(Dataviz);\n}\nDataviz.visuals = [];\n\nDataviz.register = function (name, actions) {\n Dataviz.libraries[name] = Dataviz.libraries[name] || {};\n each(actions, function(method, key){\n Dataviz.libraries[name][key] = method;\n });\n};\n\nDataviz.find = function(target){\n if (!arguments.length) return Dataviz.visuals;\n const el = target.nodeName ? target : document.querySelector(target);\n let match = null;\n each(Dataviz.visuals, function(visual){\n if (el == visual.config.container){\n match = visual;\n return false;\n }\n });\n return match;\n};\n\n\n // Prototype\n // ------------\n\nDataviz.prototype.attributes = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n const view = this.config;\n each(obj, function(prop, key){\n // Handle deprecated property names\n if (key === 'chartType') {\n key = 'type';\n }\n view[key] = prop;\n });\n return this;\n};\n\nDataviz.prototype.call = function(fn){\n fn.call(this);\n return this;\n};\n\nDataviz.prototype.chartOptions = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n this.config = extendDeep(this.config, obj);\n return this;\n};\n\nDataviz.prototype.colors = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.colors;\n this.config.colors = (arr instanceof Array ? arr : []);\n return this;\n};\n\nDataviz.prototype.colorMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })');\n }\n const datavizInstance = this;\n if (!arguments.length) return this.config.colorMapping;\n if (obj === null) {\n this.config.colorMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n datavizInstance.config.colorMapping[key] = (value ? value : null);\n });\n }\n return this;\n};\n\nDataviz.prototype.data = data;\n\nDataviz.prototype.dateFormat = function(val){\n if (this.config.showDeprecationWarnings) {\n console.log('.dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.dateFormat;\n if (typeof val === 'string' || typeof val === 'function') {\n this.config.dateFormat = val;\n }\n else {\n this.config.dateFormat = undefined;\n }\n return this;\n};\n\nDataviz.prototype.destroy = function(){\n const library = this.library();\n const type = this.config.type;\n const element = this.el();\n\n // Call destroy method if present\n if (Dataviz.libraries[library]\n && Dataviz.libraries[library][type]){\n Dataviz.libraries[library][type].destroy.call(this);\n }\n\n // Clear rendered artifacts, state bin\n if (element) {\n element.innerHTML = '';\n }\n this.view._prepared = false;\n this.view._rendered = false;\n this.view._artifacts = {};\n return this;\n};\n\nDataviz.prototype.el = function(target){\n const datavizInstance = this;\n if (!arguments.length) return this.config.containerElement;\n domReady(function(){\n if (target && target !== null) {\n if (target.nodeName) {\n datavizInstance.config.containerElement = target;\n }\n else if (document.querySelector) {\n datavizInstance.config.containerElement = document.querySelector(target);\n }\n }\n else {\n datavizInstance.config.containerElement = undefined;\n }\n });\n return this;\n};\n\nDataviz.prototype.height = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.height() is deprecated - use CSS classes');\n }\n return this;\n};\n\n// IMPORTANT: Must be run before data parsing\nDataviz.prototype.indexBy = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.indexBy;\n this.config.indexBy = (str ? String(str) : 'timeframe.start');\n return this;\n};\n\nDataviz.prototype.labels = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })');\n }\n\n if (!arguments.length) return this.config.labels;\n this.config.labels = (arr instanceof Array ? arr : []);\n\n setLabels(this);\n\n return this;\n};\n\nfunction setLabels(datavizInstance){\n // Write labels\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.updateColumn(0, function(value, index){\n if (datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n else {\n datavizInstance.dataset.updateRow(0, function(value, index){\n if (index > 0 && datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.labelMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.labelMapping;\n if (obj === null) {\n this.config.labelMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n this.config.labelMapping[key] = (value ? value : null);\n }.bind(this));\n }\n\n mapLabels(this);\n\n return this;\n};\n\nfunction mapLabelsExec({ datavizInstance, value }){\n if (datavizInstance.config.labelMappingRegExp){\n let valueAfterMatching = value;\n datavizInstance.config.labelMappingRegExp.forEach(regExpAndLabel => {\n if (regExpAndLabel.length > 1) {\n let regExpObj = regExpAndLabel[0];\n if (regExpObj.test(value)){\n valueAfterMatching = regExpAndLabel[1];\n }\n }\n });\n return stripHtmlTags(valueAfterMatching);\n }\n if (datavizInstance.config.labelMapping[value]) {\n return stripHtmlTags(String(datavizInstance.config.labelMapping[value]));\n }\n return stripHtmlTags(value);\n}\n\nfunction mapLabels(datavizInstance){\n // Write labels\n if (!datavizInstance.config.labelMappingDimension) {\n // if not defined use deprecated auto-detecting\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.config.labelMappingDimension = 'row';\n } else {\n datavizInstance.config.labelMappingDimension = 'column';\n }\n }\n\n if (datavizInstance.config.labelMappingDimension === 'row'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateColumn(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n\n if (datavizInstance.config.labelMappingDimension === 'column'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateRow(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.library = function(str){\n if (!arguments.length) return this.config['library'];\n this.config['library'] = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.message = function(){\n if (this.view._rendered) {\n this.destroy();\n }\n if (this.el()) {\n this.el().innerHTML = '';\n const message = Dataviz.libraries.default.message;\n if (message.render) {\n message.render.apply(this, arguments);\n }\n }\n return this;\n};\n\nDataviz.prototype.notes = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.notes;\n this.config.notes = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.prepare = function(){\n const datavizInstance = this;\n\n if (!this.el()) {\n throw `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n return;\n }\n\n domReady(function(){\n if (datavizInstance.view._rendered) {\n datavizInstance.destroy();\n }\n if (datavizInstance.el()) {\n datavizInstance.el().innerHTML = '';\n const loader = Dataviz.libraries.default.spinner;\n if (loader.render) {\n loader.render.call(datavizInstance);\n }\n datavizInstance.view._prepared = true;\n }\n });\n\n return this;\n};\n\nDataviz.prototype.render = function(results = undefined){\n const datavizInstance = this;\n\n if (!!results) {\n const firstResult = results[0] || results;\n if (\n firstResult.query\n && firstResult.query.interval\n && firstResult.query.timeframe\n && typeof firstResult.query.timeframe === 'string'\n && firstResult.query.timeframe.includes('this_')\n && this.config.partialIntervalIndicator\n && this.config.partialIntervalIndicator.show === undefined\n )\n {\n this.config.partialIntervalIndicator.show = true;\n }\n\n if (Array.isArray(results)) {\n const timeframes = results.map(resultItem => resultItem.query.timeframe);\n timeframes.forEach(resultTimeframe => {\n let foundDifferent = timeframes.find(timeframeItem =>\n JSON.stringify(timeframeItem) !== JSON.stringify(resultTimeframe)\n );\n if (foundDifferent){\n const msg = 'Timeframes of the queries should be the same';\n console.error(msg);\n throw msg;\n }\n });\n // first result is important to prepare X on the chart\n return datavizInstance\n .data(results[0])\n .call(() => {\n const input = results[0];\n this.dataset.deleteColumn(1);\n for (let result of results) {\n let label = `${input.query.event_collection} ${input.query.analysis_type}`;\n let ds2 = Dataset.parser('interval')(result);\n datavizInstance.dataset.appendColumn(label, ds2.selectColumn(1).slice(1));\n }\n })\n .render();\n }\n\n return datavizInstance.data(results).render();\n }\n if (\n (!!this.config.labelMapping && Object.keys(this.config.labelMapping).length > 0)\n ||\n (!!this.config.labelMappingRegExp && this.config.labelMappingRegExp.length > 0)\n ){\n mapLabels(datavizInstance);\n }\n if (!!this.config.labels && Object.keys(this.config.labels).length > 0){\n setLabels(datavizInstance);\n }\n if (!!this.config.sortGroups) {\n sortGroups(datavizInstance);\n }\n if (!!this.config.sortIntervals) {\n sortIntervals(datavizInstance);\n }\n\n const loader = Dataviz.libraries.default.spinner;\n const library = this.config.library;\n const type = this.config.type;\n const containerElement = this.el();\n\n if (!containerElement || containerElement === undefined) {\n const msg = `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n console.error(msg);\n throw msg;\n return;\n }\n\n let returnValue = datavizInstance;\n\n if (datavizInstance.config.renderAsPromise) {\n returnValue = new Promise((resolve, reject) => {\n const customCallback = this.config.onrendered;\n datavizInstance.config.onrendered = () => {\n if (customCallback) {\n customCallback();\n }\n resolve(datavizInstance);\n }\n });\n }\n\n domReady(function(){\n const shouldRenderExecutionMetadata = datavizInstance.execution_metadata\n && datavizInstance.config.ui\n && datavizInstance.config.ui.executionMetadata;\n const shouldRenderDownloadBtn = datavizInstance.config.ui\n && datavizInstance.config.ui.buttons\n && datavizInstance.config.ui.buttons.download\n && datavizInstance.config.ui.buttons.download.type;\n if (datavizInstance.view._prepared && loader.destroy) {\n loader.destroy.apply(datavizInstance, arguments);\n }\n containerElement.innerHTML = '';\n\n if (Dataviz.libraries[library] === 'undefined'){\n // Error: Unregistered library\n const msg = `Incorrect library`;\n datavizInstance.message(msg);\n throw msg;\n return;\n }\n else {\n if (typeof Dataviz.libraries[library][type] === 'undefined') {\n const msg = `Incorrect chart type`;\n const mappedMsg = this.config.errorMapping[msg] || msg;\n datavizInstance.message(mappedMsg);\n throw msg;\n return;\n }\n else {\n buildDomWrapper(containerElement,\n datavizInstance.config\n );\n if (shouldRenderDownloadBtn) {\n renderDownloadButton({\n element: containerElement,\n data: datavizInstance.dataset.matrix,\n type: datavizInstance.config.ui.buttons.download.type,\n label: datavizInstance.config.ui.buttons.download.label,\n })\n }\n if (shouldRenderExecutionMetadata) {\n renderExecutionMetadata({\n element: containerElement,\n data: datavizInstance.execution_metadata,\n })\n }\n const { renderOnVisible } = datavizInstance.config;\n if(renderOnVisible){\n if(typeof IntersectionObserver !== 'undefined'){\n const chartVisibleCallback = (events, observer) => {\n events.forEach(el => {\n if(el.isIntersecting){\n if(!datavizInstance.view._rendered){\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n })\n }\n const observer = new IntersectionObserver(chartVisibleCallback);\n observer.observe(containerElement);\n return;\n }\n }\n if(datavizInstance.config.firstVisibilityState === 'hidden'){\n if(typeof document !== 'undefined') {\n let hidden, visibilityChange;\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n const handleVisibilityChange = () => {\n if(!document[hidden] && datavizInstance.view._artifacts.c3) {\n datavizInstance.view._artifacts.c3.load(datavizInstance.dataset.matrix);\n }\n }\n if(typeof document.addEventListener !== \"undefined\" ||\n hidden !== undefined){\n document.addEventListener(visibilityChange, handleVisibilityChange, {\n once: true\n });\n }\n }\n }\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n });\n\n return returnValue;\n};\n\nDataviz.prototype.sortGroups = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortGroups;\n this.config.sortGroups = (str ? String(str) : null);\n\n sortGroups(this, str);\n\n return this;\n};\n\nfunction sortGroups(datavizInstance){\n // Sort groups\n if (datavizInstance.config.sortGroups && datavizInstance.data().length > 1) {\n if (isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.sortColumns(datavizInstance.config.sortGroups, datavizInstance.dataset.getColumnSum);\n }\n else {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortGroups, datavizInstance.dataset.getRowSum);\n }\n }\n}\n\nDataviz.prototype.sortIntervals = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortIntervals;\n this.config.sortIntervals = (str ? String(str) : null);\n\n sortIntervals(this);\n\n return this;\n};\n\nfunction sortIntervals(datavizInstance){\n if (datavizInstance.config.sortIntervals) {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortIntervals);\n }\n}\n\nDataviz.prototype.stacked = function(bool){\n if (this.config.showDeprecationWarnings) {\n console.log('.stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.stacked;\n this.config.stacked = bool ? true : false;\n return this;\n};\n\nDataviz.prototype.theme = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.theme;\n this.config.theme = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.title = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.title;\n this.config.title = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.type = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.type;\n this.config.type = (str ? convertChartTypes(str) : null);\n return this;\n};\n\nDataviz.prototype.update = function(){\n const library = this.config.library;\n const type = this.config.type;\n const element = this.el();\n if (library && type && element && Dataviz.libraries[library][type].update) {\n Dataviz.libraries[library][type].update.apply(this, arguments);\n }\n return this;\n};\n\nDataviz.prototype.width = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.width() is deprecated - use CSS classes');\n }\n return this;\n};\n\nDataviz.prototype.exportImage = function({ quality = 0, bgcolor = '#fff' } = {}) {\n exportImage({\n node: this.config.containerElement,\n quality,\n bgcolor,\n });\n};\n\nDataviz.prototype.exportData = function(type='json') {\n exportData({\n data: this.dataset.matrix,\n type,\n });\n};\n\n// Deprecations\nDataviz.prototype.chartType = Dataviz.prototype.type;\nDataviz.prototype.error = Dataviz.prototype.message;\nDataviz.prototype.parseRawData = Dataviz.prototype.data;\nDataviz.prototype.parseRequest = function(){\n // this.emit('error', 'This method is no longer supported. Use .data() instead: https://github.com/keen/keen-dataviz.js#data');\n return this;\n};\nDataviz.prototype.initialize = function(){\n // this.emit('error', 'This method is no longer supported, and can be omitted as it has no impact');\n return this;\n};\n\nDataviz.version = pkg.version;\n\n// Private\n\nfunction buildDomWrapper(el, options) {\n let html = '';\n let chart100percentWide = '';\n let rangeChart = '';\n if (options.legend.position === 'top' || options.legend.position === 'bottom') {\n chart100percentWide = 'c3-chart-100-percent';\n }\n if (options.range) {\n rangeChart = 'keen-dataviz-range';\n }\n let container = `
`;\n const verticalAlignment = ['top', 'middle', 'bottom'];\n const horizontalAlignment = ['left', 'center', 'right'];\n let align = 'horizontal';\n let legendItemsAlign = 'center';\n if (horizontalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n if (options.legend.position === 'left' || options.legend.position === 'right') {\n align = 'vertical';\n if (verticalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n }\n if (options.legend && options.legend.show) {\n if (options.legend.position === 'top' || options.legend.position === 'left') {\n container = `
${container}`;\n } else {\n container = `${container}
`;\n }\n }\n if(!options.react){\n html += `
`;\n }\n if (options.title && options.showTitle) {\n html += `
${options.title}
`;\n }\n if (options.subtitle) {\n html += `
${options.subtitle}
`;\n }\n html += `
${container}
`;\n if (options.notes) {\n html += `
${options.notes}
`;\n }\n if(!options.react){\n html += '
';\n }\n\n el.innerHTML = html;\n}\n\nfunction convertChartTypes(str) {\n const map = {\n areachart: 'area',\n barchart: 'horizontal-bar',\n columnchart: 'bar',\n linechart: 'line',\n piechart: 'pie',\n };\n return map[str] || str;\n}\n\nfunction testDom(fn) {\n if (/in/.test(document.readyState)) {\n setTimeout(() => {\n testDom(fn);\n }, 9);\n } else {\n fn();\n }\n}\n\nfunction domReady(fn) {\n if (typeof document !== 'undefined' || typeof window === 'undefined') {\n fn();\n return;\n }\n // Firefox 3.5 shim\n if (document.readyState == null && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', function DOMContentLoaded() {\n document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);\n document.readyState = 'complete';\n }, false);\n document.readyState = 'loading';\n }\n testDom(fn);\n}\n\nexport { Dataset } from './dataset';\n\nexport default Dataviz;\n","import { each } from '../../utils/each';\n\nexport function deleteColumn(q) {\n const self = this;\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n each(self.matrix, function(row, i){\n self.matrix[i].splice(index, 1);\n });\n }\n return self;\n}\n\nexport function deleteRow(q) {\n var index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n this.matrix.splice(index, 1);\n }\n return this;\n}\n","import { each } from '../../utils/each';\n\nexport function filterColumns(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i) {\n clone.push([]);\n });\n\n each(self.matrix[0], function(col, i){\n var selectedColumn = self.selectColumn(i);\n if (i == 0 || fn.call(self, selectedColumn, i)) {\n each(selectedColumn, function(cell, ri){\n clone[ri].push(cell);\n });\n }\n });\n\n self.data(clone);\n return self;\n}\n\nexport function filterRows(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i){\n if (i == 0 || fn.call(self, row, i)) {\n clone.push(row);\n }\n });\n\n self.data(clone);\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function insertColumn(index, str, input) {\n const self = this;\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n\n self.matrix[0].splice(index, 0, label);\n each(self.matrix, function(row, i) {\n var cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].splice(index, 0, cell);\n }\n });\n\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat( createNullList(self.matrix.length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n self.matrix[0].splice(index, 0, label);\n each(input, function(value, i){\n self.matrix[i+1].splice(index, 0, value);\n });\n\n }\n return self;\n}\n\nexport function insertRow(index, str, input) {\n const self = this;\n const newRow = [];\n const label = (str !== undefined) ? str : null;\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i) {\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.splice(index, 0, newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n self.matrix.splice(index, 0, newRow.concat(input) );\n }\n\n return self;\n}\n","import { each } from '../../utils/each';\n\nexport function selectColumn(q) {\n const result = [];\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1 && typeof this.matrix[0][index] !== 'undefined') {\n each(this.matrix, function(row, i) {\n result.push(row[index]);\n });\n }\n return result;\n}\n\nexport function selectRow(q) {\n let result = [];\n const index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1 && typeof this.matrix[index] !== 'undefined') {\n result = this.matrix[index];\n }\n return result;\n}\n","import { each } from '../../utils/each';\nimport analysesUtilMethods from '../utils/analyses';\n\nexport function sortColumns(str, comp) {\n var self = this,\n head = this.matrix[0].slice(1), // minus index\n cols = [],\n clone = [],\n fn = comp || analysesUtilMethods.getColumnLabel;\n\n // Isolate each column (except the index)\n each(head, function(cell, i) {\n cols.push(self.selectColumn(i+1).slice(0));\n });\n cols.sort(function(a,b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n each(cols, function(col, i) {\n self\n .deleteColumn(i+1)\n .insertColumn(i+1, col[0], col.slice(1));\n });\n return self;\n}\n\nexport function sortRows(str, comp) {\n var self = this,\n head = this.matrix.slice(0,1),\n body = this.matrix.slice(1),\n fn = comp || analysesUtilMethods.getRowIndex;\n body.sort(function(a, b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n self.data(head.concat(body));\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function updateColumn(q, input) {\n var self = this,\n index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data(), function(row, i){\n var cell;\n if (i > 0) {\n cell = input.call(self, row[index], i, row);\n if (typeof cell !== 'undefined') {\n self.matrix[i][index] = cell;\n }\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.data().length - 1) {\n input = input.concat( createNullList(self.data().length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[i+1][index] = value;\n });\n\n }\n\n }\n return self;\n}\n\nexport function updateRow(q, input){\n var self = this,\n index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data()[index], function(value, i){\n var col = self.selectColumn(i),\n cell = input.call(self, value, i, col);\n if (typeof cell !== 'undefined') {\n self.matrix[index][i] = cell;\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[index][i+1] = value;\n });\n }\n\n }\n return self;\n}\n","let Dataset; /* injected */\n\nimport { each } from '../../utils/each';\nimport { flatten } from '../utils/flatten';\nimport { valueAtDeepKey } from '../utils/object';\nimport { createExtractionKeys } from '../utils/create-extraction-keys';\n\nexport default function initialize(lib){\n Dataset = lib;\n return function(name){\n var options = Array.prototype.slice.call(arguments, 1);\n\n if (!parsers[name]) {\n throw 'Requested parser does not exist';\n }\n else {\n return parsers[name].apply(this, options);\n }\n };\n}\n\nfunction parseMetric(){\n return function(res){\n return new Dataset()\n .set(['Value', 'Result'], res.result)\n .type('metric');\n }\n}\n\n//var myParser = Dataset.parser('interval', 'timeframe.end');\nfunction parseInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n dataset.set(['Result', index], record.value);\n });\n return dataset;\n }\n}\n\nfunction parseGroupedMetric(){\n return function(res){\n var dataset = new Dataset()\n .type('grouped-metric');\n each(res.result, function(record, i){\n var label;\n each(record, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set(['Result', String(record[label])], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('grouped-interval', 'timeframe.end');\nfunction parseGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('grouped-interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n if (record.value.length) {\n each(record.value, function(group, j){\n var label;\n each(group, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set([ String(group[label]), index ], group.result);\n });\n }\n else {\n dataset.appendRow(index);\n }\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-metric', ['first', 'second']);\nfunction parseDoubleGroupedMetric(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-metric');\n each(res.result, function(record, i){\n var rowLabel = record[options[0][0]] + ' ' + record[options[0][1]];\n dataset.set([ 'Result', rowLabel ], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-interval', ['first', 'second'], 'timeframe.end');\nfunction parseDoubleGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-interval');\n each(res.result, function(record, i){\n var index = options[1] && options[1] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n each(record['value'], function(value, j){\n var label = value[options[0][0]] + ' ' + value[options[0][1]];\n dataset.set([ label, index ], value.result);\n });\n });\n return dataset;\n }\n}\n\nfunction parseFunnel(){\n return function(res){\n var result, steps, dataset;\n if (typeof res.steps !== 'undefined'\n && typeof res.result !== 'undefined'\n && res.result instanceof Array) {\n // Ad-hoc funnel response\n result = res.result;\n steps = res.steps;\n }\n else if (typeof res.result.steps !== 'undefined'\n && typeof res.result.result !== 'undefined'\n && res.result.result instanceof Array) {\n // Saved funnel response\n result = res.result.result;\n steps = res.result.steps;\n }\n dataset = new Dataset().type('funnel');\n dataset.appendColumn('Step Value');\n each(result, function(value, i){\n if (typeof steps !== 'undefined' && steps[i]) {\n dataset.appendRow(String(steps[i].event_collection), [value]);\n }\n });\n return dataset;\n }\n}\n\nfunction parseList(){\n return function(res){\n var dataset = new Dataset()\n .type('list');\n each(res.result, function(value, i){\n dataset.set( [ 'Result', String(i+1) ], value );\n });\n return dataset;\n }\n}\n\nfunction parseExtraction(){\n let config = this.config;\n return function(res){\n const datasetExtraction = new Dataset()\n .type('extraction');\n\n const datasetKeys = createExtractionKeys(res.result);\n let names = Array.from(datasetKeys);\n\n const tableConfig = config && config.table;\n if (tableConfig && tableConfig.schema === 'dynamic') {\n const results = res.result;\n const keys = {};\n results.forEach(resultItem => {\n const resultKeys = Object.keys(flatten(resultItem));\n if (resultKeys && resultKeys.length) {\n resultKeys.forEach(keyName => {\n if (!keys[keyName]) {\n keys[keyName] = true;\n }\n });\n }\n });\n names = Object.keys(keys);\n }\n\n let nameI = 0;\n names.forEach(value => {\n datasetExtraction.set([ value, '0' ], value);\n nameI++;\n });\n\n if (Dataset) {\n if (config\n && config.table\n && config.table.columns) {\n names = config.table.columns;\n }\n }\n\n for (let i=0; i {\n Object.keys(flatten(result)).map((key) => {\n keys.add(key);\n });\n });\n\n return keys;\n}\n","import Dataset from './dataset';\nimport { extend } from './utils/extend';\nimport { stripHtmlTags } from './utils/strip-html-tags';\n\nexport default function (data) {\n if (!arguments.length) return this.dataset.data();\n if (data instanceof Dataset) {\n this.dataset = data;\n return this;\n }\n return parseResponse.call(this, data);\n};\n\nfunction parseResponse(response) {\n var dataset,\n indexBy,\n meta,\n parser,\n parserArgs = [],\n query,\n selectedParser,\n title,\n type;\n\n indexBy = this.config.indexBy;\n meta = response.metadata || {};\n query = (typeof response.query !== 'undefined') ? response.query : {};\n\n // Ensure all required params are present\n query = extend({\n analysis_type: null,\n event_collection: null,\n filters: [],\n group_by: null,\n interval: null,\n timeframe: null,\n timezone: null\n }, query);\n\n if (query.analysis_type === 'funnel') {\n parser = 'funnel';\n }\n else if (query.analysis_type === 'extraction'){\n parser = 'extraction';\n }\n else if (query.analysis_type === 'select_unique') {\n if (!query.group_by && !query.interval) {\n parser = 'list';\n }\n // else { Not supported }\n }\n else if (query.analysis_type) {\n if (!query.group_by && !query.interval) {\n parser = 'metric';\n }\n else if (query.group_by && !query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-metric';\n parserArgs.push(query.group_by);\n }\n else {\n parser = 'grouped-metric';\n }\n }\n else if (query.interval && !query.group_by) {\n parser = 'interval';\n parserArgs.push(indexBy);\n }\n else if (query.group_by && query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-interval';\n parserArgs.push(query.group_by);\n parserArgs.push(indexBy);\n }\n else {\n parser = 'grouped-interval';\n parserArgs.push(indexBy);\n }\n }\n }\n\n if (!parser) {\n\n // Metric\n // -------------------------------\n if (typeof response.result === 'number'){\n parser = 'metric';\n }\n\n // Everything else\n // -------------------------------\n if (response.result instanceof Array && response.result.length > 0){\n\n // Interval w/ single value\n // -------------------------------\n if (response.result[0].timeframe && (typeof response.result[0].value == 'number' || response.result[0].value == null)) {\n parser = 'interval';\n parserArgs.push(indexBy)\n }\n\n // Static GroupBy\n // -------------------------------\n if (typeof response.result[0].result == 'number'){\n parser = 'grouped-metric';\n }\n\n // x, y, value for heatmap\n if (this.config.type === 'heatmap' && Object.keys(response.result[0] === 3 && typeof response.result[0].result === 'number')) {\n parser = 'heatmap-axis';\n }\n\n // Grouped Interval\n // -------------------------------\n if (response.result[0].value instanceof Array){\n parser = 'grouped-interval';\n parserArgs.push(indexBy)\n }\n\n // Funnel\n // -------------------------------\n if (typeof response.result[0] === 'number'\n && typeof response.steps !== 'undefined'){\n parser = 'funnel';\n // Move steps into query object\n query.steps = response.steps;\n }\n\n // Select Unique\n // -------------------------------\n if ((typeof response.result[0] === 'string' || typeof response.result[0] == 'number') && typeof response.steps === 'undefined'){\n parser = 'list';\n }\n\n // Extraction\n // -------------------------------\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n // Set title from saved query body, or create a default title\n if (this.config.title === undefined) {\n if (meta.display_name) {\n title = meta.display_name;\n }\n else {\n title = getDefaultTitle(query);\n }\n this.config.title = title;\n }\n\n // Set type from saved query body, or use a default type\n if (!this.config.type) {\n if (meta.visualization && meta.visualization.chart_type) {\n type = meta.visualization.chart_type;\n }\n else {\n type = getDefaultType(parser);\n }\n this.config.type = type;\n }\n\n // Define the appropriate parser\n selectedParser = Dataset.parser.apply(this, [parser].concat(parserArgs));\n\n // Parse the response with augmented query body\n dataset = selectedParser(extend(response, { 'query': query }));\n\n // Set true dates for 'interval' data\n if (parser.indexOf('interval') > -1) {\n dataset.updateColumn(0, function(value, i){\n return new Date(value);\n });\n }\n\n dataset.updateRow(0, function(value, i){\n return stripHtmlTags(value);\n });\n\n this.dataset = dataset;\n\n if (response.execution_metadata) {\n this.execution_metadata = response.execution_metadata;\n }\n\n return this;\n}\n\nfunction getDefaultTitle(query) {\n var analysis = query.analysis_type ? query.analysis_type.replace('_', ' ') : '',\n title;\n\n title = analysis.replace( /\\b./g, function(a){\n return a.toUpperCase();\n });\n\n if (query.event_collection) {\n title += ' - ' + query.event_collection;\n }\n return title;\n}\n\nfunction getDefaultType(parser) {\n let type;\n switch (parser) {\n case 'metric':\n type = 'metric';\n break;\n case 'interval':\n type = 'area';\n break;\n case 'grouped-metric':\n case 'double-grouped-metric':\n type = 'bar';\n break;\n case 'grouped-interval':\n case 'double-grouped-interval':\n type = 'line';\n break;\n case 'funnel':\n type = 'horizontal-bar';\n break;\n case 'list':\n case 'extraction':\n default:\n type = 'table';\n }\n return type;\n}\n","import c3 from 'c3';\n\nimport { each } from '../utils/each';\nimport { extend } from '../utils/extend';\nimport { extendDeep } from '../utils/extend-deep';\nimport isDateString from '../utils/assert-date-string';\nimport c3DefaultDateFormat from './c3/extensions/default-date-format';\nimport c3PaginatingLegend from './c3/extensions/paginating-legend';\nimport c3TooltipContents from './c3/extensions/tooltip-contents';\n\nimport calculateRange from '../dataset/utils/calculate-range';\nimport { calculateSumForPercents, calculatePercents } from '../dataset/utils/calculate-percents';\n\nimport message from './default/message';\nimport metric from './default/metric';\nimport table from './default/table';\nimport spinner from './default/spinner';\nimport Funnel from './default/funnel';\nimport Funnel3d from './default/funnel-3d';\nimport HorizontalFunnel from './default/horizontal-funnel';\nimport HorizontalFunnel3d from './default/horizontal-funnel-3d';\nimport MetricCombo from './default/metric-combo';\nimport Heatmap from './default/heatmap';\nimport Choropleth from './default/choropleth';\n\nexport default function(lib) {\n let timer;\n bindResizeListener(function(){\n if (timer) {\n clearTimeout(timer);\n }\n const delay = (lib.visuals.length > 12) ? 1000 : 250;\n timer = setTimeout(function(){\n each(lib.visuals, function(chart){\n const c3Chart = chart.view._artifacts.c3;\n if (c3Chart) {\n const parentWidth = c3Chart.element.parentNode.parentNode.offsetWidth;\n let width = parentWidth;\n if (chart.config.legend && chart.config.legend.show && (chart.config.legend.position === 'left' || chart.config.legend.position === 'right')) {\n const nextSiblingWidth = c3Chart.element.nextSibling ? c3Chart.element.nextSibling.offsetWidth : 0;\n const prevSiblingWidth = c3Chart.element.previousSibling ? c3Chart.element.previousSibling.offsetWidth : 0;\n width = parentWidth - prevSiblingWidth - nextSiblingWidth;\n }\n\n c3Chart.resize({\n width,\n });\n\n }\n });\n }, delay);\n });\n\n return defineC3();\n};\n\nfunction defineC3(){\n const types = {\n message,\n metric,\n table,\n spinner,\n 'funnel': new Funnel,\n 'funnel-3d': new Funnel3d,\n 'horizontal-funnel': new HorizontalFunnel,\n 'horizontal-funnel-3d': new HorizontalFunnel3d,\n 'metric-combo': new MetricCombo,\n 'heatmap': new Heatmap,\n 'choropleth': new Choropleth\n };\n\n const c3Types = [\n // Standard types\n 'area',\n 'area-spline',\n 'area-step',\n 'bar',\n 'donut',\n 'gauge',\n 'line',\n 'pie',\n 'step',\n 'spline',\n\n // Horizontal variant types\n 'horizontal-area',\n 'horizontal-area-spline',\n 'horizontal-area-step',\n 'horizontal-bar',\n 'horizontal-line',\n 'horizontal-step',\n 'horizontal-spline',\n ];\n\n const getPaddings = (element, paddingName) => {\n return parseInt(window.getComputedStyle(element)[`padding${paddingName}`].replace('px', ''));\n }\n\n function getDefaultOptions(){\n const ENFORCED_OPTIONS = {\n bindto: this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'),\n color: {\n pattern: this.config.colors\n },\n data: {\n colors: { ...this.config.colorMapping },\n columns: [],\n type: this.config.type.replace('horizontal-', '')\n },\n };\n\n const renderingElement = this.el();\n\n let height = renderingElement.offsetHeight;\n\n height -= (getPaddings(renderingElement, 'Top') + getPaddings(renderingElement, 'Bottom'));\n\n if (this.config.showTitle) {\n const titleElement = this.el().querySelector('.keen-dataviz-title');\n if (titleElement) {\n height -= titleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.subtitle) {\n const subtitleElement = this.el().querySelector('.keen-dataviz-subtitle');\n if (subtitleElement) {\n height -= subtitleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.notes) {\n const notesElement = this.el().querySelector('.keen-dataviz-notes');\n if (notesElement) {\n height -= notesElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n let width = this.el().querySelector('.c3-chart').offsetWidth\n - (getPaddings(renderingElement, 'Left') + getPaddings(renderingElement, 'Right'));\n if (width < 0) {\n width = 0;\n }\n\n const DEFAULT_OPTIONS = {\n size: {\n width,\n height:\n height > 0 ?\n height\n : undefined,\n }\n };\n\n const extendedConfig = extendDeep({}, DEFAULT_OPTIONS, this.config, ENFORCED_OPTIONS);\n\n return extendedConfig;\n }\n\n each(c3Types, function(type, index) {\n types[type] = {\n render: function(){\n const options = getDefaultOptions.call(this);\n\n // 100% for charts\n const sumArray = calculateSumForPercents(this.dataset.matrix);\n let oldMatrix = [];\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' || type === 'area-step' || type === 'area-spline')) {\n oldMatrix = this.dataset.matrix;\n this.dataset.matrix = [this.dataset.matrix[0], ...calculatePercents(this.dataset.matrix, sumArray)];\n if(!options.sparkline){\n options.axis = {\n y: {\n padding: {\n top: 0,\n },\n tick: {\n format: d => `${d}%`,\n },\n },\n };\n }\n }\n\n // range charts\n if (options.range) {\n this.dataset.matrix = [this.dataset.matrix[0], ...calculateRange(this.dataset.matrix)];\n }\n\n if (!!this.config.clearOnRender && options.data.columns.length && this.dataset && this.dataset.meta) {\n const datasetMeta = this.dataset.meta || {};\n const { type = '' } = datasetMeta;\n let spliceFrom = 0;\n const intervalTypes = ['interval'];\n if (intervalTypes.includes(type)) {\n spliceFrom = 1;\n }\n options.data.columns.splice(spliceFrom);\n }\n\n if (this.data()[0].length === 1 || this.data().length === 1) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n let removeLegend = false;\n\n if (type === 'gauge') {\n // Accommodate a neat bug:\n options.legend.show = false;\n options.data.columns = [[\n this.config.title || this.data()[1][0],\n this.data()[1][1]\n ]];\n removeLegend = true;\n }\n else if (type === 'pie' || type === 'donut') {\n options.data.columns = this.data().slice(1);\n }\n else {\n\n // Apply formatting for horizontal variant types\n if (type.indexOf('horizontal-') > -1) {\n options.axis.rotated = type.indexOf('horizontal-') > -1;\n }\n\n if (isDateString(this.data()[1][0])) {\n // TIMESERIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'timeseries';\n options.axis.x.tick = options.axis.x.tick || {\n format: this.config.dateFormat || c3DefaultDateFormat(this.data()[1][0], this.data()[2] ? this.data()[2][0] : this.data()[1][0]),\n culling: { max: 5 }\n };\n\n options.data.columns[0] = [];\n each(this.dataset.selectColumn(0), function(cell, i){\n if (i > 0) {\n cell = new Date(cell);\n }\n options.data.columns[0][i] = cell;\n });\n options.data.columns[0][0] = 'x';\n options.data.x = 'x';\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n else {\n // CATEGORIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'category';\n options.axis.x.categories = this.dataset.selectColumn(0).slice(1);\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n\n if (this.data()[0].length === 2) {\n options.legend.show = false;\n removeLegend = true;\n }\n\n each(this.data()[0], function(cell, i){\n if (i > 0) {\n options.data.columns.push(this.dataset.selectColumn(i));\n }\n }.bind(this));\n }\n\n if (removeLegend){\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n legendElement.remove();\n options.size.width = this.el().querySelector('.c3-chart').offsetWidth;\n }\n options.legend.show = false;\n }\n\n const chartTypesWithPartialIntervalIndicator = ['area', 'area-spline', 'area-step', 'line', 'spline', 'step'];\n\n if (options.partialIntervalIndicator\n && options.partialIntervalIndicator.show\n && chartTypesWithPartialIntervalIndicator.indexOf(options.type) > -1\n ) {\n const results = options.data.columns && options.data.columns[0];\n if (results && results.length > 1) {\n const partialResultsRegion = {\n axis: 'x',\n start: new Date(results[results.length - 2]),\n class: options.partialIntervalIndicator.className\n };\n options.regions = [...(options.regions || []), partialResultsRegion];\n }\n }\n \n if (\n !(options.tooltip && options.tooltip.show === false)\n &&\n (options.legend.show === true ||\n (options.legend\n && options.legend.tooltip\n && options.legend.tooltip.show)\n )) {\n \n // Apply custom tooltip\n options.tooltip = {\n contents: c3TooltipContents,\n format: {\n title: this.config.tooltip.format.title,\n value: (value, ratio, id, index) => {\n let valueFormatted = c3CustomTooltipFiltering.call(this, value, ratio, id, index);\n if (this.config.tooltip && this.config.tooltip.format && this.config.tooltip.format.value)\n {\n valueFormatted = this.config.tooltip.format.value.call(this, valueFormatted, ratio, id, index);\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = parseFloat(((valueFormatted / 100) * sumArray[index]).toFixed(2));\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = ((valueFormatted / 100) * sumArray[index]).toFixed(2);\n return parseFloat(valueFormatted);\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n }\n };\n }\n\n if (options.legend.show === true) {\n const c3options = { ...options };\n // Apply custom color handling\n c3options.data.color = c3CustomDataMapping.bind(this);\n\n c3options.legend.hide = true; // hide default c3 legend\n\n // Render artifacts\n this.view._artifacts['c3'] = c3.generate(c3options);\n\n c3PaginatingLegend.call(this, {...options, onLegendRendered: () => {\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n if (\n options.legend.position === 'top' ||\n options.legend.position === 'bottom'\n ) {\n c3options.size.height -= legendElement.offsetHeight;\n this.view._artifacts['c3'].resize({ height: c3options.size.height });\n } else {\n if (c3options.size.width === 0) {\n c3options.size.width = this.el().offsetWidth\n - getPaddings(this.el(), 'Left')\n - getPaddings(this.el(), 'Right');\n }\n c3options.size.width -= legendElement.offsetWidth;\n this.view._artifacts['c3'].resize({ width: c3options.size.width });\n }\n }\n },\n onPaginated: () => {\n this.view._artifacts['c3'].flush();\n }\n });\n }\n else {\n this.view._artifacts['c3'] = c3.generate(options);\n }\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts['c3']) {\n this.view._artifacts['c3'].destroy();\n this.view._artifacts['c3'] = null;\n }\n }\n };\n });\n\n return types;\n}\n\nfunction c3CustomDataMapping(color, d) {\n const type = this.config.type;\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if ((d.id && scope.indexOf(d.id) > -1)\n || (d && !d.id && scope.indexOf(d) > -1)) {\n return color;\n }\n else {\n if (type === 'donut' || type === 'pie') {\n return 'rgba(0,0,0,.1)';\n }\n else {\n return 'rgba(0,0,0,.07)';\n }\n }\n }\n else {\n return color;\n }\n}\n\nfunction c3CustomTooltipFiltering(value, ratio, id, index) {\n const type = this.config.type;\n\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if (scope.indexOf(id) > -1) {\n return value;\n }\n }\n else {\n return value;\n }\n}\n\nfunction bindResizeListener(fn){\n if (typeof window === 'undefined') return;\n window.onresize = window.resize = function(){};\n if (window.addEventListener) {\n window.addEventListener('resize', fn, true);\n }\n else if (window.attachEvent) {\n window.attachEvent('onresize', fn);\n }\n}\n","export default function (startDate, endDate) {\n const timeDiff = Math.abs(new Date(startDate).getTime() - new Date(endDate).getTime());\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'June',\n 'July',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n // Yearly (31536000000) + Monthly\n if (timeDiff >= 2419200000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getFullYear();\n };\n }\n // Daily\n else if (timeDiff >= 86400000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getDate();\n };\n }\n // Hourly\n else if (timeDiff >= 3600000) {\n return '%I:%M %p';\n }\n // Minutely\n else {\n return '%I:%M:%S %p';\n }\n}\n","import * as d3 from 'd3';\n\nimport isDateString from '../../../utils/assert-date-string';\n\nexport default function (options) {\n const cols = options.data.columns;\n const datavizInstance = this;\n const chart = this.view._artifacts.c3;\n let columns = [];\n const domNode = this.el().querySelector('.' + datavizInstance.config.theme + '-rendering');\n const legendConfig = datavizInstance.config.legend;\n\n const pagination = this.view._artifacts.pagination = {\n ...{\n hidden: [],\n labels: [],\n offset: 0,\n limit: Math.round((domNode.offsetHeight - 78) / 20),\n total: 0\n },\n ...legendConfig.pagination\n };\n\n if (options.legend.sort) {\n columns = options.legend.sort(cols);\n\n // update column order in the data, so tooltip will be the same order\n const columnsSorted = [];\n const dataColumnsSorted = [];\n if (cols[0][0] === 'x') {\n dataColumnsSorted.push(cols[0]);\n }\n columns.forEach(column => {\n let columnData = options.data.columns.find(item => item[0] === column);\n dataColumnsSorted.push(columnData);\n });\n options.data.columns = dataColumnsSorted;\n } else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i][0] !== 'x' && !isDateString(cols[i][1])) {\n columns.push(cols[i][0]);\n }\n }\n }\n\n const legendElement = this.el().querySelector('.keen-c3-legend');\n\n let align = 'vertical';\n if (legendConfig.position === 'top' || legendConfig.position === 'bottom') {\n align = 'horizontal';\n }\n\n const paginateHorizontalLeftElement = document.createElement('div');\n paginateHorizontalLeftElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-left');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalLeftElement);\n }\n\n const legendItemsElement = document.createElement('div');\n legendItemsElement.setAttribute('class', `keen-c3-legend-items keen-c3-legend-${align}-items`);\n legendElement.append(legendItemsElement);\n\n const paginateVerticalElement = document.createElement('div');\n paginateVerticalElement.setAttribute('class', 'keen-c3-legend-pagination keen-c3-legend-pagination-icons');\n if (align === 'vertical') {\n legendElement.append(paginateVerticalElement);\n }\n\n const paginateHorizontalRightElement = document.createElement('div');\n paginateHorizontalRightElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalRightElement);\n }\n\n paginateData();\n\n function paginateData(){\n pagination.labels = columns.slice(pagination.offset, pagination.offset + pagination.limit);\n pagination.total = columns.length;\n renderLegendComponent.call(datavizInstance, pagination.labels);\n if (pagination.total > pagination.limit) {\n renderPaginationComponent.call(datavizInstance);\n }\n if (options.onPaginated){\n options.onPaginated();\n }\n }\n\n function renderLegendComponent(){\n legendItemsElement.innerHTML = '';\n\n pagination.labels.forEach(label => {\n const labelShortened = legendConfig.label.textMaxLength ? label.slice(0, legendConfig.label.textMaxLength - 1) : label;\n const legendItem = document.createElement(\"div\");\n legendItem.innerHTML = `${labelShortened}`;\n legendItem.chartPartId = label;\n legendItem.setAttribute('class', 'legend-item');\n legendItemsElement.append(legendItem);\n\n const legendItemColorSample = document.createElement(\"span\");\n legendItemColorSample.setAttribute('class', 'legend-item-color-sample');\n legendItemColorSample.style.backgroundColor = chart.color(legendItem.chartPartId);\n legendItem.prepend(legendItemColorSample);\n\n const tooltipElement = document.createElement(\"div\");\n legendItem.addEventListener('mouseover', (event) => {\n chart.focus(legendItem.chartPartId);\n if (legendConfig.tooltip.show && legendItem.chartPartId.length > legendConfig.label.textMaxLength) {\n tooltipElement.setAttribute('class', `keen-c3-legend-label-overlay keen-c3-legend-position-${legendConfig.position}`);\n tooltipElement.innerHTML =\n `${\n options.legend.tooltip.pointer ? `
` : ``\n }${legendItem.chartPartId}`;\n legendItem.append(tooltipElement);\n }\n });\n legendItem.addEventListener('mouseout', (event) => {\n chart.revert();\n tooltipElement.remove();\n });\n legendItem.addEventListener('click', (event) => {\n let opacity = 1;\n const isHidden = pagination.hidden.indexOf(legendItem.chartPartId);\n if (isHidden < 0) {\n pagination.hidden.push(legendItem.chartPartId);\n opacity = .35;\n }\n else {\n pagination.hidden.splice(isHidden, 1);\n opacity = 1;\n }\n legendItem.style.opacity = opacity;\n chart.toggle(legendItem.chartPartId);\n });\n });\n\n if (options.onLegendRendered){\n options.onLegendRendered();\n options.onLegendRendered = null;\n }\n\n }\n\n function renderPaginationComponent(){\n paginateVerticalElement.innerHTML = '';\n paginateHorizontalLeftElement.innerHTML = '';\n paginateHorizontalRightElement.innerHTML = '';\n\n const arrowUp = document.createElement('i');\n const arrowDown = document.createElement('i');\n\n const paginate = (direction) => {\n if (direction === 'forward') {\n const diff = pagination.offset + pagination.limit;\n if (diff < pagination.total) {\n pagination.offset = diff;\n return;\n }\n pagination.offset = 0;\n return;\n }\n\n const diff = pagination.offset - pagination.limit;\n if (diff >= 0) {\n pagination.offset = diff;\n return;\n }\n\n pagination.offset = Math.floor(pagination.total/pagination.limit) * pagination.limit;\n };\n\n arrowDown.addEventListener('click', () => {\n paginate('forward');\n paginateData();\n clearSelectedText();\n });\n\n arrowUp.addEventListener('click', () => {\n paginate('backward');\n paginateData();\n clearSelectedText();\n });\n\n if (legendConfig.position === 'left' || legendConfig.position === 'right') {\n arrowUp.setAttribute('class', 'up');\n arrowDown.setAttribute('class', 'down');\n paginateVerticalElement.append(arrowDown);\n paginateVerticalElement.append(arrowUp);\n } else {\n // bottom top\n arrowUp.setAttribute('class', 'left');\n arrowDown.setAttribute('class', 'right');\n paginateHorizontalLeftElement.append(arrowUp);\n paginateHorizontalRightElement.append(arrowDown);\n }\n\n }\n\n function clearSelectedText() {\n let selection;\n if (document.selection && document.selection.empty) {\n selection = document.selection;\n selection.empty();\n }\n else if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n }\n }\n}\n","import { escapeHtml } from '../../../utils/escape-html';\n\nexport default function (d, defaultTitleFormat, defaultValueFormat, color) {\n let text;\n let title;\n // Set config options or defaults\n const nameFormat = this.config.tooltip_format_name || function (name) { return name; };\n const titleFormat = this.config.tooltip_format_title || defaultTitleFormat;\n const valueFormat = this.config.tooltip_format_value || defaultValueFormat;\n\n // Reverse list to match legend\n for (let i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n if (!text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n let name = nameFormat(d[i].name);\n let value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n let bgcolor = this.levelColor ? this.levelColor(d[i].value) : color(d[i].id);\n if (value && !isNaN(value)) {\n text += \"\";\n if (name.indexOf('__tooltip_ignore_name_field__') === -1) {\n text += \"\";\n }\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + escapeHtml(title) + \"
\" + escapeHtml(name) + \"\" + escapeHtml(value) + \"
\";\n}\n","export default function calculateRange(matrix) {\n const newValues = matrix.slice(1).map(d => d.map((e, i) => {\n if (typeof e === 'number') {\n if (i === 1) {\n return e - d[i + 1];\n }\n }\n return e;\n }));\n return newValues;\n}","export function calculateSumForPercents(matrix) {\n const sumArray = [];\n matrix.slice(1).forEach((d, i) => {\n d.forEach((e) => {\n if (typeof e === 'number') {\n if (!sumArray[i]) {\n sumArray[i] = e;\n return sumArray[i];\n }\n sumArray[i] += e;\n }\n return sumArray[i];\n });\n });\n return sumArray;\n}\n\nexport function calculatePercents(matrix, sumArray) {\n const newValues = matrix.slice(1).map((d, i) => d.map((e) => {\n if (typeof e === 'number') {\n return (e / sumArray[i]) * 100;\n }\n return e;\n }));\n return newValues;\n}\n","import { escapeHtml } from '../../utils/escape-html';\nimport renderDownloadButton from '../../utils/render-download-btn';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default {\n render: function(text){\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n const msg = document.createElement('span');\n\n const titleContainer = document.createElement('div');\n const subtitleContainer = document.createElement('div');\n const notesContainer = document.createElement('div');\n\n outer.className = this.config.theme + ' keen-dataviz-box';\n inner.className = this.config.theme + '-message';\n\n // Create title and notes for message\n titleContainer.className = this.config.theme + '-title';\n titleContainer.innerHTML = escapeHtml(this.config.title || '');\n subtitleContainer.className = this.config.theme + '-subtitle';\n subtitleContainer.innerHTML = escapeHtml(this.config.subtitle || '');\n notesContainer.className = this.config.theme + '-notes';\n notesContainer.innerHTML = escapeHtml(this.config.notes || '');\n\n msg.innerHTML = escapeHtml(text) || '';\n inner.appendChild(msg);\n\n if (this.config.title && this.config.showTitle) {\n outer.appendChild(titleContainer);\n }\n\n if (this.config.subtitle) {\n outer.appendChild(subtitleContainer);\n }\n\n outer.appendChild(inner);\n\n if (this.config.notes) {\n outer.appendChild(notesContainer);\n }\n\n if (this.config.ui\n && this.config.ui.buttons\n && this.config.ui.buttons.download\n && this.config.ui.buttons.download.type) {\n renderDownloadButton({\n element: this.el(),\n data: escapeHtml(text) || '',\n type: this.config.ui.buttons.download.type,\n label: this.config.ui.buttons.download.label,\n })\n }\n\n if (this.config.utils\n && this.config.utils.clickToCopyToClipboard) {\n titleContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n notesContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n msg.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n\n this.el().innerHTML = '';\n this.el().appendChild(outer);\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import exportImage from './export-svg';\nimport exportData from './export-data';\n\nexport default function downloadResults(obj) {\n const { event, type, data } = obj;\n event.preventDefault();\n const supportedFormats = ['json', 'csv', 'jpg', 'jpeg', 'png'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = '';\n let content = '';\n\n if (format === 'png') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n });\n return;\n }\n\n if (format === 'jpg' || format === 'jpeg') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n quality: 1,\n bgcolor: '#fff',\n });\n return;\n }\n\n if (format === 'json') {\n exportData({ type: format, data });\n }\n\n if (format === 'csv') {\n exportData({ type: format, data });\n }\n}\n","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { prettyNumber } from '../../utils/pretty-number';\nimport { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nfunction formatExtractionData(res, prop) {\n const { query, result } = res;\n const formattedResult = [];\n if (query.analysis_type !== 'extraction') throw new Error('Analysis type is not an extraction!');\n if (Array.isArray(result)) {\n result.forEach((item) => {\n const itemProp = prop.split('.').reduce((acc, val) => (acc && acc[val]) || null, item);\n const obj = {\n query,\n result: itemProp,\n };\n formattedResult.push(obj);\n });\n }\n return formattedResult;\n}\n\nexport default {\n render: function(){\n let color = this.config.colors[0];\n const theme = this.config.theme;\n const title = this.config.title;\n const subtitle = this.config.subtitle;\n const opts = this.config;\n let value = '-';\n let prevValue= '';\n let html = '';\n let prefix = '';\n let suffix = '';\n let formattedNum;\n let flexDifferenceStyle = '';\n let resultDifference = '';\n let differenceStyle = '';\n let smallerValue = '';\n const { results, previousResults, isExtraction, comparedProp } = this.config;\n if(results && previousResults){\n flexDifferenceStyle = previousResults ? ' metric-comparison' : '';\n smallerValue = previousResults && title ? '-smaller' : '';\n resultDifference = results.result - previousResults.result;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n if (this.data() && this.data()[1] && this.data()[1][1] && typeof this.data()[1][1] === 'number') {\n value = this.data()[1][1];\n }\n\n if (isExtraction && comparedProp) {\n const formattedResult = formatExtractionData(results, comparedProp);\n \n value = formattedResult[0].result;\n prevValue = formattedResult[1].result;\n\n flexDifferenceStyle = prevValue ? ' metric-comparison' : '';\n smallerValue = prevValue && title ? '-smaller' : '';\n resultDifference = value - prevValue;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n formattedNum = value;\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(value)) ) {\n formattedNum = prettyNumber(value);\n if(results && previousResults){\n resultDifference = prettyNumber(resultDifference);\n }\n }\n\n if (opts['prefix']) {\n prefix = '' + opts['prefix'] + '';\n }\n if (opts['suffix']) {\n suffix = '' + opts['suffix'] + '';\n }\n html += '
';\n html += '
';\n if (results && previousResults) {\n html += '
' + escapeHtml(resultDifference) + '
';\n }\n if (isExtraction && comparedProp) {\n if (value && prevValue) {\n html += '
' + escapeHtml(resultDifference) + '
';\n html += '' + prevValue + '';\n } else {\n html += '

No data to display

';\n }\n }\n html += '
' + prefix + escapeHtml(formattedNum) + suffix + '
';\n if (title) {\n html += '
' + escapeHtml(title) + '
';\n }\n if (subtitle) {\n html += '
' + escapeHtml(subtitle) + '
';\n }\n html += '
';\n html += '
';\n\n this.el().innerHTML = html;\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const resultClassName = `.${theme}-metric-value${smallerValue}`;\n document.querySelector(resultClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n\n if (results && previousResults) {\n const previousResultsClassName = `.${theme}-metric${differenceStyle}`;\n document.querySelector(previousResultsClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n }\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nlet currentPage;\nfunction _generateTableRows(datavizInstance, dataset) {\n let html = '';\n const defaultConfig = {\n page: 1,\n limit: 0,\n arrows: true\n };\n let customConfig = {};\n if (datavizInstance.config.table && datavizInstance.config.table.pagination) {\n customConfig = datavizInstance.config.table.pagination;\n }\n const config = {\n ...defaultConfig,\n ...customConfig\n };\n\n if (!currentPage){\n currentPage = config.page;\n }\n\n let datasetPaginated;\n let pages = 0;\n if (config.limit === 0) {\n datasetPaginated = dataset.slice(1); // remove header\n } else {\n const start = config.limit * (currentPage - 1) + 1;\n const end = start + config.limit;\n datasetPaginated = dataset.slice(start, end);\n pages = Math.ceil((dataset.length - 1) / config.limit);\n }\n\n let columnsArray = datavizInstance.config.table.columns ?\n datavizInstance.config.table.columns :\n datavizInstance.dataset.matrix[0];\n\n const colNamesToMap = {};\n const {\n mapValues,\n mapDates,\n } = datavizInstance.config.table;\n for (let key in mapValues){\n colNamesToMap[columnsArray.indexOf(key)] = key;\n }\n\n for (let row of datasetPaginated) {\n html += '';\n for (let [index, rowColValue] of row.entries()) {\n if (mapDates && rowColValue instanceof Date) {\n rowColValue = mapDates(rowColValue);\n }\n\n let rowColValueEscaped = escapeHtml(rowColValue);\n if(colNamesToMap[index]){\n html += `${mapValues[colNamesToMap[index]](rowColValueEscaped)}`;\n continue;\n }\n html += `${rowColValueEscaped}`\n }\n html += '';\n }\n\n if (pages > 1){\n html += ``;\n let pageNumber = 1;\n const prevPage = (currentPage === 1) ? 1 : (currentPage - 1);\n const nextPage = (currentPage === pages) ? pages : (currentPage + 1);\n if (config.arrows){\n html += `«`;\n }\n while (pageNumber <= pages){\n html += `${pageNumber}`;\n pageNumber++;\n }\n if (config.arrows){\n html += `»`;\n }\n html += '';\n }\n\n return html;\n}\n\nfunction _generateTableHeader(datavizInstance, dataset) {\n let html = '';\n let fieldNumber = -1;\n const tableConfig = datavizInstance.config.table;\n const columnNames =\n (tableConfig && tableConfig.columns)\n || dataset[0];\n for (let colName of columnNames) {\n let colNameEscaped = escapeHtml(colName);\n fieldNumber +=1;\n html += `${colNameEscaped}`;\n }\n return html;\n}\n\n\n const render = function() {\n const dataset = this.dataset.matrix;\n\n const el = this.el();\n const theme = this.config.theme;\n const datavizInstance = this;\n\n let html = '';\n\n const isEmpty = dataset.length === 1 && dataset[0].length === 0;\n if (isEmpty) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n // Open wrapper\n html += `
`;\n\n // Static, scrollable table\n html += ``;\n html += '';\n html += '';\n html += _generateTableHeader(datavizInstance, dataset);\n html += '';\n html += '';\n // Table data\n html += '';\n html += _generateTableRows(datavizInstance, dataset);\n html += '';\n html += '
';\n/* */\n // Close wrapper\n html += '
';\n\n // Inject HTML string\n el.querySelector(`.${theme}-rendering`).innerHTML = html;\n\n el\n .querySelectorAll(`.${theme}-rendering th`)\n .forEach((item) => {\n item.addEventListener('click', (event) => {\n let sortOrder = event.target.getAttribute('order') || 'asc';\n let fieldNumber = event.target.getAttribute('fieldNumber');\n let checker = function (a, b) {\n let sortOrderNumber = (sortOrder === 'asc') ? 1 : -1;\n\n if (typeof a[fieldNumber] === 'string') {\n let nameA = a[fieldNumber].toUpperCase(); // ignore upper and lowercase\n let nameB = b[fieldNumber].toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1 * sortOrderNumber;\n }\n if (nameA > nameB) {\n return 1* sortOrderNumber;\n }\n\n // names must be equal\n return 0;\n }\n return (a[fieldNumber] - b[fieldNumber]) * sortOrderNumber;\n };\n\n if (sortOrder === 'asc') {\n sortOrder = 'desc';\n } else {\n sortOrder = 'asc'\n }\n event.target.setAttribute('order', sortOrder);\n\n const first = this.dataset.matrix.shift();\n this.dataset.matrix.sort(checker);\n this.dataset.matrix.unshift(first);\n\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n });\n });\n\n\n const attachBtnEventListeners = () => {\n el.querySelectorAll('.btn').forEach(btn => {\n btn.addEventListener('click', (event) => {\n currentPage = parseInt(event.target.getAttribute('data-page'));\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n }, true);\n });\n };\n\n attachBtnEventListeners(datavizInstance, el, theme);\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const tableClass = `.${theme}-table-dataset`;\n document.querySelector(tableClass)\n .addEventListener('click', (e) => {\n const { nodeName, innerText } = e.target;\n if (nodeName === 'TD') {\n copyToClipboard(innerText, e);\n }\n });\n }\n };\n\n\n\nconst update = function(){\n // no special update handling\n this.render();\n };\n\nconst destroy= function(){};\n\nexport default { render, update, destroy };\n","export default {\n render: function(){\n let html = '';\n const artifacts = this.view._artifacts.spinner = {};\n\n // Build DOM element\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n this.el().innerHTML = html;\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts.spinner) {\n if (this.view._artifacts.spinner.interval) {\n clearInterval(this.view._artifacts.spinner.interval);\n }\n this.view._artifacts.spinner.radius = 0;\n try {\n delete this.view._artifacts.spinner;\n }\n catch (e) {\n this.view._artifacts.spinner = undefined;\n }\n }\n this.el().innerHTML = '';\n }\n};\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 30, left: 200 };\n let yMarginElement = 0;\n if(marginBetweenSteps){\n yMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if (countingMethod === \"relative\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth =\n (prevElemWidth * d[1]) / matrix[i][1]);\n percent = ((d[1] / matrix[i][1]) * 100).toFixed(decimals);\n }\n if (countingMethod === \"absolute\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth = (svgWidth * d[1]) / matrix[1][1]);\n percent = ((d[1] / matrix[1][1]) * 100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n \n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('x2', (d) => { return d.points[1].x + margin.left; })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('x2', polygons[polygons.length-1].points[2].x + margin.left)\n .attr('y2', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2)\n + (margin.left * 0.9);\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 16\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 12\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top;\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement - 5;\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 60, left: 200 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n const yMarginElement = elemHeight * 0.3;\n const shadowCut = (yMarginElement * 2.5);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = prevElemWidth * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = svgWidth * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[3].x,\n y: d.points[3].y\n },\n {\n x: d.points[2].x,\n y: d.points[2].y\n },\n {\n x: effect3d === 'left'\n ? d.points[2].x\n : d.points[2].x - shadowCut < svgWidth/2\n ? svgWidth/2 + 5\n : d.points[2].x - shadowCut,\n y: effect3d === 'left'\n ? d.points[2].y\n : d.points[2].y + (yMarginElement/1.5)\n },\n {\n x: effect3d === 'right'\n ? d.points[3].x\n : d.points[3].x + shadowCut > svgWidth/2\n ? svgWidth/2 - 5\n : d.points[3].x + shadowCut,\n y: effect3d === 'right'\n ? d.points[3].y\n : d.points[3].y + (yMarginElement/1.5)\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('x2', (d, i) => {\n if(i === 0){\n return d.points[1].x + margin.left;\n }\n return d.points[1].x + margin.left - shadowCut;\n })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('x2', polygons[polygons.length-1].points[2].x\n + margin.left - shadowCut )\n .attr('y2', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5 + (yMarginElement/4)\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2) + 130;\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 18\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 3\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n let xMarginElement = 0;\n if(marginBetweenSteps){\n xMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined'\n || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left - (xMarginElement/2))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/2))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight + (margin.bottom * 0.5) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', (d) => {\n if(d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) > svgHeight + margin.bottom - 40 + margin.top){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n return d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n const xMarginElement = elemWidth * 0.3;\n const shadowCut = (xMarginElement/1.5);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[0].x,\n y: d.points[0].y\n },\n {\n x: d.points[1].x,\n y: d.points[1].y\n },\n {\n x: effect3d === 'top'\n ? d.points[1].x\n : d.points[1].x - shadowCut,\n y: effect3d === 'top'\n ? d.points[1].y\n : d.points[1].y - xMarginElement < svgHeight/2\n ? svgHeight/2 + 5\n : d.points[1].y - xMarginElement\n },\n {\n x: effect3d === 'bottom'\n ? d.points[0].x\n : d.points[0].x - shadowCut,\n y: effect3d === 'bottom'\n ? d.points[0].y\n : d.points[0].y + xMarginElement > svgHeight/2\n ? svgHeight/2 - 5\n : d.points[0].y + xMarginElement\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left + (xMarginElement/4))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/4))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', svgHeight + (margin.bottom * 0.4) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', (d) => {\n if(d.points[2].y + (elemWidth/4) >\n svgHeight + margin.bottom - 40){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n if(d.points[2].y + (elemWidth/4) < d.points[1].y){\n return d.points[1].y + 20 + margin.top;\n }\n return d.points[2].y + (elemWidth/4) + 10 + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","/* eslint-env browser */\nimport c3 from 'c3';\nimport { each } from '../../utils/each';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class MetricCombo {\n render() {\n const {\n container,\n metricResults,\n title,\n showTitle,\n subtitle,\n tooltip,\n utils,\n } = this.config;\n\n const colors = ['#c3c4cc'];\n const columns = [];\n columns[0] = [];\n each(this.dataset.selectColumn(0), (c, i) => {\n let cell;\n if (i > 0) {\n cell = new Date(c);\n }\n columns[0][i] = cell;\n });\n columns[0][0] = 'x';\n\n each(this.data()[0], (c, i) => {\n if (i > 0) {\n columns.push(this.dataset.selectColumn(i));\n }\n });\n\n const prevResult = (metricResults && metricResults.previous && metricResults.previous.result)\n || 0;\n const currResult = (metricResults && metricResults.current && metricResults.current.result)\n || 0;\n const count = currResult - prevResult;\n const percentDifference = prevResult === 0 ? '-' : prettyNumber(Math.round((count / prevResult) * 100));\n let labelClass = 'keen-dataviz-metric-green';\n let iconClass = 'arrow-green';\n\n if (percentDifference < 0) {\n labelClass = 'keen-dataviz-metric-red';\n iconClass = 'arrow-red';\n }\n\n const containerTitle = (showTitle && title) ? `
${title}
` : '';\n const containerSubtitle = subtitle ? `
${subtitle}
` : '';\n const containerElement = document.querySelector(container);\n containerElement.innerHTML = `\n
\n
\n
\n ${containerTitle}\n ${containerSubtitle}\n
${percentDifference} %
\n
${prettyNumber(count)}
\n
\n
\n
\n
\n
\n
`;\n const chartRoot = containerElement.querySelector('.c3-chart');\n const chart = c3.generate({\n bindto: chartRoot,\n color: {\n pattern: colors,\n },\n title,\n legend: {\n show: false,\n },\n data: {\n x: 'x',\n columns,\n type: 'area-spline',\n selection: {\n draggable: false,\n enabled: true,\n multiple: true,\n },\n },\n point: {\n r: 0,\n focus: {\n expand: {\n r: 5,\n enabled: true,\n },\n },\n select: {\n r: 5,\n enabled: true,\n },\n },\n axis: {\n y: {\n show: false,\n },\n x: {\n show: false,\n },\n },\n grid: {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n },\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: -4,\n },\n tooltip,\n });\n\n if (utils && utils.clickToCopyToClipboard) {\n const currentCount = document.querySelector('.current-count').innerText;\n document.querySelector('.keen-dataviz-metric-combo')\n .addEventListener('click', e => copyToClipboard(currentCount, e));\n }\n }\n\n update() {\n this.destroy();\n this.render();\n }\n\n destroy() {\n const { container } = this.config;\n const containerElement = document.querySelector(container);\n const chartContainer = containerElement.querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport Rangeable from 'rangeable';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Heatmap {\n render() {\n const {\n colors,\n container,\n heatmap: { showSlider, simpleTooltip },\n } = this.config;\n const {\n matrix,\n meta,\n } = this.dataset;\n const margin = {\n top: 10,\n right: 10,\n bottom: 50,\n left: 50,\n };\n const baseWidth = 600;\n const baseHeight = 600;\n const heatmapContainer = d3.select(container);\n const containerWidth = parseInt(heatmapContainer.style('width'), 10) || baseWidth;\n const containerHeight = parseInt(heatmapContainer.style('height'), 10) || baseHeight;\n const chartContainer = this.el().querySelector('.c3-chart');\n const svgWidth = containerWidth - margin.right - margin.left;\n const svgHeight = containerHeight - margin.top - margin.bottom;\n\n const xLabel = new Set();\n const yLabel = new Set();\n\n const formatData = () => {\n const dateFormat = d3.timeFormat('%B %d');\n const timeFormat = d3.timeFormat('%H:%M');\n const arr = [];\n matrix.forEach((element) => {\n if (meta.type === 'heatmap') {\n if (typeof element[0][2] === 'number') {\n const obj = {\n x: element[0][0],\n y: element[0][1],\n value: element[0][2],\n };\n arr.push(obj);\n }\n } else {\n const timestamp = Date.parse(element[0]);\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(timestamp)) {\n const obj = {\n x: dateFormat(new Date(element[0])),\n y: timeFormat(new Date(element[0])),\n value: element[1],\n };\n arr.push(obj);\n }\n }\n });\n return arr;\n };\n\n const formattedData = formatData();\n\n formattedData.forEach((item) => {\n xLabel.add(item.x);\n yLabel.add(item.y);\n });\n\n const refValue = formattedData[0].value;\n const minRange = formattedData\n .reduce((min, curr) => (curr.value < min ? curr.value : min), refValue);\n const maxRange = formattedData\n .reduce((max, curr) => (curr.value > max ? curr.value : max), refValue);\n\n const getColor = () => {\n const defaultColor = '#00BBDE';\n const baseColor = colors[0];\n let rgb = d3.rgb(defaultColor);\n if (d3.color(baseColor)) {\n rgb = d3.rgb(baseColor);\n }\n return rgb;\n };\n\n const getColorAlpha = d3.scaleLinear()\n .domain([0, d3.max(formattedData, d => d.value)])\n .range([0, 1]);\n\n const convertRGBAtoRGB = (color, bg = [255, 255, 255]) => {\n const opacity = color[3];\n\n return [Math.floor(((1 - opacity) * bg[0]) + (opacity * color[0]) + 0.5),\n Math.floor(((1 - opacity) * bg[1]) + (opacity * color[1]) + 0.5),\n Math.floor(((1 - opacity) * bg[2]) + (opacity * color[2]) + 0.5)];\n };\n\n const getTileColor = (value) => {\n const alpha = getColorAlpha(value);\n const rgb = getColor();\n const solidColor = convertRGBAtoRGB([rgb.r, rgb.g, rgb.b, alpha]);\n const color = `rgb(${solidColor[0]}, ${solidColor[1]}, ${solidColor[2]})`;\n return color;\n };\n\n const svg = d3.select(chartContainer)\n .append('svg')\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${containerWidth} ${containerHeight}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr(\n 'transform',\n `translate(${margin.left},${margin.top})`,\n );\n\n if (showSlider) {\n // eslint-disable-next-line no-unused-vars\n const rangeableInput = d3.select(container)\n .append('input')\n .attr('type', 'range')\n .attr('class', 'keen-dataviz-slider');\n\n const handleSliderChange = (data) => {\n const rects = svg.selectAll('rect');\n const [min, max] = data;\n\n rects.each((d, i, nodes) => {\n d3.select(nodes[i])\n .style('visibility', () => ((d.value > max || d.value < min) ? 'hidden' : 'visible'));\n });\n };\n\n // eslint-disable-next-line no-unused-vars\n const rangeable = new Rangeable('.keen-dataviz-slider', {\n multiple: true,\n min: minRange,\n max: maxRange,\n value: [minRange, maxRange],\n onChange: data => handleSliderChange(data),\n });\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${getColor()};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${getColor()} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${getColor()};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement('style');\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector('script');\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const xLabelBase = 5;\n const yLabelBase = 10;\n\n const getAxisLabelRatio = (base, labelSize) => Math.floor(labelSize / base) + 1;\n const xAxis = d3.scaleBand()\n .range([0, svgWidth])\n .domain([...xLabel])\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .attr('transform', `translate(0, ${svgHeight})`)\n .call(d3.axisBottom(xAxis).tickSize(0))\n .selectAll('text')\n .attr('dy', '1em')\n .filter((d, i) => i % getAxisLabelRatio(xLabelBase, xLabel.size))\n .style('display', 'none');\n\n const yAxis = d3.scaleBand()\n .range([svgHeight, 0])\n .domain([...yLabel].sort())\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .call(d3.axisLeft(yAxis).tickSize(0))\n .selectAll('text')\n .filter((d, i) => i % getAxisLabelRatio(yLabelBase, yLabel.size))\n .style('display', 'none');\n\n const chartTooltip = d3.select(container)\n .append('div')\n .attr('class', 'keen-dataviz-tooltip')\n .style('opacity', 0)\n .style('background-color', 'white')\n .style('border', `2px solid ${getColor().toString()}`)\n .style('font-size', '14px')\n .style('padding', '2px 8px')\n .style('box-shadow', '2px 2px 4px rgba(0,0,0,0.25')\n .style('display', 'none')\n .style('position', 'fixed');\n\n const handleMouseOver = () => {\n d3.select(d3.event.target)\n .raise()\n .style('transition', 'transform 150ms ease-out')\n .style('outline', `1px solid ${getColor()}`)\n .style('transform', 'translate(0px, -4px)');\n\n chartTooltip\n .style('opacity', 1)\n .style('display', 'block');\n };\n\n const handleMouseMove = (d) => {\n let tooltipContent = `\n \n value:\n ${d.value}\n `;\n if (!simpleTooltip) {\n tooltipContent = `\n \n xAxis:\n ${d.x}\n \n \n yAxis:\n ${d.y}\n \n ${tooltipContent}\n `;\n }\n chartTooltip\n .html(`\n \n ${tooltipContent}\n
\n `)\n .style('left', `${d3.event.clientX + 10}px`)\n .style('top', `${d3.event.clientY + 10}px`);\n };\n\n const handleMouseLeave = () => {\n d3.select(d3.event.target)\n .style('outline', 'none')\n .style('transform', 'none');\n\n chartTooltip\n .style('opacity', 0)\n .style('display', 'none');\n };\n\n const handleClick = d => copyToClipboard(d.value);\n\n svg.selectAll()\n .data(formattedData, d => `${d.x}:${d.y}`)\n .enter()\n .append('rect')\n .attr('x', d => xAxis(d.x))\n .attr('y', d => yAxis(d.y))\n .attr('width', xAxis.bandwidth())\n .attr('height', yAxis.bandwidth())\n .style('fill', d => getTileColor(d.value))\n .style('cursor', 'pointer')\n .on('mouseover', handleMouseOver)\n .on('mousemove', handleMouseMove)\n .on('mouseleave', handleMouseLeave)\n .on('click', handleClick);\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = this.el().querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from \"d3\";\nimport Rangeable from \"rangeable\";\nimport { prettyNumber } from \"../../utils/pretty-number\";\nimport copyToClipboard from \"../../utils/copy-to-clipboard\";\n\nexport default class Choropleth {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n utils,\n title,\n choropleth: {\n map,\n borders: { show, size, color },\n showSlider\n }\n } = this.config;\n const opts = this.config;\n const choroplethContainer = d3.select(container);\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n const width = Number(choroplethContainer.style(\"width\").slice(0, -2));\n const height = Number(choroplethContainer.style(\"height\").slice(0, -2));\n let heightChanges = 0;\n if (title) heightChanges += 31;\n if (showSlider) heightChanges += 20;\n const chart = chartContainer\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height - heightChanges);\n\n const onlyValues = matrix.slice(1).map(el => el[1]);\n let minVal = d3.min(onlyValues);\n const maxVal = d3.max(onlyValues);\n if(minVal === maxVal) minVal = 0;\n const lightColor = d3.hsl(colors[0]).brighter(1);\n lightColor.l = 0.95;\n const darkColor = colors[0];\n const ramp = d3\n .scaleLinear()\n .domain([minVal === undefined ? 0 : minVal, maxVal === undefined ? 0 : maxVal])\n .range([lightColor, darkColor]);\n\n d3.json(\n `https://cdn.jsdelivr.net/npm/keen-dataviz-maps@1.0.0/maps/${map}.json`\n ).then(data => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 5])\n .translateExtent([[0, 0], [width, height - 50]])\n .on(\"zoom\", zoomed);\n\n let projection;\n switch (map) {\n case \"world\":\n projection = d3.geoMercator().fitSize([width, height - 50], data);\n break;\n case \"us\":\n projection = d3\n .geoAlbersUsa()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n\n default:\n projection = d3\n .geoMercator()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n }\n\n const path = d3.geoPath().projection(projection);\n\n const usData = data.features.map(el => {\n const theOne = matrix.filter(d => d[0] === el.properties.name);\n if (theOne[0])\n return {\n ...el,\n properties: { ...el.properties, result: theOne[0][1] }\n };\n return {\n ...el,\n properties: { ...el.properties, result: 0 }\n };\n });\n\n if (showSlider) {\n const handleSliderChange = data => {\n const el = chart.selectAll(`.${elementName}`);\n const [min, max] = data;\n\n el.each((d, i, nodes) => {\n d3.select(nodes[i]).style(\"visibility\", () =>\n d.properties.result > max || d.properties.result < min\n ? \"hidden\"\n : \"visible\"\n );\n });\n };\n\n chartContainer\n .style(\"display\", \"flex\")\n .style(\"flex-direction\", \"column\")\n .style(\"justify-content\", \"center\");\n\n const rangeContainer = chartContainer\n .append(\"div\")\n .style(\"width\", \"95%\")\n .style(\"margin\", \"auto\");\n rangeContainer.append(\"input\").attr(\"id\", \"rangeSlider\");\n\n const rangeable = new Rangeable(\"#rangeSlider\", {\n type: \"double\",\n tooltips: true,\n min: 0,\n max: maxVal,\n onChange: data => handleSliderChange(data)\n });\n\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${colors[0]};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${colors[0]} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${colors[0]};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement(\"style\");\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector(\"script\");\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const elementName = map === \"world\" ? \"country\" : \"state\";\n\n chart\n .selectAll(\"path\")\n .data(usData)\n .enter()\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"class\", elementName)\n .attr(\n \"id\",\n d =>\n `${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .attr(\"cursor\", \"pointer\")\n .on(\"mouseover\", handleMouseOver)\n .on(\"mousemove\", handleMouseMove)\n .on(\"mouseout\", handleMouseOut);\n\n //borders\n if (show) {\n chart\n .selectAll(`.${elementName}`)\n .style(\"stroke\", color)\n .style(\"stroke-width\", size);\n }\n\n //tooltip\n const tooltip = d3\n .select(\".c3-chart\")\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"c3-tooltip-container\")\n .style(\"display\", \"none\")\n .style(\"position\", \"fixed\");\n\n //hover handling\n function handleMouseOver(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(1.2 * maxVal))\n .style(\"stroke-width\", 1.5 * size);\n\n tooltip.style(\"opacity\", 1).style(\"display\", \"block\");\n }\n\n function handleMouseMove(d) {\n let result = d.properties.result;\n if (\n (typeof opts[\"prettyNumber\"] === \"undefined\" ||\n opts[\"prettyNumber\"] === true) &&\n !isNaN(parseInt(d.properties.result))\n ) {\n result = prettyNumber(d.properties.result);\n }\n tooltip\n .html(\n `\n \n \n \n \n \n \n \n
${d.properties.name}
${result}
\n `\n )\n .style(\"left\", `${d3.event.clientX + 10}px`)\n .style(\"top\", `${d3.event.clientY + 10}px`);\n }\n function handleMouseOut(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .style(\"stroke-width\", size);\n\n tooltip.style(\"opacity\", 0).style(\"display\", \"none\");\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll(`.${elementName}`);\n\n label.on(\"click\", handleClickToCopy);\n\n function handleClickToCopy(data) {\n const {\n properties: { result }\n } = data;\n copyToClipboard(result, d3.event);\n }\n }\n function zoomed() {\n chart\n .selectAll(`.${elementName}`)\n .attr(\"transform\", d3.event.transform);\n }\n chart.call(zoom);\n chart.call(zoom).on(\"mousedown.zoom\", null);\n });\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n chartContainer.remove();\n }\n}\n","import copyToClipboard from './copy-to-clipboard';\n\nfunction removeClassWithTimeOut(element, className = 'copied', ms = 1000) {\n setTimeout(() => {\n element.classList.remove(className);\n }, ms);\n}\n\nfunction handleCopyToClipboard(event) {\n const { target, target: { nodeName } } = event;\n\n let value;\n if (nodeName === 'DD') {\n value = target.innerText;\n if (!target.classList.contains('copied')) {\n target.classList.add('copied');\n removeClassWithTimeOut(target);\n }\n }\n if (nodeName === 'DT') {\n value = target.nextSibling.innerText;\n if (!target.nextSibling.classList.contains('copied')) {\n target.nextSibling.classList.add('copied');\n removeClassWithTimeOut(target.nextSibling);\n }\n }\n\n copyToClipboard(value);\n}\n\nexport default function renderExecutionMetadata({\n element,\n data,\n} = {}) {\n const dataList = document.createElement('dl');\n dataList.classList = 'keen-dataviz-execution-meta';\n\n if (Object.keys(data).length) {\n Object.keys(data).forEach((item) => {\n const dt = document.createElement('dt');\n dt.innerText = item.replace(/_/g, ' ');\n dt.addEventListener('click', e => handleCopyToClipboard(e));\n\n const dd = document.createElement('dd');\n dd.innerText = data[item];\n dd.addEventListener('click', e => handleCopyToClipboard(e));\n\n dataList.append(dt);\n dataList.append(dd);\n });\n } else {\n dataList.innerText = 'No execution metadata available';\n }\n\n element.append(dataList);\n}\n","import autocollector from './autocollector';\nimport modern from './modern';\nimport dracula from './dracula';\n\nexport default {\n autocollector,\n modern,\n dracula,\n};","const palette = {\n colors: [\n '#5E77FF',\n '#9C60FE',\n '#F162FE',\n '#FD65B7',\n '#FD6768',\n '#FDB86A',\n '#F2FC6C',\n '#A5FC6E',\n '#71FB85',\n '#73FBD0',\n '#76DDFA',\n '#76f4fa',\n '#bb76fa',\n '#fa76bf'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#45B2E8',\n '#D9540D',\n '#2CAB72',\n '#2C4BAB',\n '#EDDD02',\n '#E84545',\n '#E845CE',\n '#5FCEC9',\n '#E89F45',\n '#28E43F',\n '#B765C0',\n '#458AE8',\n '#AB2C2C',\n '#AB2C75',\n '#27E5FF',\n '#7168F2',\n '#FF932B',\n '#855D00',\n '#ACE845',\n '#1C91B4'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#8be9fd',\n '#50fa7b',\n '#ffb86c',\n '#ff79c6',\n '#bd93f9',\n '#ff5555',\n '#f1fa8c',\n ]\n};\n\nexport default palette;"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/keen-dataviz.min.js b/dist/keen-dataviz.min.js index 7a90957..fc915ec 100644 --- a/dist/keen-dataviz.min.js +++ b/dist/keen-dataviz.min.js @@ -1,4 +1,4 @@ -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var i in n)("object"==typeof exports?exports:t)[i]=n[i]}}(window,function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=20)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.each=function(t,e,n){var i;if(!t)return 0;if(n=n||t,t instanceof Array){for(i=0;ie?1:t>=e?0:NaN},r=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return i(e(t),n)}),{left:function(e,n,i,r){for(null==i&&(i=0),null==r&&(r=e.length);i>>1;t(e[a],n)<0?i=a+1:r=a}return i},right:function(e,n,i,r){for(null==i&&(i=0),null==r&&(r=e.length);i>>1;t(e[a],n)>0?r=a:i=a+1}return i}}};var a=r(i),o=a.right,s=a.left,u=o,c=function(t,e){null==e&&(e=l);for(var n=0,i=t.length-1,r=t[0],a=new Array(i<0?0:i);nt?1:e>=t?0:NaN},h=function(t){return null===t?NaN:+t},p=function(t,e){var n,i,r=t.length,a=0,o=-1,s=0,u=0;if(null==e)for(;++o1)return u/(a-1)},g=function(t,e){var n=p(t,e);return n?Math.sqrt(n):n},y=function(t,e){var n,i,r,a=t.length,o=-1;if(null==e){for(;++o=n)for(i=r=n;++on&&(i=n),r=n)for(i=r=n;++on&&(i=n),r0)return[t];if((i=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(r=Math.ceil(e-t+1));++s=0?(a>=S?10:a>=A?5:a>=T?2:1)*Math.pow(10,r):-Math.pow(10,-r)/(a>=S?10:a>=A?5:a>=T?2:1)}function M(t,e,n){var i=Math.abs(e-t)/Math.max(0,n),r=Math.pow(10,Math.floor(Math.log(i)/Math.LN10)),a=i/r;return a>=S?r*=10:a>=A?r*=5:a>=T&&(r*=2),ef;)d.pop(),--h;var p,g=new Array(h+1);for(r=0;r<=h;++r)(p=g[r]=[]).x0=r>0?d[r-1]:l,p.x1=r=1)return+n(t[i-1],i-1,t);var i,r=(i-1)*e,a=Math.floor(r),o=+n(t[a],a,t);return o+(+n(t[a+1],a+1,t)-o)*(r-a)}},V=function(t,e,n){return t=m.call(t,h).sort(i),Math.ceil((n-e)/(2*(k(t,.75)-k(t,.25))*Math.pow(t.length,-1/3)))},O=function(t,e,n){return Math.ceil((n-e)/(3.5*g(t)*Math.pow(t.length,-1/3)))},G=function(t,e){var n,i,r=t.length,a=-1;if(null==e){for(;++a=n)for(i=n;++ai&&(i=n)}else for(;++a=n)for(i=n;++ai&&(i=n);return i},R=function(t,e){var n,i=t.length,r=i,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(i=t[r]).length;--e>=0;)n[--o]=i[e];return n},D=function(t,e){var n,i,r=t.length,a=-1;if(null==e){for(;++a=n)for(i=n;++an&&(i=n)}else for(;++a=n)for(i=n;++an&&(i=n);return i},z=function(t,e){for(var n=e.length,i=new Array(n);n--;)i[n]=t[e[n]];return i},F=function(t,e){if(n=t.length){var n,r,a=0,o=0,s=t[o];for(null==e&&(e=i);++a=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!i.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),o=-1,s=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o0)for(var n,i,r=new Array(n),a=0;a=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),pt.hasOwnProperty(e)?{space:pt[e],local:t}:t};var yt=function(t){var e=gt(t);return(e.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===ht&&e.documentElement.namespaceURI===ht?e.createElement(t):e.createElementNS(n,t)}})(e)};function vt(){}var _t=function(t){return null==t?vt:function(){return this.querySelector(t)}};function mt(){return[]}var xt=function(t){return null==t?mt:function(){return this.querySelectorAll(t)}},bt=function(t){return function(){return this.matches(t)}},wt=function(t){return new Array(t.length)};function St(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}St.prototype={constructor:St,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var At="$";function Tt(t,e,n,i,r,a){for(var o,s=0,u=e.length,c=a.length;se?1:t>=e?0:NaN}var Mt=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function Et(t,e){return t.style.getPropertyValue(e)||Mt(t).getComputedStyle(t,null).getPropertyValue(e)}function Lt(t){return t.trim().split(/^|\s+/)}function kt(t){return t.classList||new Vt(t)}function Vt(t){this._node=t,this._names=Lt(t.getAttribute("class")||"")}function Ot(t,e){for(var n=kt(t),i=-1,r=e.length;++i=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Rt(){this.textContent=""}function It(){this.innerHTML=""}function Nt(){this.nextSibling&&this.parentNode.appendChild(this)}function Dt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function zt(){return null}function Ft(){var t=this.parentNode;t&&t.removeChild(this)}function jt(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function Ht(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}var Bt={},Xt=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(Bt={mouseenter:"mouseover",mouseleave:"mouseout"}));function Yt(t,e,n){return t=Ut(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function Ut(t,e,n){return function(i){var r=Xt;Xt=i;try{t.call(this,this.__data__,e,n)}finally{Xt=r}}}function qt(t){return function(){var e=this.__on;if(e){for(var n,i=0,r=-1,a=e.length;i=b&&(b=x+1);!(m=v[b])&&++b=0;)(i=r[a])&&(o&&4^i.compareDocumentPosition(o)&&o.parentNode.insertBefore(i,o),o=i);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=Ct);for(var n=this._groups,i=n.length,r=new Array(i),a=0;a1?this.each((null==e?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof e?function(t,e,n){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}:function(t,e,n){return function(){this.style.setProperty(t,e,n)}})(t,e,null==n?"":n)):Et(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?function(t){return function(){delete this[t]}}:"function"==typeof e?function(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}:function(t,e){return function(){this[t]=e}})(t,e)):this.node()[t]},classed:function(t,e){var n=Lt(t+"");if(arguments.length<2){for(var i=kt(this.node()),r=-1,a=n.length;++r=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?Wt:qt,null==n&&(n=!1),i=0;if}u.mouse("drag")}function g(){ee(Xt.view).on("mousemove.drag mouseup.drag",null),ge(Xt.view,n),he(),u.mouse("end")}function y(){if(r.apply(this,arguments)){var t,e,n=Xt.changedTouches,i=a.apply(this,arguments),o=n.length;for(t=0;t>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):(e=Le.exec(t))?je(parseInt(e[1],16)):(e=ke.exec(t))?new Ye(e[1],e[2],e[3],1):(e=Ve.exec(t))?new Ye(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Oe.exec(t))?He(e[1],e[2],e[3],e[4]):(e=Ge.exec(t))?He(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Re.exec(t))?Qe(e[1],e[2]/100,e[3]/100,1):(e=Ie.exec(t))?Qe(e[1],e[2]/100,e[3]/100,e[4]):Ne.hasOwnProperty(t)?je(Ne[t]):"transparent"===t?new Ye(NaN,NaN,NaN,0):null}function je(t){return new Ye(t>>16&255,t>>8&255,255&t,1)}function He(t,e,n,i){return i<=0&&(t=e=n=NaN),new Ye(t,e,n,i)}function Be(t){return t instanceof Te||(t=Fe(t)),t?new Ye((t=t.rgb()).r,t.g,t.b,t.opacity):new Ye}function Xe(t,e,n,i){return 1===arguments.length?Be(t):new Ye(t,e,n,null==i?1:i)}function Ye(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}function Ue(){return"#"+We(this.r)+We(this.g)+We(this.b)}function qe(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function We(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Qe(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new $e(t,e,n,i)}function Ke(t){if(t instanceof $e)return new $e(t.h,t.s,t.l,t.opacity);if(t instanceof Te||(t=Fe(t)),!t)return new $e;if(t instanceof $e)return t;var e=(t=t.rgb()).r/255,n=t.g/255,i=t.b/255,r=Math.min(e,n,i),a=Math.max(e,n,i),o=NaN,s=a-r,u=(a+r)/2;return s?(o=e===a?(n-i)/s+6*(n0&&u<1?0:o,new $e(o,s,u,t.opacity)}function Ze(t,e,n,i){return 1===arguments.length?Ke(t):new $e(t,e,n,null==i?1:i)}function $e(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function Je(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}Se(Te,Fe,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:De,formatHex:De,formatHsl:function(){return Ke(this).formatHsl()},formatRgb:ze,toString:ze}),Se(Ye,Xe,Ae(Te,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Ye(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ye(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ue,formatHex:Ue,formatRgb:qe,toString:qe})),Se($e,Ze,Ae(Te,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new $e(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new $e(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,r=2*n-i;return new Ye(Je(t>=240?t-240:t+120,r,i),Je(t,r,i),Je(t<120?t+240:t-120,r,i),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var tn=Math.PI/180,en=180/Math.PI,nn=.96422,rn=1,an=.82521,on=4/29,sn=6/29,un=3*sn*sn,cn=sn*sn*sn;function ln(t){if(t instanceof hn)return new hn(t.l,t.a,t.b,t.opacity);if(t instanceof bn)return wn(t);t instanceof Ye||(t=Be(t));var e,n,i=vn(t.r),r=vn(t.g),a=vn(t.b),o=pn((.2225045*i+.7168786*r+.0606169*a)/rn);return i===r&&r===a?e=n=o:(e=pn((.4360747*i+.3850649*r+.1430804*a)/nn),n=pn((.0139322*i+.0971045*r+.7141733*a)/an)),new hn(116*o-16,500*(e-o),200*(o-n),t.opacity)}function fn(t,e){return new hn(t,0,0,null==e?1:e)}function dn(t,e,n,i){return 1===arguments.length?ln(t):new hn(t,e,n,null==i?1:i)}function hn(t,e,n,i){this.l=+t,this.a=+e,this.b=+n,this.opacity=+i}function pn(t){return t>cn?Math.pow(t,1/3):t/un+on}function gn(t){return t>sn?t*t*t:un*(t-on)}function yn(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function vn(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function _n(t){if(t instanceof bn)return new bn(t.h,t.c,t.l,t.opacity);if(t instanceof hn||(t=ln(t)),0===t.a&&0===t.b)return new bn(NaN,0=1?(n=1,e-1):Math.floor(n*e),r=t[i],a=t[i+1],o=i>0?t[i-1]:2*r-a,s=i180||n<-180?n-360*Math.round(n/360):n):Gn(isNaN(t)?e:t)}function Nn(t){return 1==(t=+t)?Dn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}(e,n,t):Gn(isNaN(e)?n:e)}}function Dn(t,e){var n=e-t;return n?Rn(t,n):Gn(isNaN(t)?e:t)}var zn=function t(e){var n=Nn(e);function i(t,e){var i=n((t=Xe(t)).r,(e=Xe(e)).r),r=n(t.g,e.g),a=n(t.b,e.b),o=Dn(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=r(e),t.b=a(e),t.opacity=o(e),t+""}}return i.gamma=t,i}(1);function Fn(t){return function(e){var n,i,r=e.length,a=new Array(r),o=new Array(r),s=new Array(r);for(n=0;na&&(r=e.slice(a,r),s[o]?s[o]+=r:s[++o]=r),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,u.push({i:o,x:Yn(n,i)})),a=Wn.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(r(n)+"rotate(",null,i)-2,x:Yn(t,e)})):e&&n.push(r(n)+"rotate("+e+i)}(a.rotate,o.rotate,s,u),function(t,e,n,a){t!==e?a.push({i:n.push(r(n)+"skewX(",null,i)-2,x:Yn(t,e)}):e&&n.push(r(n)+"skewX("+e+i)}(a.skewX,o.skewX,s,u),function(t,e,n,i,a,o){if(t!==n||e!==i){var s=a.push(r(a)+"scale(",null,",",null,")");o.push({i:s-4,x:Yn(t,n)},{i:s-2,x:Yn(e,i)})}else 1===n&&1===i||a.push(r(a)+"scale("+n+","+i+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,u),a=o=null,function(t){for(var e,n=-1,i=u.length;++n=0&&e._call.call(null,t),e=e._next;--Ci}function ji(){Vi=(ki=Gi.now())+Oi,Ci=Mi=0;try{Fi()}finally{Ci=0,function(){var t,e,n=Ai,i=1/0;for(;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Ai=e);Ti=t,Bi(i)}(),Vi=0}}function Hi(){var t=Gi.now(),e=t-ki;e>Li&&(Oi-=e,ki=t)}function Bi(t){Ci||(Mi&&(Mi=clearTimeout(Mi)),t-Vi>24?(t<1/0&&(Mi=setTimeout(ji,t-Gi.now()-Oi)),Ei&&(Ei=clearInterval(Ei))):(Ei||(ki=Gi.now(),Ei=setInterval(Hi,Li)),Ci=1,Ri(ji)))}Di.prototype=zi.prototype={constructor:Di,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Ii():+n)+(null==e?0:+e),this._next||Ti===this||(Ti?Ti._next=this:Ai=this,Ti=this),this._call=t,this._time=n,Bi()},stop:function(){this._call&&(this._call=null,this._time=1/0,Bi())}};var Xi=function(t,e,n){var i=new Di;return e=null==e?0:+e,i.restart(function(n){i.stop(),t(n+e)},e,n),i},Yi=function(t,e,n){var i=new Di,r=e;return null==e?(i.restart(t,e,n),i):(e=+e,n=null==n?Ii():+n,i.restart(function a(o){o+=r,i.restart(a,r+=e,n),t(o)},e,n),i)},Ui=dt("start","end","cancel","interrupt"),qi=[],Wi=0,Qi=1,Ki=2,Zi=3,$i=4,Ji=5,tr=6,er=function(t,e,n,i,r,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var i,r=t.__transition;function a(u){var c,l,f,d;if(n.state!==Qi)return s();for(c in r)if((d=r[c]).name===n.name){if(d.state===Zi)return Xi(a);d.state===$i?(d.state=tr,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[c]):+cWi)throw new Error("too late; already scheduled");return n}function ir(t,e){var n=rr(t,e);if(n.state>Zi)throw new Error("too late; already running");return n}function rr(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}var ar=function(t,e){var n,i,r,a=t.__transition,o=!0;if(a){for(r in e=null==e?null:e+"",a)(n=a[r]).name===e?(i=n.state>Ki&&n.state=0&&(t=t.slice(0,e)),!t||"start"===t})}(e)?nr:ir;return function(){var o=a(this,t),s=o.on;s!==i&&(r=(i=s).copy()).on(e,n),o.on=r}}(n,t,e))},attr:function(t,e){var n=gt(t),i="transform"===n?ci:sr;return this.attrTween(t,"function"==typeof e?(n.local?function(t,e,n){var i,r,a;return function(){var o,s,u=n(this);if(null!=u)return(o=this.getAttributeNS(t.space,t.local))===(s=u+"")?null:o===i&&s===r?a:(r=s,a=e(i=o,u));this.removeAttributeNS(t.space,t.local)}}:function(t,e,n){var i,r,a;return function(){var o,s,u=n(this);if(null!=u)return(o=this.getAttribute(t))===(s=u+"")?null:o===i&&s===r?a:(r=s,a=e(i=o,u));this.removeAttribute(t)}})(n,i,or(this,"attr."+t,e)):null==e?(n.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(n):(n.local?function(t,e,n){var i,r,a=n+"";return function(){var o=this.getAttributeNS(t.space,t.local);return o===a?null:o===i?r:r=e(i=o,n)}}:function(t,e,n){var i,r,a=n+"";return function(){var o=this.getAttribute(t);return o===a?null:o===i?r:r=e(i=o,n)}})(n,i,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var i=gt(t);return this.tween(n,(i.local?function(t,e){var n,i;function r(){var r=e.apply(this,arguments);return r!==i&&(n=(i=r)&&function(t,e){return function(n){this.setAttributeNS(t.space,t.local,e(n))}}(t,r)),n}return r._value=e,r}:function(t,e){var n,i;function r(){var r=e.apply(this,arguments);return r!==i&&(n=(i=r)&&function(t,e){return function(n){this.setAttribute(t,e(n))}}(t,r)),n}return r._value=e,r})(i,e))},style:function(t,e,n){var i="transform"==(t+="")?ui:sr;return null==e?this.styleTween(t,function(t,e){var n,i,r;return function(){var a=Et(this,t),o=(this.style.removeProperty(t),Et(this,t));return a===o?null:a===n&&o===i?r:r=e(n=a,i=o)}}(t,i)).on("end.style."+t,cr(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var i,r,a;return function(){var o=Et(this,t),s=n(this),u=s+"";return null==s&&(this.style.removeProperty(t),u=s=Et(this,t)),o===u?null:o===i&&u===r?a:(r=u,a=e(i=o,s))}}(t,i,or(this,"style."+t,e))).each(function(t,e){var n,i,r,a,o="style."+e,s="end."+o;return function(){var u=ir(this,t),c=u.on,l=null==u.value[o]?a||(a=cr(e)):void 0;c===n&&r===l||(i=(n=c).copy()).on(s,r=l),u.on=i}}(this._id,t)):this.styleTween(t,function(t,e,n){var i,r,a=n+"";return function(){var o=Et(this,t);return o===a?null:o===i?r:r=e(i=o,n)}}(t,i,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var i="style."+(t+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==e)return this.tween(i,null);if("function"!=typeof e)throw new Error;return this.tween(i,function(t,e,n){var i,r;function a(){var a=e.apply(this,arguments);return a!==r&&(i=(r=a)&&function(t,e,n){return function(i){this.style.setProperty(t,e(i),n)}}(t,a,n)),i}return a._value=e,a}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(or(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",(t=this._id,function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}));var t},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var i,r=rr(this.node(),n).tween,a=0,o=r.length;aQi&&n.name===e)return new fr([[t]],ra,e,+i);return null},oa=function(t){return function(){return t}},sa=function(t,e,n){this.target=t,this.type=e,this.selection=n};function ua(){Xt.stopImmediatePropagation()}var ca=function(){Xt.preventDefault(),Xt.stopImmediatePropagation()},la={name:"drag"},fa={name:"space"},da={name:"handle"},ha={name:"center"};function pa(t){return[+t[0],+t[1]]}function ga(t){return[pa(t[0]),pa(t[1])]}var ya={name:"x",handles:["w","e"].map(Aa),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},va={name:"y",handles:["n","s"].map(Aa),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},_a={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(Aa),input:function(t){return null==t?null:ga(t)},output:function(t){return t}},ma={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},xa={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},ba={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},wa={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},Sa={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function Aa(t){return{type:t}}function Ta(){return!Xt.ctrlKey&&!Xt.button}function Pa(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Ca(){return navigator.maxTouchPoints||"ontouchstart"in this}function Ma(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Ea(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function La(){return Oa(ya)}function ka(){return Oa(va)}var Va=function(){return Oa(_a)};function Oa(t){var e,n=Pa,i=Ta,r=Ca,a=!0,o=dt(u,"start","brush","end"),s=6;function u(e){var n=e.property("__brush",g).selectAll(".overlay").data([Aa("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",ma.overlay).merge(n).each(function(){var t=Ma(this).extent;ee(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),e.selectAll(".selection").data([Aa("selection")]).enter().append("rect").attr("class","selection").attr("cursor",ma.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var i=e.selectAll(".handle").data(t.handles,function(t){return t.type});i.exit().remove(),i.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return ma[t.type]}),e.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",d).filter(r).on("touchstart.brush",d).on("touchmove.brush",h).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function c(){var t=ee(this),e=Ma(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?e[1][0]-s/2:e[0][0]-s/2}).attr("y",function(t){return"s"===t.type[0]?e[1][1]-s/2:e[0][1]-s/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+s:s}).attr("height",function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+s:s})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,e,n){return!n&&t.__brush.emitter||new f(t,e)}function f(t,e){this.that=t,this.args=e,this.state=t.__brush,this.active=0}function d(){if((!e||Xt.touches)&&i.apply(this,arguments)){var n,r,o,s,u,f,d,h,p,g,y,v,_=this,m=Xt.target.__data__.type,x="selection"===(a&&Xt.metaKey?m="overlay":m)?la:a&&Xt.altKey?ha:da,b=t===va?null:wa[m],w=t===ya?null:Sa[m],S=Ma(_),A=S.extent,T=S.selection,P=A[0][0],C=A[0][1],M=A[1][0],E=A[1][1],L=0,k=0,V=b&&w&&a&&Xt.shiftKey,O=Xt.touches?(v=Xt.changedTouches[0].identifier,function(t){return le(t,Xt.touches,v)}):ue,G=O(_),R=G,I=l(_,arguments,!0).beforestart();"overlay"===m?(T&&(p=!0),S.selection=T=[[n=t===va?P:G[0],o=t===ya?C:G[1]],[u=t===va?M:n,d=t===ya?E:o]]):(n=T[0][0],o=T[0][1],u=T[1][0],d=T[1][1]),r=n,s=o,f=u,h=d;var N=ee(_).attr("pointer-events","none"),D=N.selectAll(".overlay").attr("cursor",ma[m]);if(Xt.touches)I.moved=F,I.ended=H;else{var z=ee(Xt.view).on("mousemove.brush",F,!0).on("mouseup.brush",H,!0);a&&z.on("keydown.brush",function(){switch(Xt.keyCode){case 16:V=b&&w;break;case 18:x===da&&(b&&(u=f-L*b,n=r+L*b),w&&(d=h-k*w,o=s+k*w),x=ha,j());break;case 32:x!==da&&x!==ha||(b<0?u=f-L:b>0&&(n=r-L),w<0?d=h-k:w>0&&(o=s-k),x=fa,D.attr("cursor",ma.selection),j());break;default:return}ca()},!0).on("keyup.brush",function(){switch(Xt.keyCode){case 16:V&&(g=y=V=!1,j());break;case 18:x===ha&&(b<0?u=f:b>0&&(n=r),w<0?d=h:w>0&&(o=s),x=da,j());break;case 32:x===fa&&(Xt.altKey?(b&&(u=f-L*b,n=r+L*b),w&&(d=h-k*w,o=s+k*w),x=ha):(b<0?u=f:b>0&&(n=r),w<0?d=h:w>0&&(o=s),x=da),D.attr("cursor",ma[m]),j());break;default:return}ca()},!0),pe(Xt.view)}ua(),ar(_),c.call(_),I.start()}function F(){var t=O(_);!V||g||y||(Math.abs(t[0]-R[0])>Math.abs(t[1]-R[1])?y=!0:g=!0),R=t,p=!0,ca(),j()}function j(){var t;switch(L=R[0]-G[0],k=R[1]-G[1],x){case fa:case la:b&&(L=Math.max(P-n,Math.min(M-u,L)),r=n+L,f=u+L),w&&(k=Math.max(C-o,Math.min(E-d,k)),s=o+k,h=d+k);break;case da:b<0?(L=Math.max(P-n,Math.min(M-n,L)),r=n+L,f=u):b>0&&(L=Math.max(P-u,Math.min(M-u,L)),r=n,f=u+L),w<0?(k=Math.max(C-o,Math.min(E-o,k)),s=o+k,h=d):w>0&&(k=Math.max(C-d,Math.min(E-d,k)),s=o,h=d+k);break;case ha:b&&(r=Math.max(P,Math.min(M,n-L*b)),f=Math.max(P,Math.min(M,u+L*b))),w&&(s=Math.max(C,Math.min(E,o-k*w)),h=Math.max(C,Math.min(E,d+k*w)))}f1e-6)if(Math.abs(l*s-u*c)>1e-6&&r){var d=n-a,h=i-o,p=s*s+u*u,g=d*d+h*h,y=Math.sqrt(p),v=Math.sqrt(f),_=r*Math.tan((Ba-Math.acos((p+f-g)/(2*y*v)))/2),m=_/v,x=_/y;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*c)+","+(e+m*l)),this._+="A"+r+","+r+",0,0,"+ +(l*d>c*h)+","+(this._x1=t+x*s)+","+(this._y1=e+x*u)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,i,r,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(i),s=n*Math.sin(i),u=t+o,c=e+s,l=1^a,f=a?i-r:r-i;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+u+","+c:(Math.abs(this._x1-u)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+u+","+c),n&&(f<0&&(f=f%Xa+Xa),f>Ya?this._+="A"+n+","+n+",0,1,"+l+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+l+","+(this._x1=u)+","+(this._y1=c):f>1e-6&&(this._+="A"+n+","+n+",0,"+ +(f>=Ba)+","+l+","+(this._x1=t+n*Math.cos(r))+","+(this._y1=e+n*Math.sin(r))))},rect:function(t,e,n,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +i+"h"+-n+"Z"},toString:function(){return this._}};var Wa=qa;function Qa(t){return t.source}function Ka(t){return t.target}function Za(t){return t.radius}function $a(t){return t.startAngle}function Ja(t){return t.endAngle}var to=function(){var t=Qa,e=Ka,n=Za,i=$a,r=Ja,a=null;function o(){var o,s=ja.call(arguments),u=t.apply(this,s),c=e.apply(this,s),l=+n.apply(this,(s[0]=u,s)),f=i.apply(this,s)-Na,d=r.apply(this,s)-Na,h=l*Ga(f),p=l*Ra(f),g=+n.apply(this,(s[0]=c,s)),y=i.apply(this,s)-Na,v=r.apply(this,s)-Na;if(a||(a=o=Wa()),a.moveTo(h,p),a.arc(0,0,l,f,d),f===y&&d===v||(a.quadraticCurveTo(0,0,g*Ga(y),g*Ra(y)),a.arc(0,0,g,y,v)),a.quadraticCurveTo(0,0,h,p),a.closePath(),o)return a=null,o+""||null}return o.radius=function(t){return arguments.length?(n="function"==typeof t?t:Ha(+t),o):n},o.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Ha(+t),o):i},o.endAngle=function(t){return arguments.length?(r="function"==typeof t?t:Ha(+t),o):r},o.source=function(e){return arguments.length?(t=e,o):t},o.target=function(t){return arguments.length?(e=t,o):e},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o};function eo(){}function no(t,e){var n=new eo;if(t instanceof eo)t.each(function(t,e){n.set(e,t)});else if(Array.isArray(t)){var i,r=-1,a=t.length;if(null==e)for(;++r=i.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var u,c,l,f=-1,d=n.length,h=i[r++],p=io(),g=o();++fi.length)return n;var o,s=r[a-1];return null!=e&&a>=i.length?o=n.entries():(o=[],n.each(function(e,n){o.push({key:n,values:t(e,a)})})),null!=s?o.sort(function(t,e){return s(t.key,e.key)}):o}(a(t,0,so,uo),0)},key:function(t){return i.push(t),n},sortKeys:function(t){return r[i.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}};function ao(){return{}}function oo(t,e,n){t[e]=n}function so(){return io()}function uo(t,e,n){t.set(e,n)}function co(){}var lo=io.prototype;function fo(t,e){var n=new co;if(t instanceof co)t.each(function(t){n.add(t)});else if(t){var i=-1,r=t.length;if(null==e)for(;++ii!=h>i&&n<(d-c)*(i-l)/(h-l)+c&&(r=-r)}return r}function So(t,e,n){var i,r,a,o;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(r=t[i=+(t[0]===e[0])],a=n[i],o=e[i],r<=a&&a<=o||o<=a&&a<=r)}var Ao=function(){},To=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]],Po=function(){var t=1,e=1,n=E,i=s;function r(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(_o);else{var i=y(t),r=i[0],o=i[1];e=M(r,o,e),e=w(Math.floor(r/e)*e,Math.floor(o/e)*e,e)}return e.map(function(e){return a(t,e)})}function a(n,r){var a=[],s=[];return function(n,i,r){var a,s,u,c,l,f,d=new Array,h=new Array;a=s=-1,c=n[0]>=i,To[c<<1].forEach(p);for(;++a=i,To[u|c<<1].forEach(p);To[c<<0].forEach(p);for(;++s=i,l=n[s*t]>=i,To[c<<1|l<<2].forEach(p);++a=i,f=l,l=n[s*t+a+1]>=i,To[u|c<<1|l<<2|f<<3].forEach(p);To[c|l<<3].forEach(p)}a=-1,l=n[s*t]>=i,To[l<<2].forEach(p);for(;++a=i,To[l<<2|f<<3].forEach(p);function p(t){var e,n,i=[t[0][0]+a,t[0][1]+s],u=[t[1][0]+a,t[1][1]+s],c=o(i),l=o(u);(e=h[c])?(n=d[l])?(delete h[e.end],delete d[n.start],e===n?(e.ring.push(u),r(e.ring)):d[e.start]=h[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[e.end],e.ring.push(u),h[e.end=l]=e):(e=d[l])?(n=h[c])?(delete d[e.start],delete h[n.end],e===n?(e.ring.push(u),r(e.ring)):d[n.start]=h[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[e.start],e.ring.unshift(i),d[e.start=c]=e):d[c]=h[l]={start:c,end:l,ring:[i,u]}}To[l<<3].forEach(p)}(n,r,function(t){i(t,n,r),mo(t)>0?a.push([t]):s.push(t)}),s.forEach(function(t){for(var e,n=0,i=a.length;n0&&o0&&s0&&a>0))throw new Error("invalid size");return t=i,e=a,r},r.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?xo(vo.call(t)):xo(t),r):n},r.smooth=function(t){return arguments.length?(i=t?s:Ao,r):i===s},r};function Co(t,e,n){for(var i=t.width,r=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(u-=t.data[s-a+o*i]),e.data[s-n+o*i]=u/Math.min(s+1,i-1+a-s,a))}function Mo(t,e,n){for(var i=t.width,r=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(u-=t.data[o+(s-a)*i]),e.data[o+(s-n)*i]=u/Math.min(s+1,r-1+a-s,a))}function Eo(t){return t[0]}function Lo(t){return t[1]}function ko(){return 1}var Vo=function(){var t=Eo,e=Lo,n=ko,i=960,r=500,a=20,o=2,s=3*a,u=i+2*s>>o,c=r+2*s>>o,l=xo(20);function f(i){var r=new Float32Array(u*c),f=new Float32Array(u*c);i.forEach(function(i,a,l){var f=+t(i,a,l)+s>>o,d=+e(i,a,l)+s>>o,h=+n(i,a,l);f>=0&&f=0&&d>o),Mo({width:u,height:c,data:f},{width:u,height:c,data:r},a>>o),Co({width:u,height:c,data:r},{width:u,height:c,data:f},a>>o),Mo({width:u,height:c,data:f},{width:u,height:c,data:r},a>>o),Co({width:u,height:c,data:r},{width:u,height:c,data:f},a>>o),Mo({width:u,height:c,data:f},{width:u,height:c,data:r},a>>o);var h=l(r);if(!Array.isArray(h)){var p=G(r);h=M(0,p,h),(h=w(0,Math.floor(p/h)*h,h)).shift()}return Po().thresholds(h).size([u,c])(r).map(d)}function d(t){return t.value*=Math.pow(2,-2*o),t.coordinates.forEach(h),t}function h(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,o)-s,t[1]=t[1]*Math.pow(2,o)-s}function y(){return u=i+2*(s=3*a)>>o,c=r+2*s>>o,f}return f.x=function(e){return arguments.length?(t="function"==typeof e?e:xo(+e),f):t},f.y=function(t){return arguments.length?(e="function"==typeof t?t:xo(+t),f):e},f.weight=function(t){return arguments.length?(n="function"==typeof t?t:xo(+t),f):n},f.size=function(t){if(!arguments.length)return[i,r];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return i=e,r=n,y()},f.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(t)/Math.LN2),y()},f.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?xo(vo.call(t)):xo(t),f):l},f.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},f},Oo={},Go={},Ro=34,Io=10,No=13;function Do(t){return new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}")}function zo(t){var e=Object.create(null),n=[];return t.forEach(function(t){for(var i in t)i in e||n.push(e[i]=i)}),n}function Fo(t,e){var n=t+"",i=n.length;return i9999?"+"+Fo(e,6):Fo(e,4))+"-"+Fo(t.getUTCMonth()+1,2)+"-"+Fo(t.getUTCDate(),2)+(a?"T"+Fo(n,2)+":"+Fo(i,2)+":"+Fo(r,2)+"."+Fo(a,3)+"Z":r?"T"+Fo(n,2)+":"+Fo(i,2)+":"+Fo(r,2)+"Z":i||n?"T"+Fo(n,2)+":"+Fo(i,2)+"Z":"")}var Ho=function(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function i(t,e){var i,r=[],a=t.length,o=0,s=0,u=a<=0,c=!1;function l(){if(u)return Go;if(c)return c=!1,Oo;var e,i,r=o;if(t.charCodeAt(r)===Ro){for(;o++=a?u=!0:(i=t.charCodeAt(o++))===Io?c=!0:i===No&&(c=!0,t.charCodeAt(o)===Io&&++o),t.slice(r+1,e-1).replace(/""/g,'"')}for(;o=(a=(g+v)/2))?g=a:v=a,(l=n>=(o=(y+_)/2))?y=o:_=o,r=h,!(h=h[f=l<<1|c]))return r[f]=p,t;if(s=+t._x.call(null,h.data),u=+t._y.call(null,h.data),e===s&&n===u)return p.next=h,r?r[f]=p:t._root=p,t;do{r=r?r[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(g+v)/2))?g=a:v=a,(l=n>=(o=(y+_)/2))?y=o:_=o}while((f=l<<1|c)==(d=(u>=o)<<1|s>=a));return r[d]=h,r[f]=p,t}var Ss=function(t,e,n,i,r){this.node=t,this.x0=e,this.y0=n,this.x1=i,this.y1=r};function As(t){return t[0]}function Ts(t){return t[1]}function Ps(t,e,n){var i=new Cs(null==e?As:e,null==n?Ts:n,NaN,NaN,NaN,NaN);return null==t?i:i.addAll(t)}function Cs(t,e,n,i,r,a){this._x=t,this._y=e,this._x0=n,this._y0=i,this._x1=r,this._y1=a,this._root=void 0}function Ms(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var Es=Ps.prototype=Cs.prototype;function Ls(t){return t.x+t.vx}function ks(t){return t.y+t.vy}Es.copy=function(){var t,e,n=new Cs(this._x,this._y,this._x0,this._y0,this._x1,this._y1),i=this._root;if(!i)return n;if(!i.length)return n._root=Ms(i),n;for(t=[{source:i,target:n._root=new Array(4)}];i=t.pop();)for(var r=0;r<4;++r)(e=i.source[r])&&(e.length?t.push({source:e,target:i.target[r]=new Array(4)}):i.target[r]=Ms(e));return n},Es.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return ws(this.cover(e,n),e,n,t)},Es.addAll=function(t){var e,n,i,r,a=t.length,o=new Array(a),s=new Array(a),u=1/0,c=1/0,l=-1/0,f=-1/0;for(n=0;nl&&(l=i),rf&&(f=r));if(u>l||c>f)return this;for(this.cover(u,c).cover(l,f),n=0;nt||t>=r||i>e||e>=a;)switch(s=(ed||(a=u.y0)>h||(o=u.x1)=v)<<1|t>=y)&&(u=p[p.length-1],p[p.length-1]=p[p.length-1-c],p[p.length-1-c]=u)}else{var _=t-+this._x.call(null,g.data),m=e-+this._y.call(null,g.data),x=_*_+m*m;if(x=(s=(p+y)/2))?p=s:y=s,(l=o>=(u=(g+v)/2))?g=u:v=u,e=h,!(h=h[f=l<<1|c]))return this;if(!h.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(n=e,d=f)}for(;h.data!==t;)if(i=h,!(h=h.next))return this;return(r=h.next)&&delete h.next,i?(r?i.next=r:delete i.next,this):e?(r?e[f]=r:delete e[f],(h=e[0]||e[1]||e[2]||e[3])&&h===(e[3]||e[2]||e[1]||e[0])&&!h.length&&(n?n[d]=h:this._root=h),this):(this._root=r,this)},Es.removeAll=function(t){for(var e=0,n=t.length;eu+h||rc+h||as.index){var p=u-o.x-o.vx,g=c-o.y-o.vy,y=p*p+g*g;yt.r&&(t.r=t[e].r)}function s(){if(e){var i,r,a=e.length;for(n=new Array(a),i=0;i1?(null==n?s.remove(t):s.set(t,h(n)),e):s.get(t)},find:function(e,n,i){var r,a,o,s,u,c=0,l=t.length;for(null==i?i=1/0:i*=i,c=0;c1?(c.on(t,n),e):c.on(t)}}},js=function(){var t,e,n,i,r=xs(-30),a=1,o=1/0,s=.81;function u(i){var r,a=t.length,o=Ps(t,Is,Ns).visitAfter(l);for(n=i,r=0;r=o)){(t.data!==e||t.next)&&(0===l&&(h+=(l=bs())*l),0===f&&(h+=(f=bs())*f),h1?i[0]+i.slice(2):i,+t.slice(n+1)]},Us=function(t){return(t=Ys(Math.abs(t)))?t[1]:NaN},qs=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ws(t){return new Qs(t)}function Qs(t){if(!(e=qs.exec(t)))throw new Error("invalid format: "+t);var e;this.fill=e[1]||" ",this.align=e[2]||">",this.sign=e[3]||"-",this.symbol=e[4]||"",this.zero=!!e[5],this.width=e[6]&&+e[6],this.comma=!!e[7],this.precision=e[8]&&+e[8].slice(1),this.trim=!!e[9],this.type=e[10]||""}Ws.prototype=Qs.prototype,Qs.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ks,Zs,$s,Js,tu=function(t){t:for(var e,n=t.length,i=1,r=-1;i0){if(!+t[i])break t;r=0}}return r>0?t.slice(0,r)+t.slice(e+1):t},eu=function(t,e){var n=Ys(t,e);if(!n)return t+"";var i=n[0],r=n[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")},nu={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return eu(100*t,e)},r:eu,s:function(t,e){var n=Ys(t,e);if(!n)return t+"";var i=n[0],r=n[1],a=r-(Ks=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,o=i.length;return a===o?i:a>o?i+new Array(a-o+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Ys(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},iu=function(t){return t},ru=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],au=function(t){var e,n,i=t.grouping&&t.thousands?(e=t.grouping,n=t.thousands,function(t,i){for(var r=t.length,a=[],o=0,s=e[0],u=0;r>0&&s>0&&(u+s+1>i&&(s=Math.max(1,i-u)),a.push(t.substring(r-=s,r+s)),!((u+=s+1)>i));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}):iu,r=t.currency,a=t.decimal,o=t.numerals?function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(t.numerals):iu,s=t.percent||"%";function u(t){var e=(t=Ws(t)).fill,n=t.align,u=t.sign,c=t.symbol,l=t.zero,f=t.width,d=t.comma,h=t.precision,p=t.trim,g=t.type;"n"===g?(d=!0,g="g"):nu[g]||(null==h&&(h=12),p=!0,g="g"),(l||"0"===e&&"="===n)&&(l=!0,e="0",n="=");var y="$"===c?r[0]:"#"===c&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",v="$"===c?r[1]:/[%p]/.test(g)?s:"",_=nu[g],m=/[defgprs%]/.test(g);function x(t){var r,s,c,x=y,b=v;if("c"===g)b=_(t)+b,t="";else{var w=(t=+t)<0;if(t=_(Math.abs(t),h),p&&(t=tu(t)),w&&0==+t&&(w=!1),x=(w?"("===u?u:"-":"-"===u||"("===u?"":u)+x,b=("s"===g?ru[8+Ks/3]:"")+b+(w&&"("===u?")":""),m)for(r=-1,s=t.length;++r(c=t.charCodeAt(r))||c>57){b=(46===c?a+t.slice(r+1):t.slice(r))+b,t=t.slice(0,r);break}}d&&!l&&(t=i(t,1/0));var S=x.length+t.length+b.length,A=S>1)+x+t+b+A.slice(S);break;default:t=A+x+t+b}return o(t)}return h=null==h?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,h)):Math.max(0,Math.min(20,h)),x.toString=function(){return t+""},x}return{format:u,formatPrefix:function(t,e){var n=u(((t=Ws(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Us(e)/3))),r=Math.pow(10,-i),a=ru[8+i/3];return function(t){return n(r*t)+a}}}};function ou(t){return Zs=au(t),$s=Zs.format,Js=Zs.formatPrefix,Zs}ou({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var su=function(t){return Math.max(0,-Us(Math.abs(t)))},uu=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Us(e)/3)))-Us(Math.abs(t)))},cu=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Us(e)-Us(t))+1},lu=function(){return new fu};function fu(){this.reset()}fu.prototype={constructor:fu,reset:function(){this.s=this.t=0},add:function(t){hu(du,t,this.t),hu(this,du.s,this.s),this.s?this.t+=du.t:this.s=du.t},valueOf:function(){return this.s}};var du=new fu;function hu(t,e,n){var i=t.s=e+n,r=i-e,a=i-r;t.t=e-a+(n-r)}var pu=1e-6,gu=1e-12,yu=Math.PI,vu=yu/2,_u=yu/4,mu=2*yu,xu=180/yu,bu=yu/180,wu=Math.abs,Su=Math.atan,Au=Math.atan2,Tu=Math.cos,Pu=Math.ceil,Cu=Math.exp,Mu=(Math.floor,Math.log),Eu=Math.pow,Lu=Math.sin,ku=Math.sign||function(t){return t>0?1:t<0?-1:0},Vu=Math.sqrt,Ou=Math.tan;function Gu(t){return t>1?0:t<-1?yu:Math.acos(t)}function Ru(t){return t>1?vu:t<-1?-vu:Math.asin(t)}function Iu(t){return(t=Lu(t/2))*t}function Nu(){}function Du(t,e){t&&Fu.hasOwnProperty(t.type)&&Fu[t.type](t,e)}var zu={Feature:function(t,e){Du(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,i=-1,r=n.length;++i=0?1:-1,r=i*n,a=Tu(e=(e*=bu)/2+_u),o=Lu(e),s=qu*o,u=Uu*a+s*Tu(r),c=s*i*Lu(r);Qu.add(Au(c,u)),Yu=t,Uu=a,qu=o}var nc=function(t){return Ku.reset(),Wu(t,Zu),2*Ku};function ic(t){return[Au(t[1],t[0]),Ru(t[2])]}function rc(t){var e=t[0],n=t[1],i=Tu(n);return[i*Tu(e),i*Lu(e),Lu(n)]}function ac(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function oc(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function sc(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function uc(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function cc(t){var e=Vu(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var lc,fc,dc,hc,pc,gc,yc,vc,_c,mc,xc=lu(),bc={point:wc,lineStart:Ac,lineEnd:Tc,polygonStart:function(){bc.point=Pc,bc.lineStart=Cc,bc.lineEnd=Mc,xc.reset(),Zu.polygonStart()},polygonEnd:function(){Zu.polygonEnd(),bc.point=wc,bc.lineStart=Ac,bc.lineEnd=Tc,Qu<0?(lc=-(dc=180),fc=-(hc=90)):xc>pu?hc=90:xc<-pu&&(fc=-90),mc[0]=lc,mc[1]=dc},sphere:function(){lc=-(dc=180),fc=-(hc=90)}};function wc(t,e){_c.push(mc=[lc=t,dc=t]),ehc&&(hc=e)}function Sc(t,e){var n=rc([t*bu,e*bu]);if(vc){var i=oc(vc,n),r=oc([i[1],-i[0],0],i);cc(r),r=ic(r);var a,o=t-pc,s=o>0?1:-1,u=r[0]*xu*s,c=wu(o)>180;c^(s*pchc&&(hc=a):c^(s*pc<(u=(u+360)%360-180)&&uhc&&(hc=e)),c?tEc(lc,dc)&&(dc=t):Ec(t,dc)>Ec(lc,dc)&&(lc=t):dc>=lc?(tdc&&(dc=t)):t>pc?Ec(lc,t)>Ec(lc,dc)&&(dc=t):Ec(t,dc)>Ec(lc,dc)&&(lc=t)}else _c.push(mc=[lc=t,dc=t]);ehc&&(hc=e),vc=n,pc=t}function Ac(){bc.point=Sc}function Tc(){mc[0]=lc,mc[1]=dc,bc.point=wc,vc=null}function Pc(t,e){if(vc){var n=t-pc;xc.add(wu(n)>180?n+(n>0?360:-360):n)}else gc=t,yc=e;Zu.point(t,e),Sc(t,e)}function Cc(){Zu.lineStart()}function Mc(){Pc(gc,yc),Zu.lineEnd(),wu(xc)>pu&&(lc=-(dc=180)),mc[0]=lc,mc[1]=dc,vc=null}function Ec(t,e){return(e-=t)<0?e+360:e}function Lc(t,e){return t[0]-e[0]}function kc(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eEc(i[0],i[1])&&(i[1]=r[1]),Ec(r[0],i[1])>Ec(i[0],i[1])&&(i[0]=r[0])):a.push(i=r);for(o=-1/0,e=0,i=a[n=a.length-1];e<=n;i=r,++e)r=a[e],(s=Ec(i[1],r[0]))>o&&(o=s,lc=r[0],dc=i[1])}return _c=mc=null,lc===1/0||fc===1/0?[[NaN,NaN],[NaN,NaN]]:[[lc,fc],[dc,hc]]},Qc={sphere:Nu,point:Kc,lineStart:$c,lineEnd:el,polygonStart:function(){Qc.lineStart=nl,Qc.lineEnd=il},polygonEnd:function(){Qc.lineStart=$c,Qc.lineEnd=el}};function Kc(t,e){t*=bu;var n=Tu(e*=bu);Zc(n*Tu(t),n*Lu(t),Lu(e))}function Zc(t,e,n){Gc+=(t-Gc)/++Vc,Rc+=(e-Rc)/Vc,Ic+=(n-Ic)/Vc}function $c(){Qc.point=Jc}function Jc(t,e){t*=bu;var n=Tu(e*=bu);Yc=n*Tu(t),Uc=n*Lu(t),qc=Lu(e),Qc.point=tl,Zc(Yc,Uc,qc)}function tl(t,e){t*=bu;var n=Tu(e*=bu),i=n*Tu(t),r=n*Lu(t),a=Lu(e),o=Au(Vu((o=Uc*a-qc*r)*o+(o=qc*i-Yc*a)*o+(o=Yc*r-Uc*i)*o),Yc*i+Uc*r+qc*a);Oc+=o,Nc+=o*(Yc+(Yc=i)),Dc+=o*(Uc+(Uc=r)),zc+=o*(qc+(qc=a)),Zc(Yc,Uc,qc)}function el(){Qc.point=Kc}function nl(){Qc.point=rl}function il(){al(Bc,Xc),Qc.point=Kc}function rl(t,e){Bc=t,Xc=e,t*=bu,e*=bu,Qc.point=al;var n=Tu(e);Yc=n*Tu(t),Uc=n*Lu(t),qc=Lu(e),Zc(Yc,Uc,qc)}function al(t,e){t*=bu;var n=Tu(e*=bu),i=n*Tu(t),r=n*Lu(t),a=Lu(e),o=Uc*a-qc*r,s=qc*i-Yc*a,u=Yc*r-Uc*i,c=Vu(o*o+s*s+u*u),l=Ru(c),f=c&&-l/c;Fc+=f*o,jc+=f*s,Hc+=f*u,Oc+=l,Nc+=l*(Yc+(Yc=i)),Dc+=l*(Uc+(Uc=r)),zc+=l*(qc+(qc=a)),Zc(Yc,Uc,qc)}var ol=function(t){Vc=Oc=Gc=Rc=Ic=Nc=Dc=zc=Fc=jc=Hc=0,Wu(t,Qc);var e=Fc,n=jc,i=Hc,r=e*e+n*n+i*i;return ryu?t+Math.round(-t/mu)*mu:t,e]}function ll(t,e,n){return(t%=mu)?e||n?ul(dl(t),hl(e,n)):dl(t):e||n?hl(e,n):cl}function fl(t){return function(e,n){return[(e+=t)>yu?e-mu:e<-yu?e+mu:e,n]}}function dl(t){var e=fl(t);return e.invert=fl(-t),e}function hl(t,e){var n=Tu(t),i=Lu(t),r=Tu(e),a=Lu(e);function o(t,e){var o=Tu(e),s=Tu(t)*o,u=Lu(t)*o,c=Lu(e),l=c*n+s*i;return[Au(u*r-l*a,s*n-c*i),Ru(l*r+u*a)]}return o.invert=function(t,e){var o=Tu(e),s=Tu(t)*o,u=Lu(t)*o,c=Lu(e),l=c*r-u*a;return[Au(u*r+c*a,s*n+l*i),Ru(l*n-s*i)]},o}cl.invert=cl;var pl=function(t){function e(e){return(e=t(e[0]*bu,e[1]*bu))[0]*=xu,e[1]*=xu,e}return t=ll(t[0]*bu,t[1]*bu,t.length>2?t[2]*bu:0),e.invert=function(e){return(e=t.invert(e[0]*bu,e[1]*bu))[0]*=xu,e[1]*=xu,e},e};function gl(t,e,n,i,r,a){if(n){var o=Tu(e),s=Lu(e),u=i*n;null==r?(r=e+i*mu,a=e-u/2):(r=yl(o,r),a=yl(o,a),(i>0?ra)&&(r+=i*mu));for(var c,l=r;i>0?l>a:l1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},ml=function(t,e){return wu(t[0]-e[0])=0;--a)r.point((l=c[a])[0],l[1]);else i(d.x,d.p.x,-1,r);d=d.p}c=(d=d.o).z,h=!h}while(!d.v);r.lineEnd()}}};function wl(t){if(e=t.length){for(var e,n,i=0,r=t[0];++i=0?1:-1,T=A*S,P=T>yu,C=g*b;if(Sl.add(Au(C*A*Lu(T),y*w+C*Tu(T))),o+=P?S+A*mu:S,P^h>=n^m>=n){var M=oc(rc(d),rc(_));cc(M);var E=oc(a,M);cc(E);var L=(P^S>=0?-1:1)*Ru(E[2]);(i>L||i===L&&(M[0]||M[1]))&&(s+=P^S>=0?1:-1)}}return(o<-pu||o0){for(f||(r.polygonStart(),f=!0),r.lineStart(),t=0;t1&&2&u&&d.push(d.pop().concat(d.shift())),o.push(d.filter(Cl))}return d}};function Cl(t){return t.length>1}function Ml(t,e){return((t=t.x)[0]<0?t[1]-vu-pu:vu-t[1])-((e=e.x)[0]<0?e[1]-vu-pu:vu-e[1])}var El=Pl(function(){return!0},function(t){var e,n=NaN,i=NaN,r=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?yu:-yu,u=wu(a-n);wu(u-yu)0?vu:-vu),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),t.point(a,i),e=0):r!==s&&u>=yu&&(wu(n-r)pu?Su((Lu(e)*(a=Tu(i))*Lu(n)-Lu(i)*(r=Tu(e))*Lu(t))/(r*a*o)):(e+i)/2}(n,i,a,o),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),e=0),t.point(n=a,i=o),r=s},lineEnd:function(){t.lineEnd(),n=i=NaN},clean:function(){return 2-e}}},function(t,e,n,i){var r;if(null==t)r=n*vu,i.point(-yu,r),i.point(0,r),i.point(yu,r),i.point(yu,0),i.point(yu,-r),i.point(0,-r),i.point(-yu,-r),i.point(-yu,0),i.point(-yu,r);else if(wu(t[0]-e[0])>pu){var a=t[0]0,r=wu(e)>pu;function a(t,n){return Tu(t)*Tu(n)>e}function o(t,n,i){var r=[1,0,0],a=oc(rc(t),rc(n)),o=ac(a,a),s=a[0],u=o-s*s;if(!u)return!i&&t;var c=e*o/u,l=-e*s/u,f=oc(r,a),d=uc(r,c);sc(d,uc(a,l));var h=f,p=ac(d,h),g=ac(h,h),y=p*p-g*(ac(d,d)-1);if(!(y<0)){var v=Vu(y),_=uc(h,(-p-v)/g);if(sc(_,d),_=ic(_),!i)return _;var m,x=t[0],b=n[0],w=t[1],S=n[1];b0^_[1]<(wu(_[0]-x)yu^(x<=_[0]&&_[0]<=b)){var P=uc(h,(-p+v)/g);return sc(P,d),[_,ic(P)]}}}function s(e,n){var r=i?t:yu-t,a=0;return e<-r?a|=1:e>r&&(a|=2),n<-r?a|=4:n>r&&(a|=8),a}return Pl(a,function(t){var e,n,u,c,l;return{lineStart:function(){c=u=!1,l=1},point:function(f,d){var h,p=[f,d],g=a(f,d),y=i?g?0:s(f,d):g?s(f+(f<0?yu:-yu),d):0;if(!e&&(c=u=g)&&t.lineStart(),g!==u&&(!(h=o(e,p))||ml(e,h)||ml(p,h))&&(p[0]+=pu,p[1]+=pu,g=a(p[0],p[1])),g!==u)l=0,g?(t.lineStart(),h=o(p,e),t.point(h[0],h[1])):(h=o(e,p),t.point(h[0],h[1]),t.lineEnd()),e=h;else if(r&&e&&i^g){var v;y&n||!(v=o(p,e,!0))||(l=0,i?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||e&&ml(e,p)||t.point(p[0],p[1]),e=p,u=g,n=y},lineEnd:function(){u&&t.lineEnd(),e=null},clean:function(){return l|(c&&u)<<1}}},function(e,i,r,a){gl(a,t,n,r,e,i)},i?[0,-t]:[-yu,t-yu])},kl=function(t,e,n,i,r,a){var o,s=t[0],u=t[1],c=0,l=1,f=e[0]-s,d=e[1]-u;if(o=n-s,f||!(o>0)){if(o/=f,f<0){if(o0){if(o>l)return;o>c&&(c=o)}if(o=r-s,f||!(o<0)){if(o/=f,f<0){if(o>l)return;o>c&&(c=o)}else if(f>0){if(o0)){if(o/=d,d<0){if(o0){if(o>l)return;o>c&&(c=o)}if(o=a-u,d||!(o<0)){if(o/=d,d<0){if(o>l)return;o>c&&(c=o)}else if(d>0){if(o0&&(t[0]=s+c*f,t[1]=u+c*d),l<1&&(e[0]=s+l*f,e[1]=u+l*d),!0}}}}},Vl=1e9,Ol=-Vl;function Gl(t,e,n,i){function r(r,a){return t<=r&&r<=n&&e<=a&&a<=i}function a(r,a,s,c){var l=0,f=0;if(null==r||(l=o(r,s))!==(f=o(a,s))||u(r,a)<0^s>0)do{c.point(0===l||3===l?t:n,l>1?i:e)}while((l=(l+s+4)%4)!==f);else c.point(a[0],a[1])}function o(i,r){return wu(i[0]-t)0?0:3:wu(i[0]-n)0?2:1:wu(i[1]-e)0?1:0:r>0?3:2}function s(t,e){return u(t.x,e.x)}function u(t,e){var n=o(t,1),i=o(e,1);return n!==i?n-i:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(o){var u,c,l,f,d,h,p,g,y,v,_,m=o,x=_l(),b={point:w,lineStart:function(){b.point=S,c&&c.push(l=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){u&&(S(f,d),h&&y&&x.rejoin(),u.push(x.result()));b.point=w,y&&m.lineEnd()},polygonStart:function(){m=x,u=[],c=[],_=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,r=c.length;ni&&(d-a)*(i-o)>(h-o)*(t-a)&&++e:h<=i&&(d-a)*(i-o)<(h-o)*(t-a)&&--e;return e}(),n=_&&e,r=(u=N(u)).length;(n||r)&&(o.polygonStart(),n&&(o.lineStart(),a(null,null,1,o),o.lineEnd()),r&&bl(u,s,e,a,o),o.polygonEnd());m=o,u=c=l=null}};function w(t,e){r(t,e)&&m.point(t,e)}function S(a,o){var s=r(a,o);if(c&&l.push([a,o]),v)f=a,d=o,h=s,v=!1,s&&(m.lineStart(),m.point(a,o));else if(s&&y)m.point(a,o);else{var u=[p=Math.max(Ol,Math.min(Vl,p)),g=Math.max(Ol,Math.min(Vl,g))],x=[a=Math.max(Ol,Math.min(Vl,a)),o=Math.max(Ol,Math.min(Vl,o))];kl(u,x,t,e,n,i)?(y||(m.lineStart(),m.point(u[0],u[1])),m.point(x[0],x[1]),s||m.lineEnd(),_=!1):s&&(m.lineStart(),m.point(a,o),_=!1)}p=a,g=o,y=s}return b}}var Rl,Il,Nl,Dl=function(){var t,e,n,i=0,r=0,a=960,o=500;return n={stream:function(n){return t&&e===n?t:t=Gl(i,r,a,o)(e=n)},extent:function(s){return arguments.length?(i=+s[0][0],r=+s[0][1],a=+s[1][0],o=+s[1][1],t=e=null,n):[[i,r],[a,o]]}}},zl=lu(),Fl={sphere:Nu,point:Nu,lineStart:function(){Fl.point=Hl,Fl.lineEnd=jl},lineEnd:Nu,polygonStart:Nu,polygonEnd:Nu};function jl(){Fl.point=Fl.lineEnd=Nu}function Hl(t,e){Rl=t*=bu,Il=Lu(e*=bu),Nl=Tu(e),Fl.point=Bl}function Bl(t,e){t*=bu;var n=Lu(e*=bu),i=Tu(e),r=wu(t-Rl),a=Tu(r),o=i*Lu(r),s=Nl*n-Il*i*a,u=Il*n+Nl*i*a;zl.add(Au(Vu(o*o+s*s),u)),Rl=t,Il=n,Nl=i}var Xl=function(t){return zl.reset(),Wu(t,Fl),+zl},Yl=[null,null],Ul={type:"LineString",coordinates:Yl},ql=function(t,e){return Yl[0]=t,Yl[1]=e,Xl(Ul)},Wl={Feature:function(t,e){return Kl(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,i=-1,r=n.length;++i0&&(r=ql(t[a],t[a-1]))>0&&n<=r&&i<=r&&(n+i-r)*(1-Math.pow((n-i)/r,2))pu}).map(u)).concat(w(Pu(a/h)*h,r,h).filter(function(t){return wu(t%g)>pu}).map(c))}return v.lines=function(){return _().map(function(t){return{type:"LineString",coordinates:t}})},v.outline=function(){return{type:"Polygon",coordinates:[l(i).concat(f(o).slice(1),l(n).reverse().slice(1),f(s).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],s=+t[0][1],o=+t[1][1],i>n&&(t=i,i=n,n=t),s>o&&(t=s,s=o,o=t),v.precision(y)):[[i,s],[n,o]]},v.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],r=+n[1][1],e>t&&(n=e,e=t,t=n),a>r&&(n=a,a=r,r=n),v.precision(y)):[[e,a],[t,r]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(d=+t[0],h=+t[1],v):[d,h]},v.precision=function(d){return arguments.length?(y=+d,u=rf(a,r,90),c=af(e,t,y),l=rf(s,o,90),f=af(i,n,y),v):y},v.extentMajor([[-180,-90+pu],[180,90-pu]]).extentMinor([[-180,-80-pu],[180,80+pu]])}function sf(){return of()()}var uf,cf,lf,ff,df=function(t,e){var n=t[0]*bu,i=t[1]*bu,r=e[0]*bu,a=e[1]*bu,o=Tu(i),s=Lu(i),u=Tu(a),c=Lu(a),l=o*Tu(n),f=o*Lu(n),d=u*Tu(r),h=u*Lu(r),p=2*Ru(Vu(Iu(a-i)+o*u*Iu(r-n))),g=Lu(p),y=p?function(t){var e=Lu(t*=p)/g,n=Lu(p-t)/g,i=n*l+e*d,r=n*f+e*h,a=n*s+e*c;return[Au(r,i)*xu,Au(a,Vu(i*i+r*r))*xu]}:function(){return[n*xu,i*xu]};return y.distance=p,y},hf=function(t){return t},pf=lu(),gf=lu(),yf={point:Nu,lineStart:Nu,lineEnd:Nu,polygonStart:function(){yf.lineStart=vf,yf.lineEnd=xf},polygonEnd:function(){yf.lineStart=yf.lineEnd=yf.point=Nu,pf.add(wu(gf)),gf.reset()},result:function(){var t=pf/2;return pf.reset(),t}};function vf(){yf.point=_f}function _f(t,e){yf.point=mf,uf=lf=t,cf=ff=e}function mf(t,e){gf.add(ff*t-lf*e),lf=t,ff=e}function xf(){mf(uf,cf)}var bf=yf,wf=1/0,Sf=wf,Af=-wf,Tf=Af;var Pf,Cf,Mf,Ef,Lf={point:function(t,e){tAf&&(Af=t);eTf&&(Tf=e)},lineStart:Nu,lineEnd:Nu,polygonStart:Nu,polygonEnd:Nu,result:function(){var t=[[wf,Sf],[Af,Tf]];return Af=Tf=-(Sf=wf=1/0),t}},kf=0,Vf=0,Of=0,Gf=0,Rf=0,If=0,Nf=0,Df=0,zf=0,Ff={point:jf,lineStart:Hf,lineEnd:Yf,polygonStart:function(){Ff.lineStart=Uf,Ff.lineEnd=qf},polygonEnd:function(){Ff.point=jf,Ff.lineStart=Hf,Ff.lineEnd=Yf},result:function(){var t=zf?[Nf/zf,Df/zf]:If?[Gf/If,Rf/If]:Of?[kf/Of,Vf/Of]:[NaN,NaN];return kf=Vf=Of=Gf=Rf=If=Nf=Df=zf=0,t}};function jf(t,e){kf+=t,Vf+=e,++Of}function Hf(){Ff.point=Bf}function Bf(t,e){Ff.point=Xf,jf(Mf=t,Ef=e)}function Xf(t,e){var n=t-Mf,i=e-Ef,r=Vu(n*n+i*i);Gf+=r*(Mf+t)/2,Rf+=r*(Ef+e)/2,If+=r,jf(Mf=t,Ef=e)}function Yf(){Ff.point=jf}function Uf(){Ff.point=Wf}function qf(){Qf(Pf,Cf)}function Wf(t,e){Ff.point=Qf,jf(Pf=Mf=t,Cf=Ef=e)}function Qf(t,e){var n=t-Mf,i=e-Ef,r=Vu(n*n+i*i);Gf+=r*(Mf+t)/2,Rf+=r*(Ef+e)/2,If+=r,Nf+=(r=Ef*t-Mf*e)*(Mf+t),Df+=r*(Ef+e),zf+=3*r,jf(Mf=t,Ef=e)}var Kf=Ff;function Zf(t){this._context=t}Zf.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,mu)}},result:Nu};var $f,Jf,td,ed,nd,id=lu(),rd={point:Nu,lineStart:function(){rd.point=ad},lineEnd:function(){$f&&od(Jf,td),rd.point=Nu},polygonStart:function(){$f=!0},polygonEnd:function(){$f=null},result:function(){var t=+id;return id.reset(),t}};function ad(t,e){rd.point=od,Jf=ed=t,td=nd=e}function od(t,e){ed-=t,nd-=e,id.add(Vu(ed*ed+nd*nd)),ed=t,nd=e}var sd=rd;function ud(){this._string=[]}function cd(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}ud.prototype={_radius:4.5,_circle:cd(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=cd(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var ld=function(t,e){var n,i,r=4.5;function a(t){return t&&("function"==typeof r&&i.pointRadius(+r.apply(this,arguments)),Wu(t,n(i))),i.result()}return a.area=function(t){return Wu(t,n(bf)),bf.result()},a.measure=function(t){return Wu(t,n(sd)),sd.result()},a.bounds=function(t){return Wu(t,n(Lf)),Lf.result()},a.centroid=function(t){return Wu(t,n(Kf)),Kf.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,hf):(t=e).stream,a):t},a.context=function(t){return arguments.length?(i=null==t?(e=null,new ud):new Zf(e=t),"function"!=typeof r&&i.pointRadius(r),a):e},a.pointRadius=function(t){return arguments.length?(r="function"==typeof t?t:(i.pointRadius(+t),+t),a):r},a.projection(t).context(e)},fd=function(t){return{stream:dd(t)}};function dd(t){return function(e){var n=new hd;for(var i in t)n[i]=t[i];return n.stream=e,n}}function hd(){}function pd(t,e,n){var i=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=i&&t.clipExtent(null),Wu(n,t.stream(Lf)),e(Lf.result()),null!=i&&t.clipExtent(i),t}function gd(t,e,n){return pd(t,function(n){var i=e[1][0]-e[0][0],r=e[1][1]-e[0][1],a=Math.min(i/(n[1][0]-n[0][0]),r/(n[1][1]-n[0][1])),o=+e[0][0]+(i-a*(n[1][0]+n[0][0]))/2,s=+e[0][1]+(r-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([o,s])},n)}function yd(t,e,n){return gd(t,[[0,0],e],n)}function vd(t,e,n){return pd(t,function(n){var i=+e,r=i/(n[1][0]-n[0][0]),a=(i-r*(n[1][0]+n[0][0]))/2,o=-r*n[0][1];t.scale(150*r).translate([a,o])},n)}function _d(t,e,n){return pd(t,function(n){var i=+e,r=i/(n[1][1]-n[0][1]),a=-r*n[0][0],o=(i-r*(n[1][1]+n[0][1]))/2;t.scale(150*r).translate([a,o])},n)}hd.prototype={constructor:hd,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var md=16,xd=Tu(30*bu),bd=function(t,e){return+e?function(t,e){function n(i,r,a,o,s,u,c,l,f,d,h,p,g,y){var v=c-i,_=l-r,m=v*v+_*_;if(m>4*e&&g--){var x=o+d,b=s+h,w=u+p,S=Vu(x*x+b*b+w*w),A=Ru(w/=S),T=wu(wu(w)-1)e||wu((v*E+_*L)/m-.5)>.3||o*d+s*h+u*p2?t[2]%360*bu:0,C()):[y*xu,v*xu,_*xu]},T.angle=function(t){return arguments.length?(m=t%360*bu,C()):m*xu},T.precision=function(t){return arguments.length?(o=bd(s,A=t*t),M()):Vu(A)},T.fitExtent=function(t,e){return gd(T,t,e)},T.fitSize=function(t,e){return yd(T,t,e)},T.fitWidth=function(t,e){return vd(T,t,e)},T.fitHeight=function(t,e){return _d(T,t,e)},function(){return e=t.apply(this,arguments),T.invert=e.invert&&P,C()}}function Pd(t){var e=0,n=yu/3,i=Td(t),r=i(e,n);return r.parallels=function(t){return arguments.length?i(e=t[0]*bu,n=t[1]*bu):[e*xu,n*xu]},r}function Cd(t,e){var n=Lu(t),i=(n+Lu(e))/2;if(wu(i)=.12&&r<.234&&i>=-.425&&i<-.214?s:r>=.166&&r<.234&&i>=-.214&&i<-.115?u:o).invert(t)},l.stream=function(n){return t&&e===n?t:(i=[o.stream(e=n),s.stream(n),u.stream(n)],r=i.length,t={point:function(t,e){for(var n=-1;++n0?e<-vu+pu&&(e=-vu+pu):e>vu-pu&&(e=vu-pu);var n=r/Eu(Fd(e),i);return[n*Lu(i*t),r-n*Tu(i*t)]}return a.invert=function(t,e){var n=r-e,a=ku(i)*Vu(t*t+n*n);return[Au(t,wu(n))/i*ku(n),2*Su(Eu(r/a,1/i))-vu]},a}var Hd=function(){return Pd(jd).scale(109.5).parallels([30,30])};function Bd(t,e){return[t,e]}Bd.invert=Bd;var Xd=function(){return Ad(Bd).scale(152.63)};function Yd(t,e){var n=Tu(t),i=t===e?Lu(t):(n-Tu(e))/(e-t),r=n/i+t;if(wu(i)pu&&--r>0);return[t/(.8707+(a=i*i)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),i]};var ah=function(){return Ad(rh).scale(175.295)};function oh(t,e){return[Tu(e)*Lu(t),Lu(e)]}oh.invert=Vd(Ru);var sh=function(){return Ad(oh).scale(249.5).clipAngle(90+pu)};function uh(t,e){var n=Tu(e),i=1+Tu(t)*n;return[n*Lu(t)/i,Lu(e)/i]}uh.invert=Vd(function(t){return 2*Su(t)});var ch=function(){return Ad(uh).scale(250).clipAngle(142)};function lh(t,e){return[Mu(Ou((vu+e)/2)),-t]}lh.invert=function(t,e){return[-e,2*Su(Cu(t))-vu]};var fh=function(){var t=zd(lh),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)};function dh(t,e){return t.parent===e.parent?1:2}function hh(t,e){return t+e.x}function ph(t,e){return Math.max(t,e.y)}var gh=function(){var t=dh,e=1,n=1,i=!1;function r(r){var a,o=0;r.eachAfter(function(e){var n=e.children;n?(e.x=function(t){return t.reduce(hh,0)/t.length}(n),e.y=function(t){return 1+t.reduce(ph,0)}(n)):(e.x=a?o+=t(e,a):0,e.y=0,a=e)});var s=function(t){for(var e;e=t.children;)t=e[0];return t}(r),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(r),c=s.x-t(s,u)/2,l=u.x+t(u,s)/2;return r.eachAfter(i?function(t){t.x=(t.x-r.x)*e,t.y=(r.y-t.y)*n}:function(t){t.x=(t.x-c)/(l-c)*e,t.y=(1-(r.y?t.y/r.y:1))*n})}return r.separation=function(e){return arguments.length?(t=e,r):t},r.size=function(t){return arguments.length?(i=!1,e=+t[0],n=+t[1],r):i?null:[e,n]},r.nodeSize=function(t){return arguments.length?(i=!0,e=+t[0],n=+t[1],r):i?[e,n]:null},r};function yh(t){var e=0,n=t.children,i=n&&n.length;if(i)for(;--i>=0;)e+=n[i].value;else e=1;t.value=e}function vh(t,e){var n,i,r,a,o,s=new bh(t),u=+t.value&&(s.value=t.value),c=[s];for(null==e&&(e=_h);n=c.pop();)if(u&&(n.value=+n.data.value),(r=e(n.data))&&(o=r.length))for(n.children=new Array(o),a=o-1;a>=0;--a)c.push(i=n.children[a]=new bh(r[a])),i.parent=n,i.depth=n.depth+1;return s.eachBefore(xh)}function _h(t){return t.children}function mh(t){t.data=t.data.data}function xh(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function bh(t){this.data=t,this.depth=this.height=0,this.parent=null}bh.prototype=vh.prototype={constructor:bh,count:function(){return this.eachAfter(yh)},each:function(t){var e,n,i,r,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),n=a.children)for(i=0,r=n.length;i=0;--n)r.push(e[n]);return this},sum:function(t){return this.eachAfter(function(e){for(var n=+t(e.data)||0,i=e.children,r=i&&i.length;--r>=0;)n+=i[r].value;e.value=n})},sort:function(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),i=e.ancestors(),r=null;for(t=n.pop(),e=i.pop();t===e;)r=t,t=n.pop(),e=i.pop();return r}(e,t),i=[e];e!==n;)e=e.parent,i.push(e);for(var r=i.length;t!==n;)i.splice(r,0,t),t=t.parent;return i},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each(function(e){t.push(e)}),t},leaves:function(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t},links:function(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e},copy:function(){return vh(this).eachBefore(mh)}};var wh=Array.prototype.slice;var Sh=function(t){for(var e,n,i=0,r=(t=function(t){for(var e,n,i=t.length;i;)n=Math.random()*i--|0,e=t[i],t[i]=t[n],t[n]=e;return t}(wh.call(t))).length,a=[];i0&&n*n>i*i+r*r}function Ch(t,e){for(var n=0;n(o*=o)?(i=(c+o-r)/(2*c),a=Math.sqrt(Math.max(0,o/c-i*i)),n.x=t.x-i*s-a*u,n.y=t.y-i*u+a*s):(i=(c+r-o)/(2*c),a=Math.sqrt(Math.max(0,r/c-i*i)),n.x=e.x+i*s-a*u,n.y=e.y+i*u+a*s)):(n.x=e.x+n.r,n.y=e.y)}function Vh(t,e){var n=t.r+e.r-1e-6,i=e.x-t.x,r=e.y-t.y;return n>0&&n*n>i*i+r*r}function Oh(t){var e=t._,n=t.next._,i=e.r+n.r,r=(e.x*n.r+n.x*e.r)/i,a=(e.y*n.r+n.y*e.r)/i;return r*r+a*a}function Gh(t){this._=t,this.next=null,this.previous=null}function Rh(t){if(!(r=t.length))return 0;var e,n,i,r,a,o,s,u,c,l,f;if((e=t[0]).x=0,e.y=0,!(r>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(r>2))return e.r+n.r;kh(n,e,i=t[2]),e=new Gh(e),n=new Gh(n),i=new Gh(i),e.next=i.previous=n,n.next=e.previous=i,i.next=n.previous=e;t:for(s=3;s0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Nh(e),n):t},n.parentId=function(t){return arguments.length?(e=Nh(t),n):e},n};function tp(t,e){return t.parent===e.parent?1:2}function ep(t){var e=t.children;return e?e[0]:t.t}function np(t){var e=t.children;return e?e[e.length-1]:t.t}function ip(t,e,n){var i=n/(e.i-t.i);e.c-=i,e.s+=n,t.c+=i,e.z+=n,e.m+=n}function rp(t,e,n){return t.a.parent===e.parent?t.a:n}function ap(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}ap.prototype=Object.create(bh.prototype);var op=function(){var t=tp,e=1,n=1,i=null;function r(r){var u=function(t){for(var e,n,i,r,a,o=new ap(t,0),s=[o];e=s.pop();)if(i=e._.children)for(e.children=new Array(a=i.length),r=a-1;r>=0;--r)s.push(n=e.children[r]=new ap(i[r],r)),n.parent=e;return(o.parent=new ap(null,0)).children=[o],o}(r);if(u.eachAfter(a),u.parent.m=-u.z,u.eachBefore(o),i)r.eachBefore(s);else{var c=r,l=r,f=r;r.eachBefore(function(t){t.xl.x&&(l=t),t.depth>f.depth&&(f=t)});var d=c===l?1:t(c,l)/2,h=d-c.x,p=e/(l.x+d+h),g=n/(f.depth||1);r.eachBefore(function(t){t.x=(t.x+h)*p,t.y=t.depth*g})}return r}function a(e){var n=e.children,i=e.parent.children,r=e.i?i[e.i-1]:null;if(n){!function(t){for(var e,n=0,i=0,r=t.children,a=r.length;--a>=0;)(e=r[a]).z+=n,e.m+=n,n+=e.s+(i+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;r?(e.z=r.z+t(e._,r._),e.m=e.z-a):e.z=a}else r&&(e.z=r.z+t(e._,r._));e.parent.A=function(e,n,i){if(n){for(var r,a=e,o=e,s=n,u=a.parent.children[0],c=a.m,l=o.m,f=s.m,d=u.m;s=np(s),a=ep(a),s&&a;)u=ep(u),(o=np(o)).a=e,(r=s.z+f-a.z-c+t(s._,a._))>0&&(ip(rp(s,e,i),e,r),c+=r,l+=r),f+=s.m,c+=a.m,d+=u.m,l+=o.m;s&&!np(o)&&(o.t=s,o.m+=f-l),a&&!ep(u)&&(u.t=a,u.m+=c-d,i=e)}return i}(e,r,e.parent.A||i[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*n}return r.separation=function(e){return arguments.length?(t=e,r):t},r.size=function(t){return arguments.length?(i=!1,e=+t[0],n=+t[1],r):i?null:[e,n]},r.nodeSize=function(t){return arguments.length?(i=!0,e=+t[0],n=+t[1],r):i?[e,n]:null},r},sp=function(t,e,n,i,r){for(var a,o=t.children,s=-1,u=o.length,c=t.value&&(r-n)/t.value;++sd&&(d=s),y=l*l*g,(h=Math.max(d/y,y/f))>p){l-=s;break}p=h}v.push(o={value:l,dice:u1?e:1)},n}(up),fp=function(){var t=lp,e=!1,n=1,i=1,r=[0],a=Dh,o=Dh,s=Dh,u=Dh,c=Dh;function l(t){return t.x0=t.y0=0,t.x1=n,t.y1=i,t.eachBefore(f),r=[0],e&&t.eachBefore(Yh),t}function f(e){var n=r[e.depth],i=e.x0+n,l=e.y0+n,f=e.x1-n,d=e.y1-n;f=n-1){var l=s[e];return l.x0=r,l.y0=a,l.x1=o,void(l.y1=u)}var f=c[e],d=i/2+f,h=e+1,p=n-1;for(;h>>1;c[g]u-a){var _=(r*v+o*y)/i;t(e,h,y,r,a,_,u),t(h,n,v,_,a,o,u)}else{var m=(a*v+u*y)/i;t(e,h,y,r,a,o,m),t(h,n,v,r,m,o,u)}}(0,u,t.value,e,n,i,r)},hp=function(t,e,n,i,r){(1&t.depth?sp:Uh)(t,e,n,i,r)},pp=function t(e){function n(t,n,i,r,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,u,c,l,f=-1,d=o.length,h=t.value;++f1?e:1)},n}(up),gp=function(t){for(var e,n=-1,i=t.length,r=t[i-1],a=0;++n1&&vp(t[n[i-2]],t[n[i-1]],t[r])<=0;)--i;n[i++]=r}return n.slice(0,i)}var xp=function(t){if((n=t.length)<3)return null;var e,n,i=new Array(n),r=new Array(n);for(e=0;e=0;--e)c.push(t[i[a[e]][2]]);for(e=+s;es!=c>s&&o<(u-n)*(s-i)/(c-i)+n&&(l=!l),u=n,c=i;return l},wp=function(t){for(var e,n,i=-1,r=t.length,a=t[r-1],o=a[0],s=a[1],u=0;++i1);return t+n*a*Math.sqrt(-2*Math.log(r)/r)}}return n.source=t,n}(Sp),Pp=function t(e){function n(){var t=Tp.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(Sp),Cp=function t(e){function n(t){return function(){for(var n=0,i=0;ii&&(e=n,n=i,i=e),function(t){return Math.max(n,Math.min(i,t))}}function Yp(t,e,n){var i=t[0],r=t[1],a=e[0],o=e[1];return r2?Up:Yp,r=a=null,f}function f(e){return isNaN(e=+e)?n:(r||(r=i(o.map(t),s,u)))(t(c(e)))}return f.invert=function(n){return c(e((a||(a=i(s,o.map(t),Yn)))(n)))},f.domain=function(t){return arguments.length?(o=Op.call(t,Fp),c===Hp||(c=Xp(o)),l()):o.slice()},f.range=function(t){return arguments.length?(s=Gp.call(t),l()):s.slice()},f.rangeRound=function(t){return s=Gp.call(t),u=ii,l()},f.clamp=function(t){return arguments.length?(c=t?Xp(o):Hp,f):c!==Hp},f.interpolate=function(t){return arguments.length?(u=t,l()):u},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,i){return t=n,e=i,l()}}function Qp(t,e){return Wp()(t,e)}var Kp=function(t,e,n,i){var r,a=M(t,e,n);switch((i=Ws(null==i?",f":i)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(r=uu(a,o))||(i.precision=r),Js(i,o);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(r=cu(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=r-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(r=su(a))||(i.precision=r-2*("%"===i.type))}return $s(i)};function Zp(t){var e=t.domain;return t.ticks=function(t){var n=e();return P(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var i=e();return Kp(i[0],i[i.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var i,r=e(),a=0,o=r.length-1,s=r[a],u=r[o];return u0?i=C(s=Math.floor(s/i)*i,u=Math.ceil(u/i)*i,n):i<0&&(i=C(s=Math.ceil(s*i)/i,u=Math.floor(u*i)/i,n)),i>0?(r[a]=Math.floor(s/i)*i,r[o]=Math.ceil(u/i)*i,e(r)):i<0&&(r[a]=Math.ceil(s*i)/i,r[o]=Math.floor(u*i)/i,e(r)),t},t}function $p(){var t=Qp(Hp,Hp);return t.copy=function(){return qp(t,$p())},Lp.apply(t,arguments),Zp(t)}function Jp(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=Op.call(e,Fp),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return Jp(t).unknown(e)},t=arguments.length?Op.call(t,Fp):[0,1],Zp(n)}var tg=function(t,e){var n,i=0,r=(t=t.slice()).length-1,a=t[i],o=t[r];return o0){for(;du)break;g.push(f)}}else for(;d=1;--l)if(!((f=c*l)u)break;g.push(f)}}else g=P(d,h,Math.min(h-d,p)).map(n);return i?g.reverse():g},i.tickFormat=function(t,r){if(null==r&&(r=10===a?".0e":","),"function"!=typeof r&&(r=$s(r)),t===1/0)return r;null==t&&(t=10);var o=Math.max(1,a*t/i.ticks().length);return function(t){var i=t/n(Math.round(e(t)));return i*a0?r[i-1]:e[0],i=i?[r[i-1],n]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length?(t=e,o):o},o.thresholds=function(){return r.slice()},o.copy=function(){return xg().domain([e,n]).range(a).unknown(t)},Lp.apply(Zp(o),arguments)}function bg(){var t,e=[.5],n=[0,1],i=1;function r(r){return r<=r?n[u(e,r,0,i)]:t}return r.domain=function(t){return arguments.length?(e=Gp.call(t),i=Math.min(e.length,n.length-1),r):e.slice()},r.range=function(t){return arguments.length?(n=Gp.call(t),i=Math.min(e.length,n.length-1),r):n.slice()},r.invertExtent=function(t){var i=n.indexOf(t);return[e[i-1],e[i]]},r.unknown=function(e){return arguments.length?(t=e,r):t},r.copy=function(){return bg().domain(e).range(n).unknown(t)},Lp.apply(r,arguments)}var wg=new Date,Sg=new Date;function Ag(t,e,n,i){function r(e){return t(e=new Date(+e)),e}return r.floor=r,r.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},r.round=function(t){var e=r(t),n=r.ceil(t);return t-e0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o=e)for(;t(e),!n(e);)e.setTime(e-1)},function(t,i){if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!n(t););else for(;--i>=0;)for(;e(t,1),!n(t););})},n&&(r.count=function(e,i){return wg.setTime(+e),Sg.setTime(+i),t(wg),t(Sg),Math.floor(n(wg,Sg))},r.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?r.filter(i?function(e){return i(e)%t==0}:function(e){return r.count(0,e)%t==0}):r:null}),r}var Tg=Ag(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Tg.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ag(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):Tg:null};var Pg=Tg,Cg=Tg.range,Mg=6e4,Eg=6048e5,Lg=Ag(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),kg=Lg,Vg=Lg.range,Og=Ag(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,e){t.setTime(+t+e*Mg)},function(t,e){return(e-t)/Mg},function(t){return t.getMinutes()}),Gg=Og,Rg=Og.range,Ig=Ag(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*Mg)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()}),Ng=Ig,Dg=Ig.range,zg=Ag(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Mg)/864e5},function(t){return t.getDate()-1}),Fg=zg,jg=zg.range;function Hg(t){return Ag(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Mg)/Eg})}var Bg=Hg(0),Xg=Hg(1),Yg=Hg(2),Ug=Hg(3),qg=Hg(4),Wg=Hg(5),Qg=Hg(6),Kg=Bg.range,Zg=Xg.range,$g=Yg.range,Jg=Ug.range,ty=qg.range,ey=Wg.range,ny=Qg.range,iy=Ag(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),ry=iy,ay=iy.range,oy=Ag(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});oy.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ag(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)}):null};var sy=oy,uy=oy.range,cy=Ag(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Mg)},function(t,e){return(e-t)/Mg},function(t){return t.getUTCMinutes()}),ly=cy,fy=cy.range,dy=Ag(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()}),hy=dy,py=dy.range,gy=Ag(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1}),yy=gy,vy=gy.range;function _y(t){return Ag(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/Eg})}var my=_y(0),xy=_y(1),by=_y(2),wy=_y(3),Sy=_y(4),Ay=_y(5),Ty=_y(6),Py=my.range,Cy=xy.range,My=by.range,Ey=wy.range,Ly=Sy.range,ky=Ay.range,Vy=Ty.range,Oy=Ag(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),Gy=Oy,Ry=Oy.range,Iy=Ag(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Iy.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ag(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)}):null};var Ny=Iy,Dy=Iy.range;function zy(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Fy(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function jy(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function Hy(t){var e=t.dateTime,n=t.date,i=t.time,r=t.periods,a=t.days,o=t.shortDays,s=t.months,u=t.shortMonths,c=tv(r),l=ev(r),f=tv(a),d=ev(a),h=tv(o),p=ev(o),g=tv(s),y=ev(s),v=tv(u),_=ev(u),m={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return u[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:bv,e:bv,f:Pv,H:wv,I:Sv,j:Av,L:Tv,m:Cv,M:Mv,p:function(t){return r[+(t.getHours()>=12)]},Q:n_,s:i_,S:Ev,u:Lv,U:kv,V:Vv,w:Ov,W:Gv,x:null,X:null,y:Rv,Y:Iv,Z:Nv,"%":e_},x={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return u[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Dv,e:Dv,f:Bv,H:zv,I:Fv,j:jv,L:Hv,m:Xv,M:Yv,p:function(t){return r[+(t.getUTCHours()>=12)]},Q:n_,s:i_,S:Uv,u:qv,U:Wv,V:Qv,w:Kv,W:Zv,x:null,X:null,y:$v,Y:Jv,Z:t_,"%":e_},b={a:function(t,e,n){var i=h.exec(e.slice(n));return i?(t.w=p[i[0].toLowerCase()],n+i[0].length):-1},A:function(t,e,n){var i=f.exec(e.slice(n));return i?(t.w=d[i[0].toLowerCase()],n+i[0].length):-1},b:function(t,e,n){var i=v.exec(e.slice(n));return i?(t.m=_[i[0].toLowerCase()],n+i[0].length):-1},B:function(t,e,n){var i=g.exec(e.slice(n));return i?(t.m=y[i[0].toLowerCase()],n+i[0].length):-1},c:function(t,n,i){return A(t,e,n,i)},d:fv,e:fv,f:vv,H:hv,I:hv,j:dv,L:yv,m:lv,M:pv,p:function(t,e,n){var i=c.exec(e.slice(n));return i?(t.p=l[i[0].toLowerCase()],n+i[0].length):-1},Q:mv,s:xv,S:gv,u:iv,U:rv,V:av,w:nv,W:ov,x:function(t,e,i){return A(t,n,e,i)},X:function(t,e,n){return A(t,i,e,n)},y:uv,Y:sv,Z:cv,"%":_v};function w(t,e){return function(n){var i,r,a,o=[],s=-1,u=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in a||(a.w=1),"Z"in a?(r=(i=Fy(jy(a.y))).getUTCDay(),i=r>4||0===r?xy.ceil(i):xy(i),i=yy.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(r=(i=e(jy(a.y))).getDay(),i=r>4||0===r?Xg.ceil(i):Xg(i),i=Fg.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),r="Z"in a?Fy(jy(a.y)).getUTCDay():e(jy(a.y)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(r+5)%7:a.w+7*a.U-(r+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Fy(a)):e(a)}}function A(t,e,n,i){for(var r,a,o=0,s=e.length,u=n.length;o=u)return-1;if(37===(r=e.charCodeAt(o++))){if(r=e.charAt(o++),!(a=b[r in Wy?e.charAt(o++):r])||(i=a(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}return m.x=w(n,m),m.X=w(i,m),m.c=w(e,m),x.x=w(n,x),x.X=w(i,x),x.c=w(e,x),{format:function(t){var e=w(t+="",m);return e.toString=function(){return t},e},parse:function(t){var e=S(t+="",zy);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=S(t,Fy);return e.toString=function(){return t},e}}}var By,Xy,Yy,Uy,qy,Wy={"-":"",_:" ",0:"0"},Qy=/^\s*\d+/,Ky=/^%/,Zy=/[\\^$*+?|[\]().{}]/g;function $y(t,e,n){var i=t<0?"-":"",r=(i?-t:t)+"",a=r.length;return i+(a68?1900:2e3),n+i[0].length):-1}function cv(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}function lv(t,e,n){var i=Qy.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function fv(t,e,n){var i=Qy.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function dv(t,e,n){var i=Qy.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}function hv(t,e,n){var i=Qy.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function pv(t,e,n){var i=Qy.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function gv(t,e,n){var i=Qy.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function yv(t,e,n){var i=Qy.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function vv(t,e,n){var i=Qy.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}function _v(t,e,n){var i=Ky.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function mv(t,e,n){var i=Qy.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}function xv(t,e,n){var i=Qy.exec(e.slice(n));return i?(t.Q=1e3*+i[0],n+i[0].length):-1}function bv(t,e){return $y(t.getDate(),e,2)}function wv(t,e){return $y(t.getHours(),e,2)}function Sv(t,e){return $y(t.getHours()%12||12,e,2)}function Av(t,e){return $y(1+Fg.count(sy(t),t),e,3)}function Tv(t,e){return $y(t.getMilliseconds(),e,3)}function Pv(t,e){return Tv(t,e)+"000"}function Cv(t,e){return $y(t.getMonth()+1,e,2)}function Mv(t,e){return $y(t.getMinutes(),e,2)}function Ev(t,e){return $y(t.getSeconds(),e,2)}function Lv(t){var e=t.getDay();return 0===e?7:e}function kv(t,e){return $y(Bg.count(sy(t),t),e,2)}function Vv(t,e){var n=t.getDay();return t=n>=4||0===n?qg(t):qg.ceil(t),$y(qg.count(sy(t),t)+(4===sy(t).getDay()),e,2)}function Ov(t){return t.getDay()}function Gv(t,e){return $y(Xg.count(sy(t),t),e,2)}function Rv(t,e){return $y(t.getFullYear()%100,e,2)}function Iv(t,e){return $y(t.getFullYear()%1e4,e,4)}function Nv(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+$y(e/60|0,"0",2)+$y(e%60,"0",2)}function Dv(t,e){return $y(t.getUTCDate(),e,2)}function zv(t,e){return $y(t.getUTCHours(),e,2)}function Fv(t,e){return $y(t.getUTCHours()%12||12,e,2)}function jv(t,e){return $y(1+yy.count(Ny(t),t),e,3)}function Hv(t,e){return $y(t.getUTCMilliseconds(),e,3)}function Bv(t,e){return Hv(t,e)+"000"}function Xv(t,e){return $y(t.getUTCMonth()+1,e,2)}function Yv(t,e){return $y(t.getUTCMinutes(),e,2)}function Uv(t,e){return $y(t.getUTCSeconds(),e,2)}function qv(t){var e=t.getUTCDay();return 0===e?7:e}function Wv(t,e){return $y(my.count(Ny(t),t),e,2)}function Qv(t,e){var n=t.getUTCDay();return t=n>=4||0===n?Sy(t):Sy.ceil(t),$y(Sy.count(Ny(t),t)+(4===Ny(t).getUTCDay()),e,2)}function Kv(t){return t.getUTCDay()}function Zv(t,e){return $y(xy.count(Ny(t),t),e,2)}function $v(t,e){return $y(t.getUTCFullYear()%100,e,2)}function Jv(t,e){return $y(t.getUTCFullYear()%1e4,e,4)}function t_(){return"+0000"}function e_(){return"%"}function n_(t){return+t}function i_(t){return Math.floor(+t/1e3)}function r_(t){return By=Hy(t),Xy=By.format,Yy=By.parse,Uy=By.utcFormat,qy=By.utcParse,By}r_({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var a_=Date.prototype.toISOString?function(t){return t.toISOString()}:Uy("%Y-%m-%dT%H:%M:%S.%LZ");var o_=+new Date("2000-01-01T00:00:00.000Z")?function(t){var e=new Date(t);return isNaN(e)?null:e}:qy("%Y-%m-%dT%H:%M:%S.%LZ"),s_=1e3,u_=60*s_,c_=60*u_,l_=24*c_,f_=7*l_,d_=30*l_,h_=365*l_;function p_(t){return new Date(t)}function g_(t){return t instanceof Date?+t:+new Date(+t)}function y_(t,e,n,i,a,o,s,u,c){var l=Qp(Hp,Hp),f=l.invert,d=l.domain,h=c(".%L"),p=c(":%S"),g=c("%I:%M"),y=c("%I %p"),v=c("%a %d"),_=c("%b %d"),m=c("%B"),x=c("%Y"),b=[[s,1,s_],[s,5,5*s_],[s,15,15*s_],[s,30,30*s_],[o,1,u_],[o,5,5*u_],[o,15,15*u_],[o,30,30*u_],[a,1,c_],[a,3,3*c_],[a,6,6*c_],[a,12,12*c_],[i,1,l_],[i,2,2*l_],[n,1,f_],[e,1,d_],[e,3,3*d_],[t,1,h_]];function w(r){return(s(r)1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return Qm.h=360*t-100,Qm.s=1.5-1.5*e,Qm.l=.8-.9*e,Qm+""},Zm=Xe(),$m=Math.PI/3,Jm=2*Math.PI/3,tx=function(t){var e;return t=(.5-t)*Math.PI,Zm.r=255*(e=Math.sin(t))*e,Zm.g=255*(e=Math.sin(t+$m))*e,Zm.b=255*(e=Math.sin(t+Jm))*e,Zm+""},ex=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"};function nx(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}var ix=nx(O_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),rx=nx(O_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),ax=nx(O_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),ox=nx(O_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),sx=function(t){return function(){return t}},ux=Math.abs,cx=Math.atan2,lx=Math.cos,fx=Math.max,dx=Math.min,hx=Math.sin,px=Math.sqrt,gx=1e-12,yx=Math.PI,vx=yx/2,_x=2*yx;function mx(t){return t>=1?vx:t<=-1?-vx:Math.asin(t)}function xx(t){return t.innerRadius}function bx(t){return t.outerRadius}function wx(t){return t.startAngle}function Sx(t){return t.endAngle}function Ax(t){return t&&t.padAngle}function Tx(t,e,n,i,r,a,o){var s=t-n,u=e-i,c=(o?a:-a)/px(s*s+u*u),l=c*u,f=-c*s,d=t+l,h=e+f,p=n+l,g=i+f,y=(d+p)/2,v=(h+g)/2,_=p-d,m=g-h,x=_*_+m*m,b=r-a,w=d*g-p*h,S=(m<0?-1:1)*px(fx(0,b*b*x-w*w)),A=(w*m-_*S)/x,T=(-w*_-m*S)/x,P=(w*m+_*S)/x,C=(-w*_+m*S)/x,M=A-y,E=T-v,L=P-y,k=C-v;return M*M+E*E>L*L+k*k&&(A=P,T=C),{cx:A,cy:T,x01:-l,y01:-f,x11:A*(r/b-1),y11:T*(r/b-1)}}var Px=function(){var t=xx,e=bx,n=sx(0),i=null,r=wx,a=Sx,o=Ax,s=null;function u(){var u,c,l,f=+t.apply(this,arguments),d=+e.apply(this,arguments),h=r.apply(this,arguments)-vx,p=a.apply(this,arguments)-vx,g=ux(p-h),y=p>h;if(s||(s=u=Wa()),dgx)if(g>_x-gx)s.moveTo(d*lx(h),d*hx(h)),s.arc(0,0,d,h,p,!y),f>gx&&(s.moveTo(f*lx(p),f*hx(p)),s.arc(0,0,f,p,h,y));else{var v,_,m=h,x=p,b=h,w=p,S=g,A=g,T=o.apply(this,arguments)/2,P=T>gx&&(i?+i.apply(this,arguments):px(f*f+d*d)),C=dx(ux(d-f)/2,+n.apply(this,arguments)),M=C,E=C;if(P>gx){var L=mx(P/f*hx(T)),k=mx(P/d*hx(T));(S-=2*L)>gx?(b+=L*=y?1:-1,w-=L):(S=0,b=w=(h+p)/2),(A-=2*k)>gx?(m+=k*=y?1:-1,x-=k):(A=0,m=x=(h+p)/2)}var V=d*lx(m),O=d*hx(m),G=f*lx(w),R=f*hx(w);if(C>gx){var I,N=d*lx(x),D=d*hx(x),z=f*lx(b),F=f*hx(b);if(g1?0:l<-1?yx:Math.acos(l))/2),U=px(I[0]*I[0]+I[1]*I[1]);M=dx(C,(f-U)/(Y-1)),E=dx(C,(d-U)/(Y+1))}}A>gx?E>gx?(v=Tx(z,F,V,O,d,E,y),_=Tx(N,D,G,R,d,E,y),s.moveTo(v.cx+v.x01,v.cy+v.y01),Egx&&S>gx?M>gx?(v=Tx(G,R,N,D,f,-M,y),_=Tx(V,O,z,F,f,-M,y),s.lineTo(v.cx+v.x01,v.cy+v.y01),M=l;--f)s.point(y[f],v[f]);s.lineEnd(),s.areaEnd()}g&&(y[c]=+t(d,c,u),v[c]=+n(d,c,u),s.point(e?+e(d,c,u):y[c],i?+i(d,c,u):v[c]))}if(h)return s=null,h+""||null}function c(){return kx().defined(r).curve(o).context(a)}return u.x=function(n){return arguments.length?(t="function"==typeof n?n:sx(+n),e=null,u):t},u.x0=function(e){return arguments.length?(t="function"==typeof e?e:sx(+e),u):t},u.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:sx(+t),u):e},u.y=function(t){return arguments.length?(n="function"==typeof t?t:sx(+t),i=null,u):n},u.y0=function(t){return arguments.length?(n="function"==typeof t?t:sx(+t),u):n},u.y1=function(t){return arguments.length?(i=null==t?null:"function"==typeof t?t:sx(+t),u):i},u.lineX0=u.lineY0=function(){return c().x(t).y(n)},u.lineY1=function(){return c().x(t).y(i)},u.lineX1=function(){return c().x(e).y(n)},u.defined=function(t){return arguments.length?(r="function"==typeof t?t:sx(!!t),u):r},u.curve=function(t){return arguments.length?(o=t,null!=a&&(s=o(a)),u):o},u.context=function(t){return arguments.length?(null==t?a=s=null:s=o(a=t),u):a},u},Ox=function(t,e){return et?1:e>=t?0:NaN},Gx=function(t){return t},Rx=function(){var t=Gx,e=Ox,n=null,i=sx(0),r=sx(_x),a=sx(0);function o(o){var s,u,c,l,f,d=o.length,h=0,p=new Array(d),g=new Array(d),y=+i.apply(this,arguments),v=Math.min(_x,Math.max(-_x,r.apply(this,arguments)-y)),_=Math.min(Math.abs(v)/d,a.apply(this,arguments)),m=_*(v<0?-1:1);for(s=0;s0&&(h+=f);for(null!=e?p.sort(function(t,n){return e(g[t],g[n])}):null!=n&&p.sort(function(t,e){return n(o[t],o[e])}),s=0,c=h?(v-d*m)/h:0;s0?f*c:0)+m,g[u]={data:o[u],index:s,value:f,startAngle:y,endAngle:l,padAngle:_};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:sx(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:sx(+t),o):i},o.endAngle=function(t){return arguments.length?(r="function"==typeof t?t:sx(+t),o):r},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:sx(+t),o):a},o},Ix=Dx(Mx);function Nx(t){this._curve=t}function Dx(t){function e(e){return new Nx(t(e))}return e._curve=t,e}function zx(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Dx(t)):e()._curve},t}Nx.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var Fx=function(){return zx(kx().curve(Ix))},jx=function(){var t=Vx().curve(Ix),e=t.curve,n=t.lineX0,i=t.lineX1,r=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return zx(n())},delete t.lineX0,t.lineEndAngle=function(){return zx(i())},delete t.lineX1,t.lineInnerRadius=function(){return zx(r())},delete t.lineY0,t.lineOuterRadius=function(){return zx(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Dx(t)):e()._curve},t},Hx=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]},Bx=Array.prototype.slice;function Xx(t){return t.source}function Yx(t){return t.target}function Ux(t){var e=Xx,n=Yx,i=Ex,r=Lx,a=null;function o(){var o,s=Bx.call(arguments),u=e.apply(this,s),c=n.apply(this,s);if(a||(a=o=Wa()),t(a,+i.apply(this,(s[0]=u,s)),+r.apply(this,s),+i.apply(this,(s[0]=c,s)),+r.apply(this,s)),o)return a=null,o+""||null}return o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(t){return arguments.length?(n=t,o):n},o.x=function(t){return arguments.length?(i="function"==typeof t?t:sx(+t),o):i},o.y=function(t){return arguments.length?(r="function"==typeof t?t:sx(+t),o):r},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}function qx(t,e,n,i,r){t.moveTo(e,n),t.bezierCurveTo(e=(e+i)/2,n,e,r,i,r)}function Wx(t,e,n,i,r){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+r)/2,i,n,i,r)}function Qx(t,e,n,i,r){var a=Hx(e,n),o=Hx(e,n=(n+r)/2),s=Hx(i,n),u=Hx(i,r);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],u[0],u[1])}function Kx(){return Ux(qx)}function Zx(){return Ux(Wx)}function $x(){var t=Ux(Qx);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}var Jx={draw:function(t,e){var n=Math.sqrt(e/yx);t.moveTo(n,0),t.arc(0,0,n,0,_x)}},tb={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}},eb=Math.sqrt(1/3),nb=2*eb,ib={draw:function(t,e){var n=Math.sqrt(e/nb),i=n*eb;t.moveTo(0,-n),t.lineTo(i,0),t.lineTo(0,n),t.lineTo(-i,0),t.closePath()}},rb=Math.sin(yx/10)/Math.sin(7*yx/10),ab=Math.sin(_x/10)*rb,ob=-Math.cos(_x/10)*rb,sb={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),i=ab*n,r=ob*n;t.moveTo(0,-n),t.lineTo(i,r);for(var a=1;a<5;++a){var o=_x*a/5,s=Math.cos(o),u=Math.sin(o);t.lineTo(u*n,-s*n),t.lineTo(s*i-u*r,u*i+s*r)}t.closePath()}},ub={draw:function(t,e){var n=Math.sqrt(e),i=-n/2;t.rect(i,i,n,n)}},cb=Math.sqrt(3),lb={draw:function(t,e){var n=-Math.sqrt(e/(3*cb));t.moveTo(0,2*n),t.lineTo(-cb*n,-n),t.lineTo(cb*n,-n),t.closePath()}},fb=Math.sqrt(3)/2,db=1/Math.sqrt(12),hb=3*(db/2+1),pb={draw:function(t,e){var n=Math.sqrt(e/hb),i=n/2,r=n*db,a=i,o=n*db+n,s=-a,u=o;t.moveTo(i,r),t.lineTo(a,o),t.lineTo(s,u),t.lineTo(-.5*i-fb*r,fb*i+-.5*r),t.lineTo(-.5*a-fb*o,fb*a+-.5*o),t.lineTo(-.5*s-fb*u,fb*s+-.5*u),t.lineTo(-.5*i+fb*r,-.5*r-fb*i),t.lineTo(-.5*a+fb*o,-.5*o-fb*a),t.lineTo(-.5*s+fb*u,-.5*u-fb*s),t.closePath()}},gb=[Jx,tb,ib,ub,sb,lb,pb],yb=function(){var t=sx(Jx),e=sx(64),n=null;function i(){var i;if(n||(n=i=Wa()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),i)return n=null,i+""||null}return i.type=function(e){return arguments.length?(t="function"==typeof e?e:sx(e),i):t},i.size=function(t){return arguments.length?(e="function"==typeof t?t:sx(+t),i):e},i.context=function(t){return arguments.length?(n=null==t?null:t,i):n},i},vb=function(){};function _b(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function mb(t){this._context=t}mb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:_b(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:_b(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var xb=function(t){return new mb(t)};function bb(t){this._context=t}bb.prototype={areaStart:vb,areaEnd:vb,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:_b(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var wb=function(t){return new bb(t)};function Sb(t){this._context=t}Sb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,i):this._context.moveTo(n,i);break;case 3:this._point=4;default:_b(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var Ab=function(t){return new Sb(t)};function Tb(t,e){this._basis=new mb(t),this._beta=e}Tb.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var i,r=t[0],a=e[0],o=t[n]-r,s=e[n]-a,u=-1;++u<=n;)i=u/n,this._basis.point(this._beta*t[u]+(1-this._beta)*(r+i*o),this._beta*e[u]+(1-this._beta)*(a+i*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var Pb=function t(e){function n(t){return 1===e?new mb(t):new Tb(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function Cb(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function Mb(t,e){this._context=t,this._k=(1-e)/6}Mb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Cb(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Cb(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Eb=function t(e){function n(t){return new Mb(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Lb(t,e){this._context=t,this._k=(1-e)/6}Lb.prototype={areaStart:vb,areaEnd:vb,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Cb(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kb=function t(e){function n(t){return new Lb(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Vb(t,e){this._context=t,this._k=(1-e)/6}Vb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Cb(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ob=function t(e){function n(t){return new Vb(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Gb(t,e,n){var i=t._x1,r=t._y1,a=t._x2,o=t._y2;if(t._l01_a>gx){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,r=(r*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>gx){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/l,o=(o*c+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(i,r,a,o,t._x2,t._y2)}function Rb(t,e){this._context=t,this._alpha=e}Rb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Gb(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ib=function t(e){function n(t){return e?new Rb(t,e):new Mb(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Nb(t,e){this._context=t,this._alpha=e}Nb.prototype={areaStart:vb,areaEnd:vb,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Gb(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Db=function t(e){function n(t){return e?new Nb(t,e):new Lb(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function zb(t,e){this._context=t,this._alpha=e}zb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gb(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Fb=function t(e){function n(t){return e?new zb(t,e):new Vb(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function jb(t){this._context=t}jb.prototype={areaStart:vb,areaEnd:vb,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};var Hb=function(t){return new jb(t)};function Bb(t){return t<0?-1:1}function Xb(t,e,n){var i=t._x1-t._x0,r=e-t._x1,a=(t._y1-t._y0)/(i||r<0&&-0),o=(n-t._y1)/(r||i<0&&-0),s=(a*r+o*i)/(i+r);return(Bb(a)+Bb(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Yb(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Ub(t,e,n){var i=t._x0,r=t._y0,a=t._x1,o=t._y1,s=(a-i)/3;t._context.bezierCurveTo(i+s,r+s*e,a-s,o-s*n,a,o)}function qb(t){this._context=t}function Wb(t){this._context=new Qb(t)}function Qb(t){this._context=t}function Kb(t){return new qb(t)}function Zb(t){return new Wb(t)}function $b(t){this._context=t}function Jb(t){var e,n,i=t.length-1,r=new Array(i),a=new Array(i),o=new Array(i);for(r[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)r[e]=(o[e]-r[e+1])/a[e];for(a[i-1]=(t[i]+r[i-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var nw=function(t){return new ew(t,.5)};function iw(t){return new ew(t,0)}function rw(t){return new ew(t,1)}var aw=function(t,e){if((r=t.length)>1)for(var n,i,r,a=1,o=t[e[0]],s=o.length;a=0;)n[e]=e;return n};function sw(t,e){return t[e]}var uw=function(){var t=sx([]),e=ow,n=aw,i=sw;function r(r){var a,o,s=t.apply(this,arguments),u=r.length,c=s.length,l=new Array(c);for(a=0;a0){for(var n,i,r,a=0,o=t[0].length;a0)for(var n,i,r,a,o,s,u=0,c=t[e[0]].length;u=0?(i[0]=a,i[1]=a+=r):r<0?(i[1]=o,i[0]=o+=r):i[0]=a},fw=function(t,e){if((n=t.length)>0){for(var n,i=0,r=t[e[0]],a=r.length;i0&&(i=(n=t[e[0]]).length)>0){for(var n,i,r,a=0,o=1;oa&&(a=e,i=n);return i}var gw=function(t){var e=t.map(yw);return ow(t).sort(function(t,n){return e[t]-e[n]})};function yw(t){for(var e,n=0,i=-1,r=t.length;++i0)){if(a/=d,d<0){if(a0){if(a>f)return;a>l&&(l=a)}if(a=i-u,d||!(a<0)){if(a/=d,d<0){if(a>f)return;a>l&&(l=a)}else if(d>0){if(a0)){if(a/=h,h<0){if(a0){if(a>f)return;a>l&&(l=a)}if(a=r-c,h||!(a<0)){if(a/=h,h<0){if(a>f)return;a>l&&(l=a)}else if(h>0){if(a0||f<1)||(l>0&&(t[0]=[u+l*d,c+l*h]),f<1&&(t[1]=[u+f*d,c+f*h]),!0)}}}}}function Ow(t,e,n,i,r){var a=t[1];if(a)return!0;var o,s,u=t[0],c=t.left,l=t.right,f=c[0],d=c[1],h=l[0],p=l[1],g=(f+h)/2,y=(d+p)/2;if(p===d){if(g=i)return;if(f>h){if(u){if(u[1]>=r)return}else u=[g,n];a=[g,r]}else{if(u){if(u[1]1)if(f>h){if(u){if(u[1]>=r)return}else u=[(n-s)/o,n];a=[(r-s)/o,r]}else{if(u){if(u[1]=i)return}else u=[e,o*e+s];a=[i,o*i+s]}else{if(u){if(u[0]=-eS)){var h=u*u+c*c,p=l*l+f*f,g=(f*h-c*p)/d,y=(u*p-l*h)/d,v=Dw.pop()||new zw;v.arc=t,v.site=r,v.x=g+o,v.y=(v.cy=y+s)+Math.sqrt(g*g+y*y),t.circle=v;for(var _=null,m=$w._;m;)if(v.ytS)s=s.L;else{if(!((r=a-Qw(s,o))>tS)){i>-tS?(e=s.P,n=s):r>-tS?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}!function(t){Zw[t.index]={site:t,halfedges:[]}}(t);var u=Xw(t);if(Kw.insert(e,u),e||n){if(e===n)return jw(e),n=Xw(e.site),Kw.insert(u,n),u.edge=n.edge=Ew(e.site,u.site),Fw(e),void Fw(n);if(n){jw(e),jw(n);var c=e.site,l=c[0],f=c[1],d=t[0]-l,h=t[1]-f,p=n.site,g=p[0]-l,y=p[1]-f,v=2*(d*y-h*g),_=d*d+h*h,m=g*g+y*y,x=[(y*_-h*m)/v+l,(d*m-g*_)/v+f];kw(n.edge,c,p,x),u.edge=Ew(c,t,null,x),n.edge=Ew(t,p,null,x),Fw(e),Fw(n)}else u.edge=Ew(e.site,u.site)}}function Ww(t,e){var n=t.site,i=n[0],r=n[1],a=r-e;if(!a)return i;var o=t.P;if(!o)return-1/0;var s=(n=o.site)[0],u=n[1],c=u-e;if(!c)return s;var l=s-i,f=1/a-1/c,d=l/c;return f?(-d+Math.sqrt(d*d-2*f*(l*l/(-2*c)-u+c/2+r-a/2)))/f+i:(i+s)/2}function Qw(t,e){var n=t.N;if(n)return Ww(n,e);var i=t.site;return i[1]===e?i[0]:1/0}var Kw,Zw,$w,Jw,tS=1e-6,eS=1e-12;function nS(t,e){return e[1]-t[1]||e[0]-t[0]}function iS(t,e){var n,i,r,a=t.sort(nS).pop();for(Jw=[],Zw=new Array(t.length),Kw=new Mw,$w=new Mw;;)if(r=Nw,a&&(!r||a[1]tS||Math.abs(r[0][1]-r[1][1])>tS)||delete Jw[a]}(o,s,u,c),function(t,e,n,i){var r,a,o,s,u,c,l,f,d,h,p,g,y=Zw.length,v=!0;for(r=0;rtS||Math.abs(g-d)>tS)&&(u.splice(s,0,Jw.push(Lw(o,h,Math.abs(p-t)tS?[t,Math.abs(f-t)tS?[Math.abs(d-i)tS?[n,Math.abs(f-n)tS?[Math.abs(d-e)=s)return null;var u=t-r.site[0],c=e-r.site[1],l=u*u+c*c;do{r=a.cells[i=o],o=null,r.halfedges.forEach(function(n){var i=a.edges[n],s=i.left;if(s!==r.site&&s||(s=i.right)){var u=t-s[0],c=e-s[1],f=u*u+c*c;fi?(i+r)/2:Math.min(0,i)||Math.max(0,r),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}var _S=function(){var t,e,n=dS,i=hS,r=vS,a=gS,o=yS,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],c=250,l=di,f=dt("start","zoom","end"),d=500,h=150,p=0;function g(t){t.property("__zoom",pS).on("wheel.zoom",w).on("mousedown.zoom",S).on("dblclick.zoom",A).filter(o).on("touchstart.zoom",T).on("touchmove.zoom",P).on("touchend.zoom touchcancel.zoom",C).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new sS(e,t.x,t.y)}function v(t,e,n){var i=e[0]-n[0]*t.k,r=e[1]-n[1]*t.k;return i===t.x&&r===t.y?t:new sS(t.k,i,r)}function _(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function m(t,e,n){t.on("start.zoom",function(){x(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){x(this,arguments).end()}).tween("zoom",function(){var t=arguments,r=x(this,t),a=i.apply(this,t),o=null==n?_(a):"function"==typeof n?n.apply(this,t):n,s=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),u=this.__zoom,c="function"==typeof e?e.apply(this,t):e,f=l(u.invert(o).concat(s/u.k),c.invert(o).concat(s/c.k));return function(t){if(1===t)t=c;else{var e=f(t),n=s/e[2];t=new sS(n,o[0]-e[0]*n,o[1]-e[1]*n)}r.zoom(null,t)}})}function x(t,e,n){return!n&&t.__zooming||new b(t,e)}function b(t,e){this.that=t,this.args=e,this.active=0,this.extent=i.apply(t,e),this.taps=0}function w(){if(n.apply(this,arguments)){var t=x(this,arguments),e=this.__zoom,i=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,a.apply(this,arguments)))),o=ue(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=e.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(e.k===i)return;t.mouse=[o,e.invert(o)],ar(this),t.start()}fS(),t.wheel=setTimeout(function(){t.wheel=null,t.end()},h),t.zoom("mouse",r(v(y(e,i),t.mouse[0],t.mouse[1]),t.extent,u))}}function S(){if(!e&&n.apply(this,arguments)){var t=x(this,arguments,!0),i=ee(Xt.view).on("mousemove.zoom",function(){if(fS(),!t.moved){var e=Xt.clientX-o,n=Xt.clientY-s;t.moved=e*e+n*n>p}t.zoom("mouse",r(v(t.that.__zoom,t.mouse[0]=ue(t.that),t.mouse[1]),t.extent,u))},!0).on("mouseup.zoom",function(){i.on("mousemove.zoom mouseup.zoom",null),ge(Xt.view,t.moved),fS(),t.end()},!0),a=ue(this),o=Xt.clientX,s=Xt.clientY;pe(Xt.view),lS(),t.mouse=[a,this.__zoom.invert(a)],ar(this),t.start()}}function A(){if(n.apply(this,arguments)){var t=this.__zoom,e=ue(this),a=t.invert(e),o=t.k*(Xt.shiftKey?.5:2),s=r(v(y(t,o),e,a),i.apply(this,arguments),u);fS(),c>0?ee(this).transition().duration(c).call(m,s,e):ee(this).call(g.transform,s)}}function T(){if(n.apply(this,arguments)){var e,i,r,a,o=Xt.touches,s=o.length,u=x(this,arguments,Xt.changedTouches.length===s);for(lS(),i=0;i=1e15)return e;return t>=1||t<=-1?(t<0&&(t=-t,n="-"),n+function t(e,n){var e=String(e);var r=e.split(".");if(r.length>1){e=r[0];var a=r[1];2==e.length&&a.length>0?a.length>0?e=e+"."+a.charAt(0):e+="0":1==e.length&&a.length>0&&(e=e+"."+a.charAt(0),a.length>1?e+=a.charAt(1):e+="0")}var o=e.length;e.split(".").length>1&&o--;return o<=3?String(e)+i[n]:t(Number(e)/1e3,n+1)}(t,0)):t.toPrecision(3)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.escapeHtml=function(t){var e,n=""+t,r=i.exec(n);if(!r)return n;var a="",o=0,s=0;for(o=r.index;o]/},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.extend=function(t){for(var e=1;ee&&(a.pop(),c.text(a.join(" ")),a=[r],c=t.append("tspan").attr("x",s).attr("y",u).attr("dy",1.1*++o+0+"em").text(r))})};var i=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(2))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.appendColumn=s,e.appendRow=u;var i,r=n(9),a=(i=r)&&i.__esModule?i:{default:i},o=n(0);function s(t,e){var n=this,i=(Array.prototype.slice.call(arguments,2),void 0!==t?t:null);return"function"==typeof e?(n.matrix[0].push(i),(0,o.each)(n.matrix,function(t,i){var r=void 0;i>0&&(void 0===(r=e.call(n,t,i))&&(r=null),n.matrix[i].push(r))})):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix.length-1?e=e.concat((0,a.default)(n.matrix.length-1-e.length)):(0,o.each)(e,function(t,i){n.matrix.length-10&&(a=n.selectColumn(i),void 0===(o=e.call(n,a,i))&&(o=null),r.push(o))}),n.matrix.push(r)):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix[0].length-1?e=e.concat((0,a.default)(n.matrix[0].length-1-e.length)):(0,o.each)(e,function(t,i){n.matrix[0].length-1e?1:t>=e?0:NaN},r=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return i(e(t),n)}),{left:function(e,n,i,r){for(null==i&&(i=0),null==r&&(r=e.length);i>>1;t(e[a],n)<0?i=a+1:r=a}return i},right:function(e,n,i,r){for(null==i&&(i=0),null==r&&(r=e.length);i>>1;t(e[a],n)>0?r=a:i=a+1}return i}}};var a=r(i),o=a.right,s=a.left,u=o,c=function(t,e){null==e&&(e=l);for(var n=0,i=t.length-1,r=t[0],a=new Array(i<0?0:i);nt?1:e>=t?0:NaN},h=function(t){return null===t?NaN:+t},p=function(t,e){var n,i,r=t.length,a=0,o=-1,s=0,u=0;if(null==e)for(;++o1)return u/(a-1)},g=function(t,e){var n=p(t,e);return n?Math.sqrt(n):n},y=function(t,e){var n,i,r,a=t.length,o=-1;if(null==e){for(;++o=n)for(i=r=n;++on&&(i=n),r=n)for(i=r=n;++on&&(i=n),r0)return[t];if((i=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(r=Math.ceil(e-t+1));++s=0?(a>=S?10:a>=A?5:a>=T?2:1)*Math.pow(10,r):-Math.pow(10,-r)/(a>=S?10:a>=A?5:a>=T?2:1)}function M(t,e,n){var i=Math.abs(e-t)/Math.max(0,n),r=Math.pow(10,Math.floor(Math.log(i)/Math.LN10)),a=i/r;return a>=S?r*=10:a>=A?r*=5:a>=T&&(r*=2),ef;)d.pop(),--h;var p,g=new Array(h+1);for(r=0;r<=h;++r)(p=g[r]=[]).x0=r>0?d[r-1]:l,p.x1=r=1)return+n(t[i-1],i-1,t);var i,r=(i-1)*e,a=Math.floor(r),o=+n(t[a],a,t);return o+(+n(t[a+1],a+1,t)-o)*(r-a)}},V=function(t,e,n){return t=m.call(t,h).sort(i),Math.ceil((n-e)/(2*(k(t,.75)-k(t,.25))*Math.pow(t.length,-1/3)))},O=function(t,e,n){return Math.ceil((n-e)/(3.5*g(t)*Math.pow(t.length,-1/3)))},G=function(t,e){var n,i,r=t.length,a=-1;if(null==e){for(;++a=n)for(i=n;++ai&&(i=n)}else for(;++a=n)for(i=n;++ai&&(i=n);return i},R=function(t,e){var n,i=t.length,r=i,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(i=t[r]).length;--e>=0;)n[--o]=i[e];return n},D=function(t,e){var n,i,r=t.length,a=-1;if(null==e){for(;++a=n)for(i=n;++an&&(i=n)}else for(;++a=n)for(i=n;++an&&(i=n);return i},z=function(t,e){for(var n=e.length,i=new Array(n);n--;)i[n]=t[e[n]];return i},F=function(t,e){if(n=t.length){var n,r,a=0,o=0,s=t[o];for(null==e&&(e=i);++a=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!i.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),o=-1,s=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o0)for(var n,i,r=new Array(n),a=0;a=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),pt.hasOwnProperty(e)?{space:pt[e],local:t}:t};var yt=function(t){var e=gt(t);return(e.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===ht&&e.documentElement.namespaceURI===ht?e.createElement(t):e.createElementNS(n,t)}})(e)};function vt(){}var _t=function(t){return null==t?vt:function(){return this.querySelector(t)}};function mt(){return[]}var xt=function(t){return null==t?mt:function(){return this.querySelectorAll(t)}},bt=function(t){return function(){return this.matches(t)}},wt=function(t){return new Array(t.length)};function St(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}St.prototype={constructor:St,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var At="$";function Tt(t,e,n,i,r,a){for(var o,s=0,u=e.length,c=a.length;se?1:t>=e?0:NaN}var Mt=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function Et(t,e){return t.style.getPropertyValue(e)||Mt(t).getComputedStyle(t,null).getPropertyValue(e)}function Lt(t){return t.trim().split(/^|\s+/)}function kt(t){return t.classList||new Vt(t)}function Vt(t){this._node=t,this._names=Lt(t.getAttribute("class")||"")}function Ot(t,e){for(var n=kt(t),i=-1,r=e.length;++i=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Rt(){this.textContent=""}function It(){this.innerHTML=""}function Nt(){this.nextSibling&&this.parentNode.appendChild(this)}function Dt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function zt(){return null}function Ft(){var t=this.parentNode;t&&t.removeChild(this)}function jt(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function Ht(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}var Bt={},Xt=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(Bt={mouseenter:"mouseover",mouseleave:"mouseout"}));function Yt(t,e,n){return t=Ut(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function Ut(t,e,n){return function(i){var r=Xt;Xt=i;try{t.call(this,this.__data__,e,n)}finally{Xt=r}}}function qt(t){return function(){var e=this.__on;if(e){for(var n,i=0,r=-1,a=e.length;i=b&&(b=x+1);!(m=v[b])&&++b=0;)(i=r[a])&&(o&&4^i.compareDocumentPosition(o)&&o.parentNode.insertBefore(i,o),o=i);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=Ct);for(var n=this._groups,i=n.length,r=new Array(i),a=0;a1?this.each((null==e?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof e?function(t,e,n){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}:function(t,e,n){return function(){this.style.setProperty(t,e,n)}})(t,e,null==n?"":n)):Et(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?function(t){return function(){delete this[t]}}:"function"==typeof e?function(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}:function(t,e){return function(){this[t]=e}})(t,e)):this.node()[t]},classed:function(t,e){var n=Lt(t+"");if(arguments.length<2){for(var i=kt(this.node()),r=-1,a=n.length;++r=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?Wt:qt,null==n&&(n=!1),i=0;if}u.mouse("drag")}function g(){ee(Xt.view).on("mousemove.drag mouseup.drag",null),ge(Xt.view,n),he(),u.mouse("end")}function y(){if(r.apply(this,arguments)){var t,e,n=Xt.changedTouches,i=a.apply(this,arguments),o=n.length;for(t=0;t>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):(e=Le.exec(t))?je(parseInt(e[1],16)):(e=ke.exec(t))?new Ye(e[1],e[2],e[3],1):(e=Ve.exec(t))?new Ye(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Oe.exec(t))?He(e[1],e[2],e[3],e[4]):(e=Ge.exec(t))?He(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Re.exec(t))?Qe(e[1],e[2]/100,e[3]/100,1):(e=Ie.exec(t))?Qe(e[1],e[2]/100,e[3]/100,e[4]):Ne.hasOwnProperty(t)?je(Ne[t]):"transparent"===t?new Ye(NaN,NaN,NaN,0):null}function je(t){return new Ye(t>>16&255,t>>8&255,255&t,1)}function He(t,e,n,i){return i<=0&&(t=e=n=NaN),new Ye(t,e,n,i)}function Be(t){return t instanceof Te||(t=Fe(t)),t?new Ye((t=t.rgb()).r,t.g,t.b,t.opacity):new Ye}function Xe(t,e,n,i){return 1===arguments.length?Be(t):new Ye(t,e,n,null==i?1:i)}function Ye(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}function Ue(){return"#"+We(this.r)+We(this.g)+We(this.b)}function qe(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function We(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Qe(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new $e(t,e,n,i)}function Ke(t){if(t instanceof $e)return new $e(t.h,t.s,t.l,t.opacity);if(t instanceof Te||(t=Fe(t)),!t)return new $e;if(t instanceof $e)return t;var e=(t=t.rgb()).r/255,n=t.g/255,i=t.b/255,r=Math.min(e,n,i),a=Math.max(e,n,i),o=NaN,s=a-r,u=(a+r)/2;return s?(o=e===a?(n-i)/s+6*(n0&&u<1?0:o,new $e(o,s,u,t.opacity)}function Ze(t,e,n,i){return 1===arguments.length?Ke(t):new $e(t,e,n,null==i?1:i)}function $e(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function Je(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}Se(Te,Fe,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:De,formatHex:De,formatHsl:function(){return Ke(this).formatHsl()},formatRgb:ze,toString:ze}),Se(Ye,Xe,Ae(Te,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Ye(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ye(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ue,formatHex:Ue,formatRgb:qe,toString:qe})),Se($e,Ze,Ae(Te,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new $e(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new $e(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,r=2*n-i;return new Ye(Je(t>=240?t-240:t+120,r,i),Je(t,r,i),Je(t<120?t+240:t-120,r,i),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var tn=Math.PI/180,en=180/Math.PI,nn=.96422,rn=1,an=.82521,on=4/29,sn=6/29,un=3*sn*sn,cn=sn*sn*sn;function ln(t){if(t instanceof hn)return new hn(t.l,t.a,t.b,t.opacity);if(t instanceof bn)return wn(t);t instanceof Ye||(t=Be(t));var e,n,i=vn(t.r),r=vn(t.g),a=vn(t.b),o=pn((.2225045*i+.7168786*r+.0606169*a)/rn);return i===r&&r===a?e=n=o:(e=pn((.4360747*i+.3850649*r+.1430804*a)/nn),n=pn((.0139322*i+.0971045*r+.7141733*a)/an)),new hn(116*o-16,500*(e-o),200*(o-n),t.opacity)}function fn(t,e){return new hn(t,0,0,null==e?1:e)}function dn(t,e,n,i){return 1===arguments.length?ln(t):new hn(t,e,n,null==i?1:i)}function hn(t,e,n,i){this.l=+t,this.a=+e,this.b=+n,this.opacity=+i}function pn(t){return t>cn?Math.pow(t,1/3):t/un+on}function gn(t){return t>sn?t*t*t:un*(t-on)}function yn(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function vn(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function _n(t){if(t instanceof bn)return new bn(t.h,t.c,t.l,t.opacity);if(t instanceof hn||(t=ln(t)),0===t.a&&0===t.b)return new bn(NaN,0=1?(n=1,e-1):Math.floor(n*e),r=t[i],a=t[i+1],o=i>0?t[i-1]:2*r-a,s=i180||n<-180?n-360*Math.round(n/360):n):Gn(isNaN(t)?e:t)}function Nn(t){return 1==(t=+t)?Dn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}(e,n,t):Gn(isNaN(e)?n:e)}}function Dn(t,e){var n=e-t;return n?Rn(t,n):Gn(isNaN(t)?e:t)}var zn=function t(e){var n=Nn(e);function i(t,e){var i=n((t=Xe(t)).r,(e=Xe(e)).r),r=n(t.g,e.g),a=n(t.b,e.b),o=Dn(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=r(e),t.b=a(e),t.opacity=o(e),t+""}}return i.gamma=t,i}(1);function Fn(t){return function(e){var n,i,r=e.length,a=new Array(r),o=new Array(r),s=new Array(r);for(n=0;na&&(r=e.slice(a,r),s[o]?s[o]+=r:s[++o]=r),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,u.push({i:o,x:Yn(n,i)})),a=Wn.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(r(n)+"rotate(",null,i)-2,x:Yn(t,e)})):e&&n.push(r(n)+"rotate("+e+i)}(a.rotate,o.rotate,s,u),function(t,e,n,a){t!==e?a.push({i:n.push(r(n)+"skewX(",null,i)-2,x:Yn(t,e)}):e&&n.push(r(n)+"skewX("+e+i)}(a.skewX,o.skewX,s,u),function(t,e,n,i,a,o){if(t!==n||e!==i){var s=a.push(r(a)+"scale(",null,",",null,")");o.push({i:s-4,x:Yn(t,n)},{i:s-2,x:Yn(e,i)})}else 1===n&&1===i||a.push(r(a)+"scale("+n+","+i+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,u),a=o=null,function(t){for(var e,n=-1,i=u.length;++n=0&&e._call.call(null,t),e=e._next;--Ci}function ji(){Vi=(ki=Gi.now())+Oi,Ci=Mi=0;try{Fi()}finally{Ci=0,function(){var t,e,n=Ai,i=1/0;for(;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Ai=e);Ti=t,Bi(i)}(),Vi=0}}function Hi(){var t=Gi.now(),e=t-ki;e>Li&&(Oi-=e,ki=t)}function Bi(t){Ci||(Mi&&(Mi=clearTimeout(Mi)),t-Vi>24?(t<1/0&&(Mi=setTimeout(ji,t-Gi.now()-Oi)),Ei&&(Ei=clearInterval(Ei))):(Ei||(ki=Gi.now(),Ei=setInterval(Hi,Li)),Ci=1,Ri(ji)))}Di.prototype=zi.prototype={constructor:Di,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Ii():+n)+(null==e?0:+e),this._next||Ti===this||(Ti?Ti._next=this:Ai=this,Ti=this),this._call=t,this._time=n,Bi()},stop:function(){this._call&&(this._call=null,this._time=1/0,Bi())}};var Xi=function(t,e,n){var i=new Di;return e=null==e?0:+e,i.restart(function(n){i.stop(),t(n+e)},e,n),i},Yi=function(t,e,n){var i=new Di,r=e;return null==e?(i.restart(t,e,n),i):(e=+e,n=null==n?Ii():+n,i.restart(function a(o){o+=r,i.restart(a,r+=e,n),t(o)},e,n),i)},Ui=dt("start","end","cancel","interrupt"),qi=[],Wi=0,Qi=1,Ki=2,Zi=3,$i=4,Ji=5,tr=6,er=function(t,e,n,i,r,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var i,r=t.__transition;function a(u){var c,l,f,d;if(n.state!==Qi)return s();for(c in r)if((d=r[c]).name===n.name){if(d.state===Zi)return Xi(a);d.state===$i?(d.state=tr,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[c]):+cWi)throw new Error("too late; already scheduled");return n}function ir(t,e){var n=rr(t,e);if(n.state>Zi)throw new Error("too late; already running");return n}function rr(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}var ar=function(t,e){var n,i,r,a=t.__transition,o=!0;if(a){for(r in e=null==e?null:e+"",a)(n=a[r]).name===e?(i=n.state>Ki&&n.state=0&&(t=t.slice(0,e)),!t||"start"===t})}(e)?nr:ir;return function(){var o=a(this,t),s=o.on;s!==i&&(r=(i=s).copy()).on(e,n),o.on=r}}(n,t,e))},attr:function(t,e){var n=gt(t),i="transform"===n?ci:sr;return this.attrTween(t,"function"==typeof e?(n.local?function(t,e,n){var i,r,a;return function(){var o,s,u=n(this);if(null!=u)return(o=this.getAttributeNS(t.space,t.local))===(s=u+"")?null:o===i&&s===r?a:(r=s,a=e(i=o,u));this.removeAttributeNS(t.space,t.local)}}:function(t,e,n){var i,r,a;return function(){var o,s,u=n(this);if(null!=u)return(o=this.getAttribute(t))===(s=u+"")?null:o===i&&s===r?a:(r=s,a=e(i=o,u));this.removeAttribute(t)}})(n,i,or(this,"attr."+t,e)):null==e?(n.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(n):(n.local?function(t,e,n){var i,r,a=n+"";return function(){var o=this.getAttributeNS(t.space,t.local);return o===a?null:o===i?r:r=e(i=o,n)}}:function(t,e,n){var i,r,a=n+"";return function(){var o=this.getAttribute(t);return o===a?null:o===i?r:r=e(i=o,n)}})(n,i,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var i=gt(t);return this.tween(n,(i.local?function(t,e){var n,i;function r(){var r=e.apply(this,arguments);return r!==i&&(n=(i=r)&&function(t,e){return function(n){this.setAttributeNS(t.space,t.local,e(n))}}(t,r)),n}return r._value=e,r}:function(t,e){var n,i;function r(){var r=e.apply(this,arguments);return r!==i&&(n=(i=r)&&function(t,e){return function(n){this.setAttribute(t,e(n))}}(t,r)),n}return r._value=e,r})(i,e))},style:function(t,e,n){var i="transform"==(t+="")?ui:sr;return null==e?this.styleTween(t,function(t,e){var n,i,r;return function(){var a=Et(this,t),o=(this.style.removeProperty(t),Et(this,t));return a===o?null:a===n&&o===i?r:r=e(n=a,i=o)}}(t,i)).on("end.style."+t,cr(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var i,r,a;return function(){var o=Et(this,t),s=n(this),u=s+"";return null==s&&(this.style.removeProperty(t),u=s=Et(this,t)),o===u?null:o===i&&u===r?a:(r=u,a=e(i=o,s))}}(t,i,or(this,"style."+t,e))).each(function(t,e){var n,i,r,a,o="style."+e,s="end."+o;return function(){var u=ir(this,t),c=u.on,l=null==u.value[o]?a||(a=cr(e)):void 0;c===n&&r===l||(i=(n=c).copy()).on(s,r=l),u.on=i}}(this._id,t)):this.styleTween(t,function(t,e,n){var i,r,a=n+"";return function(){var o=Et(this,t);return o===a?null:o===i?r:r=e(i=o,n)}}(t,i,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var i="style."+(t+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==e)return this.tween(i,null);if("function"!=typeof e)throw new Error;return this.tween(i,function(t,e,n){var i,r;function a(){var a=e.apply(this,arguments);return a!==r&&(i=(r=a)&&function(t,e,n){return function(i){this.style.setProperty(t,e(i),n)}}(t,a,n)),i}return a._value=e,a}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(or(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",(t=this._id,function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}));var t},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var i,r=rr(this.node(),n).tween,a=0,o=r.length;aQi&&n.name===e)return new fr([[t]],ra,e,+i);return null},oa=function(t){return function(){return t}},sa=function(t,e,n){this.target=t,this.type=e,this.selection=n};function ua(){Xt.stopImmediatePropagation()}var ca=function(){Xt.preventDefault(),Xt.stopImmediatePropagation()},la={name:"drag"},fa={name:"space"},da={name:"handle"},ha={name:"center"};function pa(t){return[+t[0],+t[1]]}function ga(t){return[pa(t[0]),pa(t[1])]}var ya={name:"x",handles:["w","e"].map(Aa),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},va={name:"y",handles:["n","s"].map(Aa),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},_a={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(Aa),input:function(t){return null==t?null:ga(t)},output:function(t){return t}},ma={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},xa={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},ba={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},wa={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},Sa={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function Aa(t){return{type:t}}function Ta(){return!Xt.ctrlKey&&!Xt.button}function Pa(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Ca(){return navigator.maxTouchPoints||"ontouchstart"in this}function Ma(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Ea(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function La(){return Oa(ya)}function ka(){return Oa(va)}var Va=function(){return Oa(_a)};function Oa(t){var e,n=Pa,i=Ta,r=Ca,a=!0,o=dt(u,"start","brush","end"),s=6;function u(e){var n=e.property("__brush",g).selectAll(".overlay").data([Aa("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",ma.overlay).merge(n).each(function(){var t=Ma(this).extent;ee(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),e.selectAll(".selection").data([Aa("selection")]).enter().append("rect").attr("class","selection").attr("cursor",ma.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var i=e.selectAll(".handle").data(t.handles,function(t){return t.type});i.exit().remove(),i.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return ma[t.type]}),e.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",d).filter(r).on("touchstart.brush",d).on("touchmove.brush",h).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function c(){var t=ee(this),e=Ma(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?e[1][0]-s/2:e[0][0]-s/2}).attr("y",function(t){return"s"===t.type[0]?e[1][1]-s/2:e[0][1]-s/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+s:s}).attr("height",function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+s:s})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,e,n){return!n&&t.__brush.emitter||new f(t,e)}function f(t,e){this.that=t,this.args=e,this.state=t.__brush,this.active=0}function d(){if((!e||Xt.touches)&&i.apply(this,arguments)){var n,r,o,s,u,f,d,h,p,g,y,v,_=this,m=Xt.target.__data__.type,x="selection"===(a&&Xt.metaKey?m="overlay":m)?la:a&&Xt.altKey?ha:da,b=t===va?null:wa[m],w=t===ya?null:Sa[m],S=Ma(_),A=S.extent,T=S.selection,P=A[0][0],C=A[0][1],M=A[1][0],E=A[1][1],L=0,k=0,V=b&&w&&a&&Xt.shiftKey,O=Xt.touches?(v=Xt.changedTouches[0].identifier,function(t){return le(t,Xt.touches,v)}):ue,G=O(_),R=G,I=l(_,arguments,!0).beforestart();"overlay"===m?(T&&(p=!0),S.selection=T=[[n=t===va?P:G[0],o=t===ya?C:G[1]],[u=t===va?M:n,d=t===ya?E:o]]):(n=T[0][0],o=T[0][1],u=T[1][0],d=T[1][1]),r=n,s=o,f=u,h=d;var N=ee(_).attr("pointer-events","none"),D=N.selectAll(".overlay").attr("cursor",ma[m]);if(Xt.touches)I.moved=F,I.ended=H;else{var z=ee(Xt.view).on("mousemove.brush",F,!0).on("mouseup.brush",H,!0);a&&z.on("keydown.brush",function(){switch(Xt.keyCode){case 16:V=b&&w;break;case 18:x===da&&(b&&(u=f-L*b,n=r+L*b),w&&(d=h-k*w,o=s+k*w),x=ha,j());break;case 32:x!==da&&x!==ha||(b<0?u=f-L:b>0&&(n=r-L),w<0?d=h-k:w>0&&(o=s-k),x=fa,D.attr("cursor",ma.selection),j());break;default:return}ca()},!0).on("keyup.brush",function(){switch(Xt.keyCode){case 16:V&&(g=y=V=!1,j());break;case 18:x===ha&&(b<0?u=f:b>0&&(n=r),w<0?d=h:w>0&&(o=s),x=da,j());break;case 32:x===fa&&(Xt.altKey?(b&&(u=f-L*b,n=r+L*b),w&&(d=h-k*w,o=s+k*w),x=ha):(b<0?u=f:b>0&&(n=r),w<0?d=h:w>0&&(o=s),x=da),D.attr("cursor",ma[m]),j());break;default:return}ca()},!0),pe(Xt.view)}ua(),ar(_),c.call(_),I.start()}function F(){var t=O(_);!V||g||y||(Math.abs(t[0]-R[0])>Math.abs(t[1]-R[1])?y=!0:g=!0),R=t,p=!0,ca(),j()}function j(){var t;switch(L=R[0]-G[0],k=R[1]-G[1],x){case fa:case la:b&&(L=Math.max(P-n,Math.min(M-u,L)),r=n+L,f=u+L),w&&(k=Math.max(C-o,Math.min(E-d,k)),s=o+k,h=d+k);break;case da:b<0?(L=Math.max(P-n,Math.min(M-n,L)),r=n+L,f=u):b>0&&(L=Math.max(P-u,Math.min(M-u,L)),r=n,f=u+L),w<0?(k=Math.max(C-o,Math.min(E-o,k)),s=o+k,h=d):w>0&&(k=Math.max(C-d,Math.min(E-d,k)),s=o,h=d+k);break;case ha:b&&(r=Math.max(P,Math.min(M,n-L*b)),f=Math.max(P,Math.min(M,u+L*b))),w&&(s=Math.max(C,Math.min(E,o-k*w)),h=Math.max(C,Math.min(E,d+k*w)))}f1e-6)if(Math.abs(l*s-u*c)>1e-6&&r){var d=n-a,h=i-o,p=s*s+u*u,g=d*d+h*h,y=Math.sqrt(p),v=Math.sqrt(f),_=r*Math.tan((Ba-Math.acos((p+f-g)/(2*y*v)))/2),m=_/v,x=_/y;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*c)+","+(e+m*l)),this._+="A"+r+","+r+",0,0,"+ +(l*d>c*h)+","+(this._x1=t+x*s)+","+(this._y1=e+x*u)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,i,r,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(i),s=n*Math.sin(i),u=t+o,c=e+s,l=1^a,f=a?i-r:r-i;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+u+","+c:(Math.abs(this._x1-u)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+u+","+c),n&&(f<0&&(f=f%Xa+Xa),f>Ya?this._+="A"+n+","+n+",0,1,"+l+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+l+","+(this._x1=u)+","+(this._y1=c):f>1e-6&&(this._+="A"+n+","+n+",0,"+ +(f>=Ba)+","+l+","+(this._x1=t+n*Math.cos(r))+","+(this._y1=e+n*Math.sin(r))))},rect:function(t,e,n,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +i+"h"+-n+"Z"},toString:function(){return this._}};var Wa=qa;function Qa(t){return t.source}function Ka(t){return t.target}function Za(t){return t.radius}function $a(t){return t.startAngle}function Ja(t){return t.endAngle}var to=function(){var t=Qa,e=Ka,n=Za,i=$a,r=Ja,a=null;function o(){var o,s=ja.call(arguments),u=t.apply(this,s),c=e.apply(this,s),l=+n.apply(this,(s[0]=u,s)),f=i.apply(this,s)-Na,d=r.apply(this,s)-Na,h=l*Ga(f),p=l*Ra(f),g=+n.apply(this,(s[0]=c,s)),y=i.apply(this,s)-Na,v=r.apply(this,s)-Na;if(a||(a=o=Wa()),a.moveTo(h,p),a.arc(0,0,l,f,d),f===y&&d===v||(a.quadraticCurveTo(0,0,g*Ga(y),g*Ra(y)),a.arc(0,0,g,y,v)),a.quadraticCurveTo(0,0,h,p),a.closePath(),o)return a=null,o+""||null}return o.radius=function(t){return arguments.length?(n="function"==typeof t?t:Ha(+t),o):n},o.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Ha(+t),o):i},o.endAngle=function(t){return arguments.length?(r="function"==typeof t?t:Ha(+t),o):r},o.source=function(e){return arguments.length?(t=e,o):t},o.target=function(t){return arguments.length?(e=t,o):e},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o};function eo(){}function no(t,e){var n=new eo;if(t instanceof eo)t.each(function(t,e){n.set(e,t)});else if(Array.isArray(t)){var i,r=-1,a=t.length;if(null==e)for(;++r=i.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var u,c,l,f=-1,d=n.length,h=i[r++],p=io(),g=o();++fi.length)return n;var o,s=r[a-1];return null!=e&&a>=i.length?o=n.entries():(o=[],n.each(function(e,n){o.push({key:n,values:t(e,a)})})),null!=s?o.sort(function(t,e){return s(t.key,e.key)}):o}(a(t,0,so,uo),0)},key:function(t){return i.push(t),n},sortKeys:function(t){return r[i.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}};function ao(){return{}}function oo(t,e,n){t[e]=n}function so(){return io()}function uo(t,e,n){t.set(e,n)}function co(){}var lo=io.prototype;function fo(t,e){var n=new co;if(t instanceof co)t.each(function(t){n.add(t)});else if(t){var i=-1,r=t.length;if(null==e)for(;++ii!=h>i&&n<(d-c)*(i-l)/(h-l)+c&&(r=-r)}return r}function So(t,e,n){var i,r,a,o;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(r=t[i=+(t[0]===e[0])],a=n[i],o=e[i],r<=a&&a<=o||o<=a&&a<=r)}var Ao=function(){},To=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]],Po=function(){var t=1,e=1,n=E,i=s;function r(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(_o);else{var i=y(t),r=i[0],o=i[1];e=M(r,o,e),e=w(Math.floor(r/e)*e,Math.floor(o/e)*e,e)}return e.map(function(e){return a(t,e)})}function a(n,r){var a=[],s=[];return function(n,i,r){var a,s,u,c,l,f,d=new Array,h=new Array;a=s=-1,c=n[0]>=i,To[c<<1].forEach(p);for(;++a=i,To[u|c<<1].forEach(p);To[c<<0].forEach(p);for(;++s=i,l=n[s*t]>=i,To[c<<1|l<<2].forEach(p);++a=i,f=l,l=n[s*t+a+1]>=i,To[u|c<<1|l<<2|f<<3].forEach(p);To[c|l<<3].forEach(p)}a=-1,l=n[s*t]>=i,To[l<<2].forEach(p);for(;++a=i,To[l<<2|f<<3].forEach(p);function p(t){var e,n,i=[t[0][0]+a,t[0][1]+s],u=[t[1][0]+a,t[1][1]+s],c=o(i),l=o(u);(e=h[c])?(n=d[l])?(delete h[e.end],delete d[n.start],e===n?(e.ring.push(u),r(e.ring)):d[e.start]=h[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[e.end],e.ring.push(u),h[e.end=l]=e):(e=d[l])?(n=h[c])?(delete d[e.start],delete h[n.end],e===n?(e.ring.push(u),r(e.ring)):d[n.start]=h[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[e.start],e.ring.unshift(i),d[e.start=c]=e):d[c]=h[l]={start:c,end:l,ring:[i,u]}}To[l<<3].forEach(p)}(n,r,function(t){i(t,n,r),mo(t)>0?a.push([t]):s.push(t)}),s.forEach(function(t){for(var e,n=0,i=a.length;n0&&o0&&s0&&a>0))throw new Error("invalid size");return t=i,e=a,r},r.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?xo(vo.call(t)):xo(t),r):n},r.smooth=function(t){return arguments.length?(i=t?s:Ao,r):i===s},r};function Co(t,e,n){for(var i=t.width,r=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(u-=t.data[s-a+o*i]),e.data[s-n+o*i]=u/Math.min(s+1,i-1+a-s,a))}function Mo(t,e,n){for(var i=t.width,r=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(u-=t.data[o+(s-a)*i]),e.data[o+(s-n)*i]=u/Math.min(s+1,r-1+a-s,a))}function Eo(t){return t[0]}function Lo(t){return t[1]}function ko(){return 1}var Vo=function(){var t=Eo,e=Lo,n=ko,i=960,r=500,a=20,o=2,s=3*a,u=i+2*s>>o,c=r+2*s>>o,l=xo(20);function f(i){var r=new Float32Array(u*c),f=new Float32Array(u*c);i.forEach(function(i,a,l){var f=+t(i,a,l)+s>>o,d=+e(i,a,l)+s>>o,h=+n(i,a,l);f>=0&&f=0&&d>o),Mo({width:u,height:c,data:f},{width:u,height:c,data:r},a>>o),Co({width:u,height:c,data:r},{width:u,height:c,data:f},a>>o),Mo({width:u,height:c,data:f},{width:u,height:c,data:r},a>>o),Co({width:u,height:c,data:r},{width:u,height:c,data:f},a>>o),Mo({width:u,height:c,data:f},{width:u,height:c,data:r},a>>o);var h=l(r);if(!Array.isArray(h)){var p=G(r);h=M(0,p,h),(h=w(0,Math.floor(p/h)*h,h)).shift()}return Po().thresholds(h).size([u,c])(r).map(d)}function d(t){return t.value*=Math.pow(2,-2*o),t.coordinates.forEach(h),t}function h(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,o)-s,t[1]=t[1]*Math.pow(2,o)-s}function y(){return u=i+2*(s=3*a)>>o,c=r+2*s>>o,f}return f.x=function(e){return arguments.length?(t="function"==typeof e?e:xo(+e),f):t},f.y=function(t){return arguments.length?(e="function"==typeof t?t:xo(+t),f):e},f.weight=function(t){return arguments.length?(n="function"==typeof t?t:xo(+t),f):n},f.size=function(t){if(!arguments.length)return[i,r];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return i=e,r=n,y()},f.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(t)/Math.LN2),y()},f.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?xo(vo.call(t)):xo(t),f):l},f.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},f},Oo={},Go={},Ro=34,Io=10,No=13;function Do(t){return new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}")}function zo(t){var e=Object.create(null),n=[];return t.forEach(function(t){for(var i in t)i in e||n.push(e[i]=i)}),n}function Fo(t,e){var n=t+"",i=n.length;return i9999?"+"+Fo(e,6):Fo(e,4))+"-"+Fo(t.getUTCMonth()+1,2)+"-"+Fo(t.getUTCDate(),2)+(a?"T"+Fo(n,2)+":"+Fo(i,2)+":"+Fo(r,2)+"."+Fo(a,3)+"Z":r?"T"+Fo(n,2)+":"+Fo(i,2)+":"+Fo(r,2)+"Z":i||n?"T"+Fo(n,2)+":"+Fo(i,2)+"Z":"")}var Ho=function(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function i(t,e){var i,r=[],a=t.length,o=0,s=0,u=a<=0,c=!1;function l(){if(u)return Go;if(c)return c=!1,Oo;var e,i,r=o;if(t.charCodeAt(r)===Ro){for(;o++=a?u=!0:(i=t.charCodeAt(o++))===Io?c=!0:i===No&&(c=!0,t.charCodeAt(o)===Io&&++o),t.slice(r+1,e-1).replace(/""/g,'"')}for(;o=(a=(g+v)/2))?g=a:v=a,(l=n>=(o=(y+_)/2))?y=o:_=o,r=h,!(h=h[f=l<<1|c]))return r[f]=p,t;if(s=+t._x.call(null,h.data),u=+t._y.call(null,h.data),e===s&&n===u)return p.next=h,r?r[f]=p:t._root=p,t;do{r=r?r[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(g+v)/2))?g=a:v=a,(l=n>=(o=(y+_)/2))?y=o:_=o}while((f=l<<1|c)==(d=(u>=o)<<1|s>=a));return r[d]=h,r[f]=p,t}var Ss=function(t,e,n,i,r){this.node=t,this.x0=e,this.y0=n,this.x1=i,this.y1=r};function As(t){return t[0]}function Ts(t){return t[1]}function Ps(t,e,n){var i=new Cs(null==e?As:e,null==n?Ts:n,NaN,NaN,NaN,NaN);return null==t?i:i.addAll(t)}function Cs(t,e,n,i,r,a){this._x=t,this._y=e,this._x0=n,this._y0=i,this._x1=r,this._y1=a,this._root=void 0}function Ms(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var Es=Ps.prototype=Cs.prototype;function Ls(t){return t.x+t.vx}function ks(t){return t.y+t.vy}Es.copy=function(){var t,e,n=new Cs(this._x,this._y,this._x0,this._y0,this._x1,this._y1),i=this._root;if(!i)return n;if(!i.length)return n._root=Ms(i),n;for(t=[{source:i,target:n._root=new Array(4)}];i=t.pop();)for(var r=0;r<4;++r)(e=i.source[r])&&(e.length?t.push({source:e,target:i.target[r]=new Array(4)}):i.target[r]=Ms(e));return n},Es.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return ws(this.cover(e,n),e,n,t)},Es.addAll=function(t){var e,n,i,r,a=t.length,o=new Array(a),s=new Array(a),u=1/0,c=1/0,l=-1/0,f=-1/0;for(n=0;nl&&(l=i),rf&&(f=r));if(u>l||c>f)return this;for(this.cover(u,c).cover(l,f),n=0;nt||t>=r||i>e||e>=a;)switch(s=(ed||(a=u.y0)>h||(o=u.x1)=v)<<1|t>=y)&&(u=p[p.length-1],p[p.length-1]=p[p.length-1-c],p[p.length-1-c]=u)}else{var _=t-+this._x.call(null,g.data),m=e-+this._y.call(null,g.data),x=_*_+m*m;if(x=(s=(p+y)/2))?p=s:y=s,(l=o>=(u=(g+v)/2))?g=u:v=u,e=h,!(h=h[f=l<<1|c]))return this;if(!h.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(n=e,d=f)}for(;h.data!==t;)if(i=h,!(h=h.next))return this;return(r=h.next)&&delete h.next,i?(r?i.next=r:delete i.next,this):e?(r?e[f]=r:delete e[f],(h=e[0]||e[1]||e[2]||e[3])&&h===(e[3]||e[2]||e[1]||e[0])&&!h.length&&(n?n[d]=h:this._root=h),this):(this._root=r,this)},Es.removeAll=function(t){for(var e=0,n=t.length;eu+h||rc+h||as.index){var p=u-o.x-o.vx,g=c-o.y-o.vy,y=p*p+g*g;yt.r&&(t.r=t[e].r)}function s(){if(e){var i,r,a=e.length;for(n=new Array(a),i=0;i1?(null==n?s.remove(t):s.set(t,h(n)),e):s.get(t)},find:function(e,n,i){var r,a,o,s,u,c=0,l=t.length;for(null==i?i=1/0:i*=i,c=0;c1?(c.on(t,n),e):c.on(t)}}},js=function(){var t,e,n,i,r=xs(-30),a=1,o=1/0,s=.81;function u(i){var r,a=t.length,o=Ps(t,Is,Ns).visitAfter(l);for(n=i,r=0;r=o)){(t.data!==e||t.next)&&(0===l&&(h+=(l=bs())*l),0===f&&(h+=(f=bs())*f),h1?i[0]+i.slice(2):i,+t.slice(n+1)]},Us=function(t){return(t=Ys(Math.abs(t)))?t[1]:NaN},qs=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ws(t){return new Qs(t)}function Qs(t){if(!(e=qs.exec(t)))throw new Error("invalid format: "+t);var e;this.fill=e[1]||" ",this.align=e[2]||">",this.sign=e[3]||"-",this.symbol=e[4]||"",this.zero=!!e[5],this.width=e[6]&&+e[6],this.comma=!!e[7],this.precision=e[8]&&+e[8].slice(1),this.trim=!!e[9],this.type=e[10]||""}Ws.prototype=Qs.prototype,Qs.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ks,Zs,$s,Js,tu=function(t){t:for(var e,n=t.length,i=1,r=-1;i0){if(!+t[i])break t;r=0}}return r>0?t.slice(0,r)+t.slice(e+1):t},eu=function(t,e){var n=Ys(t,e);if(!n)return t+"";var i=n[0],r=n[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")},nu={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return eu(100*t,e)},r:eu,s:function(t,e){var n=Ys(t,e);if(!n)return t+"";var i=n[0],r=n[1],a=r-(Ks=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,o=i.length;return a===o?i:a>o?i+new Array(a-o+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Ys(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},iu=function(t){return t},ru=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],au=function(t){var e,n,i=t.grouping&&t.thousands?(e=t.grouping,n=t.thousands,function(t,i){for(var r=t.length,a=[],o=0,s=e[0],u=0;r>0&&s>0&&(u+s+1>i&&(s=Math.max(1,i-u)),a.push(t.substring(r-=s,r+s)),!((u+=s+1)>i));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}):iu,r=t.currency,a=t.decimal,o=t.numerals?function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(t.numerals):iu,s=t.percent||"%";function u(t){var e=(t=Ws(t)).fill,n=t.align,u=t.sign,c=t.symbol,l=t.zero,f=t.width,d=t.comma,h=t.precision,p=t.trim,g=t.type;"n"===g?(d=!0,g="g"):nu[g]||(null==h&&(h=12),p=!0,g="g"),(l||"0"===e&&"="===n)&&(l=!0,e="0",n="=");var y="$"===c?r[0]:"#"===c&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",v="$"===c?r[1]:/[%p]/.test(g)?s:"",_=nu[g],m=/[defgprs%]/.test(g);function x(t){var r,s,c,x=y,b=v;if("c"===g)b=_(t)+b,t="";else{var w=(t=+t)<0;if(t=_(Math.abs(t),h),p&&(t=tu(t)),w&&0==+t&&(w=!1),x=(w?"("===u?u:"-":"-"===u||"("===u?"":u)+x,b=("s"===g?ru[8+Ks/3]:"")+b+(w&&"("===u?")":""),m)for(r=-1,s=t.length;++r(c=t.charCodeAt(r))||c>57){b=(46===c?a+t.slice(r+1):t.slice(r))+b,t=t.slice(0,r);break}}d&&!l&&(t=i(t,1/0));var S=x.length+t.length+b.length,A=S>1)+x+t+b+A.slice(S);break;default:t=A+x+t+b}return o(t)}return h=null==h?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,h)):Math.max(0,Math.min(20,h)),x.toString=function(){return t+""},x}return{format:u,formatPrefix:function(t,e){var n=u(((t=Ws(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Us(e)/3))),r=Math.pow(10,-i),a=ru[8+i/3];return function(t){return n(r*t)+a}}}};function ou(t){return Zs=au(t),$s=Zs.format,Js=Zs.formatPrefix,Zs}ou({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var su=function(t){return Math.max(0,-Us(Math.abs(t)))},uu=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Us(e)/3)))-Us(Math.abs(t)))},cu=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Us(e)-Us(t))+1},lu=function(){return new fu};function fu(){this.reset()}fu.prototype={constructor:fu,reset:function(){this.s=this.t=0},add:function(t){hu(du,t,this.t),hu(this,du.s,this.s),this.s?this.t+=du.t:this.s=du.t},valueOf:function(){return this.s}};var du=new fu;function hu(t,e,n){var i=t.s=e+n,r=i-e,a=i-r;t.t=e-a+(n-r)}var pu=1e-6,gu=1e-12,yu=Math.PI,vu=yu/2,_u=yu/4,mu=2*yu,xu=180/yu,bu=yu/180,wu=Math.abs,Su=Math.atan,Au=Math.atan2,Tu=Math.cos,Pu=Math.ceil,Cu=Math.exp,Mu=(Math.floor,Math.log),Eu=Math.pow,Lu=Math.sin,ku=Math.sign||function(t){return t>0?1:t<0?-1:0},Vu=Math.sqrt,Ou=Math.tan;function Gu(t){return t>1?0:t<-1?yu:Math.acos(t)}function Ru(t){return t>1?vu:t<-1?-vu:Math.asin(t)}function Iu(t){return(t=Lu(t/2))*t}function Nu(){}function Du(t,e){t&&Fu.hasOwnProperty(t.type)&&Fu[t.type](t,e)}var zu={Feature:function(t,e){Du(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,i=-1,r=n.length;++i=0?1:-1,r=i*n,a=Tu(e=(e*=bu)/2+_u),o=Lu(e),s=qu*o,u=Uu*a+s*Tu(r),c=s*i*Lu(r);Qu.add(Au(c,u)),Yu=t,Uu=a,qu=o}var nc=function(t){return Ku.reset(),Wu(t,Zu),2*Ku};function ic(t){return[Au(t[1],t[0]),Ru(t[2])]}function rc(t){var e=t[0],n=t[1],i=Tu(n);return[i*Tu(e),i*Lu(e),Lu(n)]}function ac(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function oc(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function sc(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function uc(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function cc(t){var e=Vu(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var lc,fc,dc,hc,pc,gc,yc,vc,_c,mc,xc=lu(),bc={point:wc,lineStart:Ac,lineEnd:Tc,polygonStart:function(){bc.point=Pc,bc.lineStart=Cc,bc.lineEnd=Mc,xc.reset(),Zu.polygonStart()},polygonEnd:function(){Zu.polygonEnd(),bc.point=wc,bc.lineStart=Ac,bc.lineEnd=Tc,Qu<0?(lc=-(dc=180),fc=-(hc=90)):xc>pu?hc=90:xc<-pu&&(fc=-90),mc[0]=lc,mc[1]=dc},sphere:function(){lc=-(dc=180),fc=-(hc=90)}};function wc(t,e){_c.push(mc=[lc=t,dc=t]),ehc&&(hc=e)}function Sc(t,e){var n=rc([t*bu,e*bu]);if(vc){var i=oc(vc,n),r=oc([i[1],-i[0],0],i);cc(r),r=ic(r);var a,o=t-pc,s=o>0?1:-1,u=r[0]*xu*s,c=wu(o)>180;c^(s*pchc&&(hc=a):c^(s*pc<(u=(u+360)%360-180)&&uhc&&(hc=e)),c?tEc(lc,dc)&&(dc=t):Ec(t,dc)>Ec(lc,dc)&&(lc=t):dc>=lc?(tdc&&(dc=t)):t>pc?Ec(lc,t)>Ec(lc,dc)&&(dc=t):Ec(t,dc)>Ec(lc,dc)&&(lc=t)}else _c.push(mc=[lc=t,dc=t]);ehc&&(hc=e),vc=n,pc=t}function Ac(){bc.point=Sc}function Tc(){mc[0]=lc,mc[1]=dc,bc.point=wc,vc=null}function Pc(t,e){if(vc){var n=t-pc;xc.add(wu(n)>180?n+(n>0?360:-360):n)}else gc=t,yc=e;Zu.point(t,e),Sc(t,e)}function Cc(){Zu.lineStart()}function Mc(){Pc(gc,yc),Zu.lineEnd(),wu(xc)>pu&&(lc=-(dc=180)),mc[0]=lc,mc[1]=dc,vc=null}function Ec(t,e){return(e-=t)<0?e+360:e}function Lc(t,e){return t[0]-e[0]}function kc(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eEc(i[0],i[1])&&(i[1]=r[1]),Ec(r[0],i[1])>Ec(i[0],i[1])&&(i[0]=r[0])):a.push(i=r);for(o=-1/0,e=0,i=a[n=a.length-1];e<=n;i=r,++e)r=a[e],(s=Ec(i[1],r[0]))>o&&(o=s,lc=r[0],dc=i[1])}return _c=mc=null,lc===1/0||fc===1/0?[[NaN,NaN],[NaN,NaN]]:[[lc,fc],[dc,hc]]},Qc={sphere:Nu,point:Kc,lineStart:$c,lineEnd:el,polygonStart:function(){Qc.lineStart=nl,Qc.lineEnd=il},polygonEnd:function(){Qc.lineStart=$c,Qc.lineEnd=el}};function Kc(t,e){t*=bu;var n=Tu(e*=bu);Zc(n*Tu(t),n*Lu(t),Lu(e))}function Zc(t,e,n){Gc+=(t-Gc)/++Vc,Rc+=(e-Rc)/Vc,Ic+=(n-Ic)/Vc}function $c(){Qc.point=Jc}function Jc(t,e){t*=bu;var n=Tu(e*=bu);Yc=n*Tu(t),Uc=n*Lu(t),qc=Lu(e),Qc.point=tl,Zc(Yc,Uc,qc)}function tl(t,e){t*=bu;var n=Tu(e*=bu),i=n*Tu(t),r=n*Lu(t),a=Lu(e),o=Au(Vu((o=Uc*a-qc*r)*o+(o=qc*i-Yc*a)*o+(o=Yc*r-Uc*i)*o),Yc*i+Uc*r+qc*a);Oc+=o,Nc+=o*(Yc+(Yc=i)),Dc+=o*(Uc+(Uc=r)),zc+=o*(qc+(qc=a)),Zc(Yc,Uc,qc)}function el(){Qc.point=Kc}function nl(){Qc.point=rl}function il(){al(Bc,Xc),Qc.point=Kc}function rl(t,e){Bc=t,Xc=e,t*=bu,e*=bu,Qc.point=al;var n=Tu(e);Yc=n*Tu(t),Uc=n*Lu(t),qc=Lu(e),Zc(Yc,Uc,qc)}function al(t,e){t*=bu;var n=Tu(e*=bu),i=n*Tu(t),r=n*Lu(t),a=Lu(e),o=Uc*a-qc*r,s=qc*i-Yc*a,u=Yc*r-Uc*i,c=Vu(o*o+s*s+u*u),l=Ru(c),f=c&&-l/c;Fc+=f*o,jc+=f*s,Hc+=f*u,Oc+=l,Nc+=l*(Yc+(Yc=i)),Dc+=l*(Uc+(Uc=r)),zc+=l*(qc+(qc=a)),Zc(Yc,Uc,qc)}var ol=function(t){Vc=Oc=Gc=Rc=Ic=Nc=Dc=zc=Fc=jc=Hc=0,Wu(t,Qc);var e=Fc,n=jc,i=Hc,r=e*e+n*n+i*i;return ryu?t+Math.round(-t/mu)*mu:t,e]}function ll(t,e,n){return(t%=mu)?e||n?ul(dl(t),hl(e,n)):dl(t):e||n?hl(e,n):cl}function fl(t){return function(e,n){return[(e+=t)>yu?e-mu:e<-yu?e+mu:e,n]}}function dl(t){var e=fl(t);return e.invert=fl(-t),e}function hl(t,e){var n=Tu(t),i=Lu(t),r=Tu(e),a=Lu(e);function o(t,e){var o=Tu(e),s=Tu(t)*o,u=Lu(t)*o,c=Lu(e),l=c*n+s*i;return[Au(u*r-l*a,s*n-c*i),Ru(l*r+u*a)]}return o.invert=function(t,e){var o=Tu(e),s=Tu(t)*o,u=Lu(t)*o,c=Lu(e),l=c*r-u*a;return[Au(u*r+c*a,s*n+l*i),Ru(l*n-s*i)]},o}cl.invert=cl;var pl=function(t){function e(e){return(e=t(e[0]*bu,e[1]*bu))[0]*=xu,e[1]*=xu,e}return t=ll(t[0]*bu,t[1]*bu,t.length>2?t[2]*bu:0),e.invert=function(e){return(e=t.invert(e[0]*bu,e[1]*bu))[0]*=xu,e[1]*=xu,e},e};function gl(t,e,n,i,r,a){if(n){var o=Tu(e),s=Lu(e),u=i*n;null==r?(r=e+i*mu,a=e-u/2):(r=yl(o,r),a=yl(o,a),(i>0?ra)&&(r+=i*mu));for(var c,l=r;i>0?l>a:l1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},ml=function(t,e){return wu(t[0]-e[0])=0;--a)r.point((l=c[a])[0],l[1]);else i(d.x,d.p.x,-1,r);d=d.p}c=(d=d.o).z,h=!h}while(!d.v);r.lineEnd()}}};function wl(t){if(e=t.length){for(var e,n,i=0,r=t[0];++i=0?1:-1,T=A*S,P=T>yu,C=g*b;if(Sl.add(Au(C*A*Lu(T),y*w+C*Tu(T))),o+=P?S+A*mu:S,P^h>=n^m>=n){var M=oc(rc(d),rc(_));cc(M);var E=oc(a,M);cc(E);var L=(P^S>=0?-1:1)*Ru(E[2]);(i>L||i===L&&(M[0]||M[1]))&&(s+=P^S>=0?1:-1)}}return(o<-pu||o0){for(f||(r.polygonStart(),f=!0),r.lineStart(),t=0;t1&&2&u&&d.push(d.pop().concat(d.shift())),o.push(d.filter(Cl))}return d}};function Cl(t){return t.length>1}function Ml(t,e){return((t=t.x)[0]<0?t[1]-vu-pu:vu-t[1])-((e=e.x)[0]<0?e[1]-vu-pu:vu-e[1])}var El=Pl(function(){return!0},function(t){var e,n=NaN,i=NaN,r=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?yu:-yu,u=wu(a-n);wu(u-yu)0?vu:-vu),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),t.point(a,i),e=0):r!==s&&u>=yu&&(wu(n-r)pu?Su((Lu(e)*(a=Tu(i))*Lu(n)-Lu(i)*(r=Tu(e))*Lu(t))/(r*a*o)):(e+i)/2}(n,i,a,o),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),e=0),t.point(n=a,i=o),r=s},lineEnd:function(){t.lineEnd(),n=i=NaN},clean:function(){return 2-e}}},function(t,e,n,i){var r;if(null==t)r=n*vu,i.point(-yu,r),i.point(0,r),i.point(yu,r),i.point(yu,0),i.point(yu,-r),i.point(0,-r),i.point(-yu,-r),i.point(-yu,0),i.point(-yu,r);else if(wu(t[0]-e[0])>pu){var a=t[0]0,r=wu(e)>pu;function a(t,n){return Tu(t)*Tu(n)>e}function o(t,n,i){var r=[1,0,0],a=oc(rc(t),rc(n)),o=ac(a,a),s=a[0],u=o-s*s;if(!u)return!i&&t;var c=e*o/u,l=-e*s/u,f=oc(r,a),d=uc(r,c);sc(d,uc(a,l));var h=f,p=ac(d,h),g=ac(h,h),y=p*p-g*(ac(d,d)-1);if(!(y<0)){var v=Vu(y),_=uc(h,(-p-v)/g);if(sc(_,d),_=ic(_),!i)return _;var m,x=t[0],b=n[0],w=t[1],S=n[1];b0^_[1]<(wu(_[0]-x)yu^(x<=_[0]&&_[0]<=b)){var P=uc(h,(-p+v)/g);return sc(P,d),[_,ic(P)]}}}function s(e,n){var r=i?t:yu-t,a=0;return e<-r?a|=1:e>r&&(a|=2),n<-r?a|=4:n>r&&(a|=8),a}return Pl(a,function(t){var e,n,u,c,l;return{lineStart:function(){c=u=!1,l=1},point:function(f,d){var h,p=[f,d],g=a(f,d),y=i?g?0:s(f,d):g?s(f+(f<0?yu:-yu),d):0;if(!e&&(c=u=g)&&t.lineStart(),g!==u&&(!(h=o(e,p))||ml(e,h)||ml(p,h))&&(p[0]+=pu,p[1]+=pu,g=a(p[0],p[1])),g!==u)l=0,g?(t.lineStart(),h=o(p,e),t.point(h[0],h[1])):(h=o(e,p),t.point(h[0],h[1]),t.lineEnd()),e=h;else if(r&&e&&i^g){var v;y&n||!(v=o(p,e,!0))||(l=0,i?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||e&&ml(e,p)||t.point(p[0],p[1]),e=p,u=g,n=y},lineEnd:function(){u&&t.lineEnd(),e=null},clean:function(){return l|(c&&u)<<1}}},function(e,i,r,a){gl(a,t,n,r,e,i)},i?[0,-t]:[-yu,t-yu])},kl=function(t,e,n,i,r,a){var o,s=t[0],u=t[1],c=0,l=1,f=e[0]-s,d=e[1]-u;if(o=n-s,f||!(o>0)){if(o/=f,f<0){if(o0){if(o>l)return;o>c&&(c=o)}if(o=r-s,f||!(o<0)){if(o/=f,f<0){if(o>l)return;o>c&&(c=o)}else if(f>0){if(o0)){if(o/=d,d<0){if(o0){if(o>l)return;o>c&&(c=o)}if(o=a-u,d||!(o<0)){if(o/=d,d<0){if(o>l)return;o>c&&(c=o)}else if(d>0){if(o0&&(t[0]=s+c*f,t[1]=u+c*d),l<1&&(e[0]=s+l*f,e[1]=u+l*d),!0}}}}},Vl=1e9,Ol=-Vl;function Gl(t,e,n,i){function r(r,a){return t<=r&&r<=n&&e<=a&&a<=i}function a(r,a,s,c){var l=0,f=0;if(null==r||(l=o(r,s))!==(f=o(a,s))||u(r,a)<0^s>0)do{c.point(0===l||3===l?t:n,l>1?i:e)}while((l=(l+s+4)%4)!==f);else c.point(a[0],a[1])}function o(i,r){return wu(i[0]-t)0?0:3:wu(i[0]-n)0?2:1:wu(i[1]-e)0?1:0:r>0?3:2}function s(t,e){return u(t.x,e.x)}function u(t,e){var n=o(t,1),i=o(e,1);return n!==i?n-i:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(o){var u,c,l,f,d,h,p,g,y,v,_,m=o,x=_l(),b={point:w,lineStart:function(){b.point=S,c&&c.push(l=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){u&&(S(f,d),h&&y&&x.rejoin(),u.push(x.result()));b.point=w,y&&m.lineEnd()},polygonStart:function(){m=x,u=[],c=[],_=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,r=c.length;ni&&(d-a)*(i-o)>(h-o)*(t-a)&&++e:h<=i&&(d-a)*(i-o)<(h-o)*(t-a)&&--e;return e}(),n=_&&e,r=(u=N(u)).length;(n||r)&&(o.polygonStart(),n&&(o.lineStart(),a(null,null,1,o),o.lineEnd()),r&&bl(u,s,e,a,o),o.polygonEnd());m=o,u=c=l=null}};function w(t,e){r(t,e)&&m.point(t,e)}function S(a,o){var s=r(a,o);if(c&&l.push([a,o]),v)f=a,d=o,h=s,v=!1,s&&(m.lineStart(),m.point(a,o));else if(s&&y)m.point(a,o);else{var u=[p=Math.max(Ol,Math.min(Vl,p)),g=Math.max(Ol,Math.min(Vl,g))],x=[a=Math.max(Ol,Math.min(Vl,a)),o=Math.max(Ol,Math.min(Vl,o))];kl(u,x,t,e,n,i)?(y||(m.lineStart(),m.point(u[0],u[1])),m.point(x[0],x[1]),s||m.lineEnd(),_=!1):s&&(m.lineStart(),m.point(a,o),_=!1)}p=a,g=o,y=s}return b}}var Rl,Il,Nl,Dl=function(){var t,e,n,i=0,r=0,a=960,o=500;return n={stream:function(n){return t&&e===n?t:t=Gl(i,r,a,o)(e=n)},extent:function(s){return arguments.length?(i=+s[0][0],r=+s[0][1],a=+s[1][0],o=+s[1][1],t=e=null,n):[[i,r],[a,o]]}}},zl=lu(),Fl={sphere:Nu,point:Nu,lineStart:function(){Fl.point=Hl,Fl.lineEnd=jl},lineEnd:Nu,polygonStart:Nu,polygonEnd:Nu};function jl(){Fl.point=Fl.lineEnd=Nu}function Hl(t,e){Rl=t*=bu,Il=Lu(e*=bu),Nl=Tu(e),Fl.point=Bl}function Bl(t,e){t*=bu;var n=Lu(e*=bu),i=Tu(e),r=wu(t-Rl),a=Tu(r),o=i*Lu(r),s=Nl*n-Il*i*a,u=Il*n+Nl*i*a;zl.add(Au(Vu(o*o+s*s),u)),Rl=t,Il=n,Nl=i}var Xl=function(t){return zl.reset(),Wu(t,Fl),+zl},Yl=[null,null],Ul={type:"LineString",coordinates:Yl},ql=function(t,e){return Yl[0]=t,Yl[1]=e,Xl(Ul)},Wl={Feature:function(t,e){return Kl(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,i=-1,r=n.length;++i0&&(r=ql(t[a],t[a-1]))>0&&n<=r&&i<=r&&(n+i-r)*(1-Math.pow((n-i)/r,2))pu}).map(u)).concat(w(Pu(a/h)*h,r,h).filter(function(t){return wu(t%g)>pu}).map(c))}return v.lines=function(){return _().map(function(t){return{type:"LineString",coordinates:t}})},v.outline=function(){return{type:"Polygon",coordinates:[l(i).concat(f(o).slice(1),l(n).reverse().slice(1),f(s).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],s=+t[0][1],o=+t[1][1],i>n&&(t=i,i=n,n=t),s>o&&(t=s,s=o,o=t),v.precision(y)):[[i,s],[n,o]]},v.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],r=+n[1][1],e>t&&(n=e,e=t,t=n),a>r&&(n=a,a=r,r=n),v.precision(y)):[[e,a],[t,r]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(d=+t[0],h=+t[1],v):[d,h]},v.precision=function(d){return arguments.length?(y=+d,u=rf(a,r,90),c=af(e,t,y),l=rf(s,o,90),f=af(i,n,y),v):y},v.extentMajor([[-180,-90+pu],[180,90-pu]]).extentMinor([[-180,-80-pu],[180,80+pu]])}function sf(){return of()()}var uf,cf,lf,ff,df=function(t,e){var n=t[0]*bu,i=t[1]*bu,r=e[0]*bu,a=e[1]*bu,o=Tu(i),s=Lu(i),u=Tu(a),c=Lu(a),l=o*Tu(n),f=o*Lu(n),d=u*Tu(r),h=u*Lu(r),p=2*Ru(Vu(Iu(a-i)+o*u*Iu(r-n))),g=Lu(p),y=p?function(t){var e=Lu(t*=p)/g,n=Lu(p-t)/g,i=n*l+e*d,r=n*f+e*h,a=n*s+e*c;return[Au(r,i)*xu,Au(a,Vu(i*i+r*r))*xu]}:function(){return[n*xu,i*xu]};return y.distance=p,y},hf=function(t){return t},pf=lu(),gf=lu(),yf={point:Nu,lineStart:Nu,lineEnd:Nu,polygonStart:function(){yf.lineStart=vf,yf.lineEnd=xf},polygonEnd:function(){yf.lineStart=yf.lineEnd=yf.point=Nu,pf.add(wu(gf)),gf.reset()},result:function(){var t=pf/2;return pf.reset(),t}};function vf(){yf.point=_f}function _f(t,e){yf.point=mf,uf=lf=t,cf=ff=e}function mf(t,e){gf.add(ff*t-lf*e),lf=t,ff=e}function xf(){mf(uf,cf)}var bf=yf,wf=1/0,Sf=wf,Af=-wf,Tf=Af;var Pf,Cf,Mf,Ef,Lf={point:function(t,e){tAf&&(Af=t);eTf&&(Tf=e)},lineStart:Nu,lineEnd:Nu,polygonStart:Nu,polygonEnd:Nu,result:function(){var t=[[wf,Sf],[Af,Tf]];return Af=Tf=-(Sf=wf=1/0),t}},kf=0,Vf=0,Of=0,Gf=0,Rf=0,If=0,Nf=0,Df=0,zf=0,Ff={point:jf,lineStart:Hf,lineEnd:Yf,polygonStart:function(){Ff.lineStart=Uf,Ff.lineEnd=qf},polygonEnd:function(){Ff.point=jf,Ff.lineStart=Hf,Ff.lineEnd=Yf},result:function(){var t=zf?[Nf/zf,Df/zf]:If?[Gf/If,Rf/If]:Of?[kf/Of,Vf/Of]:[NaN,NaN];return kf=Vf=Of=Gf=Rf=If=Nf=Df=zf=0,t}};function jf(t,e){kf+=t,Vf+=e,++Of}function Hf(){Ff.point=Bf}function Bf(t,e){Ff.point=Xf,jf(Mf=t,Ef=e)}function Xf(t,e){var n=t-Mf,i=e-Ef,r=Vu(n*n+i*i);Gf+=r*(Mf+t)/2,Rf+=r*(Ef+e)/2,If+=r,jf(Mf=t,Ef=e)}function Yf(){Ff.point=jf}function Uf(){Ff.point=Wf}function qf(){Qf(Pf,Cf)}function Wf(t,e){Ff.point=Qf,jf(Pf=Mf=t,Cf=Ef=e)}function Qf(t,e){var n=t-Mf,i=e-Ef,r=Vu(n*n+i*i);Gf+=r*(Mf+t)/2,Rf+=r*(Ef+e)/2,If+=r,Nf+=(r=Ef*t-Mf*e)*(Mf+t),Df+=r*(Ef+e),zf+=3*r,jf(Mf=t,Ef=e)}var Kf=Ff;function Zf(t){this._context=t}Zf.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,mu)}},result:Nu};var $f,Jf,td,ed,nd,id=lu(),rd={point:Nu,lineStart:function(){rd.point=ad},lineEnd:function(){$f&&od(Jf,td),rd.point=Nu},polygonStart:function(){$f=!0},polygonEnd:function(){$f=null},result:function(){var t=+id;return id.reset(),t}};function ad(t,e){rd.point=od,Jf=ed=t,td=nd=e}function od(t,e){ed-=t,nd-=e,id.add(Vu(ed*ed+nd*nd)),ed=t,nd=e}var sd=rd;function ud(){this._string=[]}function cd(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}ud.prototype={_radius:4.5,_circle:cd(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=cd(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var ld=function(t,e){var n,i,r=4.5;function a(t){return t&&("function"==typeof r&&i.pointRadius(+r.apply(this,arguments)),Wu(t,n(i))),i.result()}return a.area=function(t){return Wu(t,n(bf)),bf.result()},a.measure=function(t){return Wu(t,n(sd)),sd.result()},a.bounds=function(t){return Wu(t,n(Lf)),Lf.result()},a.centroid=function(t){return Wu(t,n(Kf)),Kf.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,hf):(t=e).stream,a):t},a.context=function(t){return arguments.length?(i=null==t?(e=null,new ud):new Zf(e=t),"function"!=typeof r&&i.pointRadius(r),a):e},a.pointRadius=function(t){return arguments.length?(r="function"==typeof t?t:(i.pointRadius(+t),+t),a):r},a.projection(t).context(e)},fd=function(t){return{stream:dd(t)}};function dd(t){return function(e){var n=new hd;for(var i in t)n[i]=t[i];return n.stream=e,n}}function hd(){}function pd(t,e,n){var i=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=i&&t.clipExtent(null),Wu(n,t.stream(Lf)),e(Lf.result()),null!=i&&t.clipExtent(i),t}function gd(t,e,n){return pd(t,function(n){var i=e[1][0]-e[0][0],r=e[1][1]-e[0][1],a=Math.min(i/(n[1][0]-n[0][0]),r/(n[1][1]-n[0][1])),o=+e[0][0]+(i-a*(n[1][0]+n[0][0]))/2,s=+e[0][1]+(r-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([o,s])},n)}function yd(t,e,n){return gd(t,[[0,0],e],n)}function vd(t,e,n){return pd(t,function(n){var i=+e,r=i/(n[1][0]-n[0][0]),a=(i-r*(n[1][0]+n[0][0]))/2,o=-r*n[0][1];t.scale(150*r).translate([a,o])},n)}function _d(t,e,n){return pd(t,function(n){var i=+e,r=i/(n[1][1]-n[0][1]),a=-r*n[0][0],o=(i-r*(n[1][1]+n[0][1]))/2;t.scale(150*r).translate([a,o])},n)}hd.prototype={constructor:hd,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var md=16,xd=Tu(30*bu),bd=function(t,e){return+e?function(t,e){function n(i,r,a,o,s,u,c,l,f,d,h,p,g,y){var v=c-i,_=l-r,m=v*v+_*_;if(m>4*e&&g--){var x=o+d,b=s+h,w=u+p,S=Vu(x*x+b*b+w*w),A=Ru(w/=S),T=wu(wu(w)-1)e||wu((v*E+_*L)/m-.5)>.3||o*d+s*h+u*p2?t[2]%360*bu:0,C()):[y*xu,v*xu,_*xu]},T.angle=function(t){return arguments.length?(m=t%360*bu,C()):m*xu},T.precision=function(t){return arguments.length?(o=bd(s,A=t*t),M()):Vu(A)},T.fitExtent=function(t,e){return gd(T,t,e)},T.fitSize=function(t,e){return yd(T,t,e)},T.fitWidth=function(t,e){return vd(T,t,e)},T.fitHeight=function(t,e){return _d(T,t,e)},function(){return e=t.apply(this,arguments),T.invert=e.invert&&P,C()}}function Pd(t){var e=0,n=yu/3,i=Td(t),r=i(e,n);return r.parallels=function(t){return arguments.length?i(e=t[0]*bu,n=t[1]*bu):[e*xu,n*xu]},r}function Cd(t,e){var n=Lu(t),i=(n+Lu(e))/2;if(wu(i)=.12&&r<.234&&i>=-.425&&i<-.214?s:r>=.166&&r<.234&&i>=-.214&&i<-.115?u:o).invert(t)},l.stream=function(n){return t&&e===n?t:(i=[o.stream(e=n),s.stream(n),u.stream(n)],r=i.length,t={point:function(t,e){for(var n=-1;++n0?e<-vu+pu&&(e=-vu+pu):e>vu-pu&&(e=vu-pu);var n=r/Eu(Fd(e),i);return[n*Lu(i*t),r-n*Tu(i*t)]}return a.invert=function(t,e){var n=r-e,a=ku(i)*Vu(t*t+n*n);return[Au(t,wu(n))/i*ku(n),2*Su(Eu(r/a,1/i))-vu]},a}var Hd=function(){return Pd(jd).scale(109.5).parallels([30,30])};function Bd(t,e){return[t,e]}Bd.invert=Bd;var Xd=function(){return Ad(Bd).scale(152.63)};function Yd(t,e){var n=Tu(t),i=t===e?Lu(t):(n-Tu(e))/(e-t),r=n/i+t;if(wu(i)pu&&--r>0);return[t/(.8707+(a=i*i)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),i]};var ah=function(){return Ad(rh).scale(175.295)};function oh(t,e){return[Tu(e)*Lu(t),Lu(e)]}oh.invert=Vd(Ru);var sh=function(){return Ad(oh).scale(249.5).clipAngle(90+pu)};function uh(t,e){var n=Tu(e),i=1+Tu(t)*n;return[n*Lu(t)/i,Lu(e)/i]}uh.invert=Vd(function(t){return 2*Su(t)});var ch=function(){return Ad(uh).scale(250).clipAngle(142)};function lh(t,e){return[Mu(Ou((vu+e)/2)),-t]}lh.invert=function(t,e){return[-e,2*Su(Cu(t))-vu]};var fh=function(){var t=zd(lh),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)};function dh(t,e){return t.parent===e.parent?1:2}function hh(t,e){return t+e.x}function ph(t,e){return Math.max(t,e.y)}var gh=function(){var t=dh,e=1,n=1,i=!1;function r(r){var a,o=0;r.eachAfter(function(e){var n=e.children;n?(e.x=function(t){return t.reduce(hh,0)/t.length}(n),e.y=function(t){return 1+t.reduce(ph,0)}(n)):(e.x=a?o+=t(e,a):0,e.y=0,a=e)});var s=function(t){for(var e;e=t.children;)t=e[0];return t}(r),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(r),c=s.x-t(s,u)/2,l=u.x+t(u,s)/2;return r.eachAfter(i?function(t){t.x=(t.x-r.x)*e,t.y=(r.y-t.y)*n}:function(t){t.x=(t.x-c)/(l-c)*e,t.y=(1-(r.y?t.y/r.y:1))*n})}return r.separation=function(e){return arguments.length?(t=e,r):t},r.size=function(t){return arguments.length?(i=!1,e=+t[0],n=+t[1],r):i?null:[e,n]},r.nodeSize=function(t){return arguments.length?(i=!0,e=+t[0],n=+t[1],r):i?[e,n]:null},r};function yh(t){var e=0,n=t.children,i=n&&n.length;if(i)for(;--i>=0;)e+=n[i].value;else e=1;t.value=e}function vh(t,e){var n,i,r,a,o,s=new bh(t),u=+t.value&&(s.value=t.value),c=[s];for(null==e&&(e=_h);n=c.pop();)if(u&&(n.value=+n.data.value),(r=e(n.data))&&(o=r.length))for(n.children=new Array(o),a=o-1;a>=0;--a)c.push(i=n.children[a]=new bh(r[a])),i.parent=n,i.depth=n.depth+1;return s.eachBefore(xh)}function _h(t){return t.children}function mh(t){t.data=t.data.data}function xh(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function bh(t){this.data=t,this.depth=this.height=0,this.parent=null}bh.prototype=vh.prototype={constructor:bh,count:function(){return this.eachAfter(yh)},each:function(t){var e,n,i,r,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),n=a.children)for(i=0,r=n.length;i=0;--n)r.push(e[n]);return this},sum:function(t){return this.eachAfter(function(e){for(var n=+t(e.data)||0,i=e.children,r=i&&i.length;--r>=0;)n+=i[r].value;e.value=n})},sort:function(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),i=e.ancestors(),r=null;for(t=n.pop(),e=i.pop();t===e;)r=t,t=n.pop(),e=i.pop();return r}(e,t),i=[e];e!==n;)e=e.parent,i.push(e);for(var r=i.length;t!==n;)i.splice(r,0,t),t=t.parent;return i},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each(function(e){t.push(e)}),t},leaves:function(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t},links:function(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e},copy:function(){return vh(this).eachBefore(mh)}};var wh=Array.prototype.slice;var Sh=function(t){for(var e,n,i=0,r=(t=function(t){for(var e,n,i=t.length;i;)n=Math.random()*i--|0,e=t[i],t[i]=t[n],t[n]=e;return t}(wh.call(t))).length,a=[];i0&&n*n>i*i+r*r}function Ch(t,e){for(var n=0;n(o*=o)?(i=(c+o-r)/(2*c),a=Math.sqrt(Math.max(0,o/c-i*i)),n.x=t.x-i*s-a*u,n.y=t.y-i*u+a*s):(i=(c+r-o)/(2*c),a=Math.sqrt(Math.max(0,r/c-i*i)),n.x=e.x+i*s-a*u,n.y=e.y+i*u+a*s)):(n.x=e.x+n.r,n.y=e.y)}function Vh(t,e){var n=t.r+e.r-1e-6,i=e.x-t.x,r=e.y-t.y;return n>0&&n*n>i*i+r*r}function Oh(t){var e=t._,n=t.next._,i=e.r+n.r,r=(e.x*n.r+n.x*e.r)/i,a=(e.y*n.r+n.y*e.r)/i;return r*r+a*a}function Gh(t){this._=t,this.next=null,this.previous=null}function Rh(t){if(!(r=t.length))return 0;var e,n,i,r,a,o,s,u,c,l,f;if((e=t[0]).x=0,e.y=0,!(r>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(r>2))return e.r+n.r;kh(n,e,i=t[2]),e=new Gh(e),n=new Gh(n),i=new Gh(i),e.next=i.previous=n,n.next=e.previous=i,i.next=n.previous=e;t:for(s=3;s0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Nh(e),n):t},n.parentId=function(t){return arguments.length?(e=Nh(t),n):e},n};function tp(t,e){return t.parent===e.parent?1:2}function ep(t){var e=t.children;return e?e[0]:t.t}function np(t){var e=t.children;return e?e[e.length-1]:t.t}function ip(t,e,n){var i=n/(e.i-t.i);e.c-=i,e.s+=n,t.c+=i,e.z+=n,e.m+=n}function rp(t,e,n){return t.a.parent===e.parent?t.a:n}function ap(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}ap.prototype=Object.create(bh.prototype);var op=function(){var t=tp,e=1,n=1,i=null;function r(r){var u=function(t){for(var e,n,i,r,a,o=new ap(t,0),s=[o];e=s.pop();)if(i=e._.children)for(e.children=new Array(a=i.length),r=a-1;r>=0;--r)s.push(n=e.children[r]=new ap(i[r],r)),n.parent=e;return(o.parent=new ap(null,0)).children=[o],o}(r);if(u.eachAfter(a),u.parent.m=-u.z,u.eachBefore(o),i)r.eachBefore(s);else{var c=r,l=r,f=r;r.eachBefore(function(t){t.xl.x&&(l=t),t.depth>f.depth&&(f=t)});var d=c===l?1:t(c,l)/2,h=d-c.x,p=e/(l.x+d+h),g=n/(f.depth||1);r.eachBefore(function(t){t.x=(t.x+h)*p,t.y=t.depth*g})}return r}function a(e){var n=e.children,i=e.parent.children,r=e.i?i[e.i-1]:null;if(n){!function(t){for(var e,n=0,i=0,r=t.children,a=r.length;--a>=0;)(e=r[a]).z+=n,e.m+=n,n+=e.s+(i+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;r?(e.z=r.z+t(e._,r._),e.m=e.z-a):e.z=a}else r&&(e.z=r.z+t(e._,r._));e.parent.A=function(e,n,i){if(n){for(var r,a=e,o=e,s=n,u=a.parent.children[0],c=a.m,l=o.m,f=s.m,d=u.m;s=np(s),a=ep(a),s&&a;)u=ep(u),(o=np(o)).a=e,(r=s.z+f-a.z-c+t(s._,a._))>0&&(ip(rp(s,e,i),e,r),c+=r,l+=r),f+=s.m,c+=a.m,d+=u.m,l+=o.m;s&&!np(o)&&(o.t=s,o.m+=f-l),a&&!ep(u)&&(u.t=a,u.m+=c-d,i=e)}return i}(e,r,e.parent.A||i[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*n}return r.separation=function(e){return arguments.length?(t=e,r):t},r.size=function(t){return arguments.length?(i=!1,e=+t[0],n=+t[1],r):i?null:[e,n]},r.nodeSize=function(t){return arguments.length?(i=!0,e=+t[0],n=+t[1],r):i?[e,n]:null},r},sp=function(t,e,n,i,r){for(var a,o=t.children,s=-1,u=o.length,c=t.value&&(r-n)/t.value;++sd&&(d=s),y=l*l*g,(h=Math.max(d/y,y/f))>p){l-=s;break}p=h}v.push(o={value:l,dice:u1?e:1)},n}(up),fp=function(){var t=lp,e=!1,n=1,i=1,r=[0],a=Dh,o=Dh,s=Dh,u=Dh,c=Dh;function l(t){return t.x0=t.y0=0,t.x1=n,t.y1=i,t.eachBefore(f),r=[0],e&&t.eachBefore(Yh),t}function f(e){var n=r[e.depth],i=e.x0+n,l=e.y0+n,f=e.x1-n,d=e.y1-n;f=n-1){var l=s[e];return l.x0=r,l.y0=a,l.x1=o,void(l.y1=u)}var f=c[e],d=i/2+f,h=e+1,p=n-1;for(;h>>1;c[g]u-a){var _=(r*v+o*y)/i;t(e,h,y,r,a,_,u),t(h,n,v,_,a,o,u)}else{var m=(a*v+u*y)/i;t(e,h,y,r,a,o,m),t(h,n,v,r,m,o,u)}}(0,u,t.value,e,n,i,r)},hp=function(t,e,n,i,r){(1&t.depth?sp:Uh)(t,e,n,i,r)},pp=function t(e){function n(t,n,i,r,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,u,c,l,f=-1,d=o.length,h=t.value;++f1?e:1)},n}(up),gp=function(t){for(var e,n=-1,i=t.length,r=t[i-1],a=0;++n1&&vp(t[n[i-2]],t[n[i-1]],t[r])<=0;)--i;n[i++]=r}return n.slice(0,i)}var xp=function(t){if((n=t.length)<3)return null;var e,n,i=new Array(n),r=new Array(n);for(e=0;e=0;--e)c.push(t[i[a[e]][2]]);for(e=+s;es!=c>s&&o<(u-n)*(s-i)/(c-i)+n&&(l=!l),u=n,c=i;return l},wp=function(t){for(var e,n,i=-1,r=t.length,a=t[r-1],o=a[0],s=a[1],u=0;++i1);return t+n*a*Math.sqrt(-2*Math.log(r)/r)}}return n.source=t,n}(Sp),Pp=function t(e){function n(){var t=Tp.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(Sp),Cp=function t(e){function n(t){return function(){for(var n=0,i=0;ii&&(e=n,n=i,i=e),function(t){return Math.max(n,Math.min(i,t))}}function Yp(t,e,n){var i=t[0],r=t[1],a=e[0],o=e[1];return r2?Up:Yp,r=a=null,f}function f(e){return isNaN(e=+e)?n:(r||(r=i(o.map(t),s,u)))(t(c(e)))}return f.invert=function(n){return c(e((a||(a=i(s,o.map(t),Yn)))(n)))},f.domain=function(t){return arguments.length?(o=Op.call(t,Fp),c===Hp||(c=Xp(o)),l()):o.slice()},f.range=function(t){return arguments.length?(s=Gp.call(t),l()):s.slice()},f.rangeRound=function(t){return s=Gp.call(t),u=ii,l()},f.clamp=function(t){return arguments.length?(c=t?Xp(o):Hp,f):c!==Hp},f.interpolate=function(t){return arguments.length?(u=t,l()):u},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,i){return t=n,e=i,l()}}function Qp(t,e){return Wp()(t,e)}var Kp=function(t,e,n,i){var r,a=M(t,e,n);switch((i=Ws(null==i?",f":i)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(r=uu(a,o))||(i.precision=r),Js(i,o);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(r=cu(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=r-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(r=su(a))||(i.precision=r-2*("%"===i.type))}return $s(i)};function Zp(t){var e=t.domain;return t.ticks=function(t){var n=e();return P(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var i=e();return Kp(i[0],i[i.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var i,r=e(),a=0,o=r.length-1,s=r[a],u=r[o];return u0?i=C(s=Math.floor(s/i)*i,u=Math.ceil(u/i)*i,n):i<0&&(i=C(s=Math.ceil(s*i)/i,u=Math.floor(u*i)/i,n)),i>0?(r[a]=Math.floor(s/i)*i,r[o]=Math.ceil(u/i)*i,e(r)):i<0&&(r[a]=Math.ceil(s*i)/i,r[o]=Math.floor(u*i)/i,e(r)),t},t}function $p(){var t=Qp(Hp,Hp);return t.copy=function(){return qp(t,$p())},Lp.apply(t,arguments),Zp(t)}function Jp(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=Op.call(e,Fp),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return Jp(t).unknown(e)},t=arguments.length?Op.call(t,Fp):[0,1],Zp(n)}var tg=function(t,e){var n,i=0,r=(t=t.slice()).length-1,a=t[i],o=t[r];return o0){for(;du)break;g.push(f)}}else for(;d=1;--l)if(!((f=c*l)u)break;g.push(f)}}else g=P(d,h,Math.min(h-d,p)).map(n);return i?g.reverse():g},i.tickFormat=function(t,r){if(null==r&&(r=10===a?".0e":","),"function"!=typeof r&&(r=$s(r)),t===1/0)return r;null==t&&(t=10);var o=Math.max(1,a*t/i.ticks().length);return function(t){var i=t/n(Math.round(e(t)));return i*a0?r[i-1]:e[0],i=i?[r[i-1],n]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length?(t=e,o):o},o.thresholds=function(){return r.slice()},o.copy=function(){return xg().domain([e,n]).range(a).unknown(t)},Lp.apply(Zp(o),arguments)}function bg(){var t,e=[.5],n=[0,1],i=1;function r(r){return r<=r?n[u(e,r,0,i)]:t}return r.domain=function(t){return arguments.length?(e=Gp.call(t),i=Math.min(e.length,n.length-1),r):e.slice()},r.range=function(t){return arguments.length?(n=Gp.call(t),i=Math.min(e.length,n.length-1),r):n.slice()},r.invertExtent=function(t){var i=n.indexOf(t);return[e[i-1],e[i]]},r.unknown=function(e){return arguments.length?(t=e,r):t},r.copy=function(){return bg().domain(e).range(n).unknown(t)},Lp.apply(r,arguments)}var wg=new Date,Sg=new Date;function Ag(t,e,n,i){function r(e){return t(e=new Date(+e)),e}return r.floor=r,r.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},r.round=function(t){var e=r(t),n=r.ceil(t);return t-e0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o=e)for(;t(e),!n(e);)e.setTime(e-1)},function(t,i){if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!n(t););else for(;--i>=0;)for(;e(t,1),!n(t););})},n&&(r.count=function(e,i){return wg.setTime(+e),Sg.setTime(+i),t(wg),t(Sg),Math.floor(n(wg,Sg))},r.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?r.filter(i?function(e){return i(e)%t==0}:function(e){return r.count(0,e)%t==0}):r:null}),r}var Tg=Ag(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Tg.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ag(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):Tg:null};var Pg=Tg,Cg=Tg.range,Mg=6e4,Eg=6048e5,Lg=Ag(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),kg=Lg,Vg=Lg.range,Og=Ag(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,e){t.setTime(+t+e*Mg)},function(t,e){return(e-t)/Mg},function(t){return t.getMinutes()}),Gg=Og,Rg=Og.range,Ig=Ag(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*Mg)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()}),Ng=Ig,Dg=Ig.range,zg=Ag(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Mg)/864e5},function(t){return t.getDate()-1}),Fg=zg,jg=zg.range;function Hg(t){return Ag(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Mg)/Eg})}var Bg=Hg(0),Xg=Hg(1),Yg=Hg(2),Ug=Hg(3),qg=Hg(4),Wg=Hg(5),Qg=Hg(6),Kg=Bg.range,Zg=Xg.range,$g=Yg.range,Jg=Ug.range,ty=qg.range,ey=Wg.range,ny=Qg.range,iy=Ag(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),ry=iy,ay=iy.range,oy=Ag(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});oy.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ag(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)}):null};var sy=oy,uy=oy.range,cy=Ag(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Mg)},function(t,e){return(e-t)/Mg},function(t){return t.getUTCMinutes()}),ly=cy,fy=cy.range,dy=Ag(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()}),hy=dy,py=dy.range,gy=Ag(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1}),yy=gy,vy=gy.range;function _y(t){return Ag(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/Eg})}var my=_y(0),xy=_y(1),by=_y(2),wy=_y(3),Sy=_y(4),Ay=_y(5),Ty=_y(6),Py=my.range,Cy=xy.range,My=by.range,Ey=wy.range,Ly=Sy.range,ky=Ay.range,Vy=Ty.range,Oy=Ag(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),Gy=Oy,Ry=Oy.range,Iy=Ag(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Iy.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ag(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)}):null};var Ny=Iy,Dy=Iy.range;function zy(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Fy(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function jy(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function Hy(t){var e=t.dateTime,n=t.date,i=t.time,r=t.periods,a=t.days,o=t.shortDays,s=t.months,u=t.shortMonths,c=tv(r),l=ev(r),f=tv(a),d=ev(a),h=tv(o),p=ev(o),g=tv(s),y=ev(s),v=tv(u),_=ev(u),m={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return u[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:bv,e:bv,f:Pv,H:wv,I:Sv,j:Av,L:Tv,m:Cv,M:Mv,p:function(t){return r[+(t.getHours()>=12)]},Q:n_,s:i_,S:Ev,u:Lv,U:kv,V:Vv,w:Ov,W:Gv,x:null,X:null,y:Rv,Y:Iv,Z:Nv,"%":e_},x={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return u[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Dv,e:Dv,f:Bv,H:zv,I:Fv,j:jv,L:Hv,m:Xv,M:Yv,p:function(t){return r[+(t.getUTCHours()>=12)]},Q:n_,s:i_,S:Uv,u:qv,U:Wv,V:Qv,w:Kv,W:Zv,x:null,X:null,y:$v,Y:Jv,Z:t_,"%":e_},b={a:function(t,e,n){var i=h.exec(e.slice(n));return i?(t.w=p[i[0].toLowerCase()],n+i[0].length):-1},A:function(t,e,n){var i=f.exec(e.slice(n));return i?(t.w=d[i[0].toLowerCase()],n+i[0].length):-1},b:function(t,e,n){var i=v.exec(e.slice(n));return i?(t.m=_[i[0].toLowerCase()],n+i[0].length):-1},B:function(t,e,n){var i=g.exec(e.slice(n));return i?(t.m=y[i[0].toLowerCase()],n+i[0].length):-1},c:function(t,n,i){return A(t,e,n,i)},d:fv,e:fv,f:vv,H:hv,I:hv,j:dv,L:yv,m:lv,M:pv,p:function(t,e,n){var i=c.exec(e.slice(n));return i?(t.p=l[i[0].toLowerCase()],n+i[0].length):-1},Q:mv,s:xv,S:gv,u:iv,U:rv,V:av,w:nv,W:ov,x:function(t,e,i){return A(t,n,e,i)},X:function(t,e,n){return A(t,i,e,n)},y:uv,Y:sv,Z:cv,"%":_v};function w(t,e){return function(n){var i,r,a,o=[],s=-1,u=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in a||(a.w=1),"Z"in a?(r=(i=Fy(jy(a.y))).getUTCDay(),i=r>4||0===r?xy.ceil(i):xy(i),i=yy.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(r=(i=e(jy(a.y))).getDay(),i=r>4||0===r?Xg.ceil(i):Xg(i),i=Fg.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),r="Z"in a?Fy(jy(a.y)).getUTCDay():e(jy(a.y)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(r+5)%7:a.w+7*a.U-(r+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Fy(a)):e(a)}}function A(t,e,n,i){for(var r,a,o=0,s=e.length,u=n.length;o=u)return-1;if(37===(r=e.charCodeAt(o++))){if(r=e.charAt(o++),!(a=b[r in Wy?e.charAt(o++):r])||(i=a(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}return m.x=w(n,m),m.X=w(i,m),m.c=w(e,m),x.x=w(n,x),x.X=w(i,x),x.c=w(e,x),{format:function(t){var e=w(t+="",m);return e.toString=function(){return t},e},parse:function(t){var e=S(t+="",zy);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=S(t,Fy);return e.toString=function(){return t},e}}}var By,Xy,Yy,Uy,qy,Wy={"-":"",_:" ",0:"0"},Qy=/^\s*\d+/,Ky=/^%/,Zy=/[\\^$*+?|[\]().{}]/g;function $y(t,e,n){var i=t<0?"-":"",r=(i?-t:t)+"",a=r.length;return i+(a68?1900:2e3),n+i[0].length):-1}function cv(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}function lv(t,e,n){var i=Qy.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function fv(t,e,n){var i=Qy.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function dv(t,e,n){var i=Qy.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}function hv(t,e,n){var i=Qy.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function pv(t,e,n){var i=Qy.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function gv(t,e,n){var i=Qy.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function yv(t,e,n){var i=Qy.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function vv(t,e,n){var i=Qy.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}function _v(t,e,n){var i=Ky.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function mv(t,e,n){var i=Qy.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}function xv(t,e,n){var i=Qy.exec(e.slice(n));return i?(t.Q=1e3*+i[0],n+i[0].length):-1}function bv(t,e){return $y(t.getDate(),e,2)}function wv(t,e){return $y(t.getHours(),e,2)}function Sv(t,e){return $y(t.getHours()%12||12,e,2)}function Av(t,e){return $y(1+Fg.count(sy(t),t),e,3)}function Tv(t,e){return $y(t.getMilliseconds(),e,3)}function Pv(t,e){return Tv(t,e)+"000"}function Cv(t,e){return $y(t.getMonth()+1,e,2)}function Mv(t,e){return $y(t.getMinutes(),e,2)}function Ev(t,e){return $y(t.getSeconds(),e,2)}function Lv(t){var e=t.getDay();return 0===e?7:e}function kv(t,e){return $y(Bg.count(sy(t),t),e,2)}function Vv(t,e){var n=t.getDay();return t=n>=4||0===n?qg(t):qg.ceil(t),$y(qg.count(sy(t),t)+(4===sy(t).getDay()),e,2)}function Ov(t){return t.getDay()}function Gv(t,e){return $y(Xg.count(sy(t),t),e,2)}function Rv(t,e){return $y(t.getFullYear()%100,e,2)}function Iv(t,e){return $y(t.getFullYear()%1e4,e,4)}function Nv(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+$y(e/60|0,"0",2)+$y(e%60,"0",2)}function Dv(t,e){return $y(t.getUTCDate(),e,2)}function zv(t,e){return $y(t.getUTCHours(),e,2)}function Fv(t,e){return $y(t.getUTCHours()%12||12,e,2)}function jv(t,e){return $y(1+yy.count(Ny(t),t),e,3)}function Hv(t,e){return $y(t.getUTCMilliseconds(),e,3)}function Bv(t,e){return Hv(t,e)+"000"}function Xv(t,e){return $y(t.getUTCMonth()+1,e,2)}function Yv(t,e){return $y(t.getUTCMinutes(),e,2)}function Uv(t,e){return $y(t.getUTCSeconds(),e,2)}function qv(t){var e=t.getUTCDay();return 0===e?7:e}function Wv(t,e){return $y(my.count(Ny(t),t),e,2)}function Qv(t,e){var n=t.getUTCDay();return t=n>=4||0===n?Sy(t):Sy.ceil(t),$y(Sy.count(Ny(t),t)+(4===Ny(t).getUTCDay()),e,2)}function Kv(t){return t.getUTCDay()}function Zv(t,e){return $y(xy.count(Ny(t),t),e,2)}function $v(t,e){return $y(t.getUTCFullYear()%100,e,2)}function Jv(t,e){return $y(t.getUTCFullYear()%1e4,e,4)}function t_(){return"+0000"}function e_(){return"%"}function n_(t){return+t}function i_(t){return Math.floor(+t/1e3)}function r_(t){return By=Hy(t),Xy=By.format,Yy=By.parse,Uy=By.utcFormat,qy=By.utcParse,By}r_({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var a_=Date.prototype.toISOString?function(t){return t.toISOString()}:Uy("%Y-%m-%dT%H:%M:%S.%LZ");var o_=+new Date("2000-01-01T00:00:00.000Z")?function(t){var e=new Date(t);return isNaN(e)?null:e}:qy("%Y-%m-%dT%H:%M:%S.%LZ"),s_=1e3,u_=60*s_,c_=60*u_,l_=24*c_,f_=7*l_,d_=30*l_,h_=365*l_;function p_(t){return new Date(t)}function g_(t){return t instanceof Date?+t:+new Date(+t)}function y_(t,e,n,i,a,o,s,u,c){var l=Qp(Hp,Hp),f=l.invert,d=l.domain,h=c(".%L"),p=c(":%S"),g=c("%I:%M"),y=c("%I %p"),v=c("%a %d"),_=c("%b %d"),m=c("%B"),x=c("%Y"),b=[[s,1,s_],[s,5,5*s_],[s,15,15*s_],[s,30,30*s_],[o,1,u_],[o,5,5*u_],[o,15,15*u_],[o,30,30*u_],[a,1,c_],[a,3,3*c_],[a,6,6*c_],[a,12,12*c_],[i,1,l_],[i,2,2*l_],[n,1,f_],[e,1,d_],[e,3,3*d_],[t,1,h_]];function w(r){return(s(r)1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return Qm.h=360*t-100,Qm.s=1.5-1.5*e,Qm.l=.8-.9*e,Qm+""},Zm=Xe(),$m=Math.PI/3,Jm=2*Math.PI/3,tx=function(t){var e;return t=(.5-t)*Math.PI,Zm.r=255*(e=Math.sin(t))*e,Zm.g=255*(e=Math.sin(t+$m))*e,Zm.b=255*(e=Math.sin(t+Jm))*e,Zm+""},ex=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"};function nx(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}var ix=nx(O_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),rx=nx(O_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),ax=nx(O_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),ox=nx(O_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),sx=function(t){return function(){return t}},ux=Math.abs,cx=Math.atan2,lx=Math.cos,fx=Math.max,dx=Math.min,hx=Math.sin,px=Math.sqrt,gx=1e-12,yx=Math.PI,vx=yx/2,_x=2*yx;function mx(t){return t>=1?vx:t<=-1?-vx:Math.asin(t)}function xx(t){return t.innerRadius}function bx(t){return t.outerRadius}function wx(t){return t.startAngle}function Sx(t){return t.endAngle}function Ax(t){return t&&t.padAngle}function Tx(t,e,n,i,r,a,o){var s=t-n,u=e-i,c=(o?a:-a)/px(s*s+u*u),l=c*u,f=-c*s,d=t+l,h=e+f,p=n+l,g=i+f,y=(d+p)/2,v=(h+g)/2,_=p-d,m=g-h,x=_*_+m*m,b=r-a,w=d*g-p*h,S=(m<0?-1:1)*px(fx(0,b*b*x-w*w)),A=(w*m-_*S)/x,T=(-w*_-m*S)/x,P=(w*m+_*S)/x,C=(-w*_+m*S)/x,M=A-y,E=T-v,L=P-y,k=C-v;return M*M+E*E>L*L+k*k&&(A=P,T=C),{cx:A,cy:T,x01:-l,y01:-f,x11:A*(r/b-1),y11:T*(r/b-1)}}var Px=function(){var t=xx,e=bx,n=sx(0),i=null,r=wx,a=Sx,o=Ax,s=null;function u(){var u,c,l,f=+t.apply(this,arguments),d=+e.apply(this,arguments),h=r.apply(this,arguments)-vx,p=a.apply(this,arguments)-vx,g=ux(p-h),y=p>h;if(s||(s=u=Wa()),dgx)if(g>_x-gx)s.moveTo(d*lx(h),d*hx(h)),s.arc(0,0,d,h,p,!y),f>gx&&(s.moveTo(f*lx(p),f*hx(p)),s.arc(0,0,f,p,h,y));else{var v,_,m=h,x=p,b=h,w=p,S=g,A=g,T=o.apply(this,arguments)/2,P=T>gx&&(i?+i.apply(this,arguments):px(f*f+d*d)),C=dx(ux(d-f)/2,+n.apply(this,arguments)),M=C,E=C;if(P>gx){var L=mx(P/f*hx(T)),k=mx(P/d*hx(T));(S-=2*L)>gx?(b+=L*=y?1:-1,w-=L):(S=0,b=w=(h+p)/2),(A-=2*k)>gx?(m+=k*=y?1:-1,x-=k):(A=0,m=x=(h+p)/2)}var V=d*lx(m),O=d*hx(m),G=f*lx(w),R=f*hx(w);if(C>gx){var I,N=d*lx(x),D=d*hx(x),z=f*lx(b),F=f*hx(b);if(g1?0:l<-1?yx:Math.acos(l))/2),U=px(I[0]*I[0]+I[1]*I[1]);M=dx(C,(f-U)/(Y-1)),E=dx(C,(d-U)/(Y+1))}}A>gx?E>gx?(v=Tx(z,F,V,O,d,E,y),_=Tx(N,D,G,R,d,E,y),s.moveTo(v.cx+v.x01,v.cy+v.y01),Egx&&S>gx?M>gx?(v=Tx(G,R,N,D,f,-M,y),_=Tx(V,O,z,F,f,-M,y),s.lineTo(v.cx+v.x01,v.cy+v.y01),M=l;--f)s.point(y[f],v[f]);s.lineEnd(),s.areaEnd()}g&&(y[c]=+t(d,c,u),v[c]=+n(d,c,u),s.point(e?+e(d,c,u):y[c],i?+i(d,c,u):v[c]))}if(h)return s=null,h+""||null}function c(){return kx().defined(r).curve(o).context(a)}return u.x=function(n){return arguments.length?(t="function"==typeof n?n:sx(+n),e=null,u):t},u.x0=function(e){return arguments.length?(t="function"==typeof e?e:sx(+e),u):t},u.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:sx(+t),u):e},u.y=function(t){return arguments.length?(n="function"==typeof t?t:sx(+t),i=null,u):n},u.y0=function(t){return arguments.length?(n="function"==typeof t?t:sx(+t),u):n},u.y1=function(t){return arguments.length?(i=null==t?null:"function"==typeof t?t:sx(+t),u):i},u.lineX0=u.lineY0=function(){return c().x(t).y(n)},u.lineY1=function(){return c().x(t).y(i)},u.lineX1=function(){return c().x(e).y(n)},u.defined=function(t){return arguments.length?(r="function"==typeof t?t:sx(!!t),u):r},u.curve=function(t){return arguments.length?(o=t,null!=a&&(s=o(a)),u):o},u.context=function(t){return arguments.length?(null==t?a=s=null:s=o(a=t),u):a},u},Ox=function(t,e){return et?1:e>=t?0:NaN},Gx=function(t){return t},Rx=function(){var t=Gx,e=Ox,n=null,i=sx(0),r=sx(_x),a=sx(0);function o(o){var s,u,c,l,f,d=o.length,h=0,p=new Array(d),g=new Array(d),y=+i.apply(this,arguments),v=Math.min(_x,Math.max(-_x,r.apply(this,arguments)-y)),_=Math.min(Math.abs(v)/d,a.apply(this,arguments)),m=_*(v<0?-1:1);for(s=0;s0&&(h+=f);for(null!=e?p.sort(function(t,n){return e(g[t],g[n])}):null!=n&&p.sort(function(t,e){return n(o[t],o[e])}),s=0,c=h?(v-d*m)/h:0;s0?f*c:0)+m,g[u]={data:o[u],index:s,value:f,startAngle:y,endAngle:l,padAngle:_};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:sx(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:sx(+t),o):i},o.endAngle=function(t){return arguments.length?(r="function"==typeof t?t:sx(+t),o):r},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:sx(+t),o):a},o},Ix=Dx(Mx);function Nx(t){this._curve=t}function Dx(t){function e(e){return new Nx(t(e))}return e._curve=t,e}function zx(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Dx(t)):e()._curve},t}Nx.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var Fx=function(){return zx(kx().curve(Ix))},jx=function(){var t=Vx().curve(Ix),e=t.curve,n=t.lineX0,i=t.lineX1,r=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return zx(n())},delete t.lineX0,t.lineEndAngle=function(){return zx(i())},delete t.lineX1,t.lineInnerRadius=function(){return zx(r())},delete t.lineY0,t.lineOuterRadius=function(){return zx(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Dx(t)):e()._curve},t},Hx=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]},Bx=Array.prototype.slice;function Xx(t){return t.source}function Yx(t){return t.target}function Ux(t){var e=Xx,n=Yx,i=Ex,r=Lx,a=null;function o(){var o,s=Bx.call(arguments),u=e.apply(this,s),c=n.apply(this,s);if(a||(a=o=Wa()),t(a,+i.apply(this,(s[0]=u,s)),+r.apply(this,s),+i.apply(this,(s[0]=c,s)),+r.apply(this,s)),o)return a=null,o+""||null}return o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(t){return arguments.length?(n=t,o):n},o.x=function(t){return arguments.length?(i="function"==typeof t?t:sx(+t),o):i},o.y=function(t){return arguments.length?(r="function"==typeof t?t:sx(+t),o):r},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}function qx(t,e,n,i,r){t.moveTo(e,n),t.bezierCurveTo(e=(e+i)/2,n,e,r,i,r)}function Wx(t,e,n,i,r){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+r)/2,i,n,i,r)}function Qx(t,e,n,i,r){var a=Hx(e,n),o=Hx(e,n=(n+r)/2),s=Hx(i,n),u=Hx(i,r);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],u[0],u[1])}function Kx(){return Ux(qx)}function Zx(){return Ux(Wx)}function $x(){var t=Ux(Qx);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}var Jx={draw:function(t,e){var n=Math.sqrt(e/yx);t.moveTo(n,0),t.arc(0,0,n,0,_x)}},tb={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}},eb=Math.sqrt(1/3),nb=2*eb,ib={draw:function(t,e){var n=Math.sqrt(e/nb),i=n*eb;t.moveTo(0,-n),t.lineTo(i,0),t.lineTo(0,n),t.lineTo(-i,0),t.closePath()}},rb=Math.sin(yx/10)/Math.sin(7*yx/10),ab=Math.sin(_x/10)*rb,ob=-Math.cos(_x/10)*rb,sb={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),i=ab*n,r=ob*n;t.moveTo(0,-n),t.lineTo(i,r);for(var a=1;a<5;++a){var o=_x*a/5,s=Math.cos(o),u=Math.sin(o);t.lineTo(u*n,-s*n),t.lineTo(s*i-u*r,u*i+s*r)}t.closePath()}},ub={draw:function(t,e){var n=Math.sqrt(e),i=-n/2;t.rect(i,i,n,n)}},cb=Math.sqrt(3),lb={draw:function(t,e){var n=-Math.sqrt(e/(3*cb));t.moveTo(0,2*n),t.lineTo(-cb*n,-n),t.lineTo(cb*n,-n),t.closePath()}},fb=Math.sqrt(3)/2,db=1/Math.sqrt(12),hb=3*(db/2+1),pb={draw:function(t,e){var n=Math.sqrt(e/hb),i=n/2,r=n*db,a=i,o=n*db+n,s=-a,u=o;t.moveTo(i,r),t.lineTo(a,o),t.lineTo(s,u),t.lineTo(-.5*i-fb*r,fb*i+-.5*r),t.lineTo(-.5*a-fb*o,fb*a+-.5*o),t.lineTo(-.5*s-fb*u,fb*s+-.5*u),t.lineTo(-.5*i+fb*r,-.5*r-fb*i),t.lineTo(-.5*a+fb*o,-.5*o-fb*a),t.lineTo(-.5*s+fb*u,-.5*u-fb*s),t.closePath()}},gb=[Jx,tb,ib,ub,sb,lb,pb],yb=function(){var t=sx(Jx),e=sx(64),n=null;function i(){var i;if(n||(n=i=Wa()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),i)return n=null,i+""||null}return i.type=function(e){return arguments.length?(t="function"==typeof e?e:sx(e),i):t},i.size=function(t){return arguments.length?(e="function"==typeof t?t:sx(+t),i):e},i.context=function(t){return arguments.length?(n=null==t?null:t,i):n},i},vb=function(){};function _b(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function mb(t){this._context=t}mb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:_b(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:_b(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var xb=function(t){return new mb(t)};function bb(t){this._context=t}bb.prototype={areaStart:vb,areaEnd:vb,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:_b(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var wb=function(t){return new bb(t)};function Sb(t){this._context=t}Sb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,i):this._context.moveTo(n,i);break;case 3:this._point=4;default:_b(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var Ab=function(t){return new Sb(t)};function Tb(t,e){this._basis=new mb(t),this._beta=e}Tb.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var i,r=t[0],a=e[0],o=t[n]-r,s=e[n]-a,u=-1;++u<=n;)i=u/n,this._basis.point(this._beta*t[u]+(1-this._beta)*(r+i*o),this._beta*e[u]+(1-this._beta)*(a+i*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var Pb=function t(e){function n(t){return 1===e?new mb(t):new Tb(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function Cb(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function Mb(t,e){this._context=t,this._k=(1-e)/6}Mb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Cb(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Cb(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Eb=function t(e){function n(t){return new Mb(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Lb(t,e){this._context=t,this._k=(1-e)/6}Lb.prototype={areaStart:vb,areaEnd:vb,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Cb(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kb=function t(e){function n(t){return new Lb(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Vb(t,e){this._context=t,this._k=(1-e)/6}Vb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Cb(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ob=function t(e){function n(t){return new Vb(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Gb(t,e,n){var i=t._x1,r=t._y1,a=t._x2,o=t._y2;if(t._l01_a>gx){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,r=(r*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>gx){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/l,o=(o*c+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(i,r,a,o,t._x2,t._y2)}function Rb(t,e){this._context=t,this._alpha=e}Rb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Gb(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ib=function t(e){function n(t){return e?new Rb(t,e):new Mb(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Nb(t,e){this._context=t,this._alpha=e}Nb.prototype={areaStart:vb,areaEnd:vb,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Gb(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Db=function t(e){function n(t){return e?new Nb(t,e):new Lb(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function zb(t,e){this._context=t,this._alpha=e}zb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gb(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Fb=function t(e){function n(t){return e?new zb(t,e):new Vb(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function jb(t){this._context=t}jb.prototype={areaStart:vb,areaEnd:vb,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};var Hb=function(t){return new jb(t)};function Bb(t){return t<0?-1:1}function Xb(t,e,n){var i=t._x1-t._x0,r=e-t._x1,a=(t._y1-t._y0)/(i||r<0&&-0),o=(n-t._y1)/(r||i<0&&-0),s=(a*r+o*i)/(i+r);return(Bb(a)+Bb(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Yb(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Ub(t,e,n){var i=t._x0,r=t._y0,a=t._x1,o=t._y1,s=(a-i)/3;t._context.bezierCurveTo(i+s,r+s*e,a-s,o-s*n,a,o)}function qb(t){this._context=t}function Wb(t){this._context=new Qb(t)}function Qb(t){this._context=t}function Kb(t){return new qb(t)}function Zb(t){return new Wb(t)}function $b(t){this._context=t}function Jb(t){var e,n,i=t.length-1,r=new Array(i),a=new Array(i),o=new Array(i);for(r[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)r[e]=(o[e]-r[e+1])/a[e];for(a[i-1]=(t[i]+r[i-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var nw=function(t){return new ew(t,.5)};function iw(t){return new ew(t,0)}function rw(t){return new ew(t,1)}var aw=function(t,e){if((r=t.length)>1)for(var n,i,r,a=1,o=t[e[0]],s=o.length;a=0;)n[e]=e;return n};function sw(t,e){return t[e]}var uw=function(){var t=sx([]),e=ow,n=aw,i=sw;function r(r){var a,o,s=t.apply(this,arguments),u=r.length,c=s.length,l=new Array(c);for(a=0;a0){for(var n,i,r,a=0,o=t[0].length;a0)for(var n,i,r,a,o,s,u=0,c=t[e[0]].length;u=0?(i[0]=a,i[1]=a+=r):r<0?(i[1]=o,i[0]=o+=r):i[0]=a},fw=function(t,e){if((n=t.length)>0){for(var n,i=0,r=t[e[0]],a=r.length;i0&&(i=(n=t[e[0]]).length)>0){for(var n,i,r,a=0,o=1;oa&&(a=e,i=n);return i}var gw=function(t){var e=t.map(yw);return ow(t).sort(function(t,n){return e[t]-e[n]})};function yw(t){for(var e,n=0,i=-1,r=t.length;++i0)){if(a/=d,d<0){if(a0){if(a>f)return;a>l&&(l=a)}if(a=i-u,d||!(a<0)){if(a/=d,d<0){if(a>f)return;a>l&&(l=a)}else if(d>0){if(a0)){if(a/=h,h<0){if(a0){if(a>f)return;a>l&&(l=a)}if(a=r-c,h||!(a<0)){if(a/=h,h<0){if(a>f)return;a>l&&(l=a)}else if(h>0){if(a0||f<1)||(l>0&&(t[0]=[u+l*d,c+l*h]),f<1&&(t[1]=[u+f*d,c+f*h]),!0)}}}}}function Ow(t,e,n,i,r){var a=t[1];if(a)return!0;var o,s,u=t[0],c=t.left,l=t.right,f=c[0],d=c[1],h=l[0],p=l[1],g=(f+h)/2,y=(d+p)/2;if(p===d){if(g=i)return;if(f>h){if(u){if(u[1]>=r)return}else u=[g,n];a=[g,r]}else{if(u){if(u[1]1)if(f>h){if(u){if(u[1]>=r)return}else u=[(n-s)/o,n];a=[(r-s)/o,r]}else{if(u){if(u[1]=i)return}else u=[e,o*e+s];a=[i,o*i+s]}else{if(u){if(u[0]=-eS)){var h=u*u+c*c,p=l*l+f*f,g=(f*h-c*p)/d,y=(u*p-l*h)/d,v=Dw.pop()||new zw;v.arc=t,v.site=r,v.x=g+o,v.y=(v.cy=y+s)+Math.sqrt(g*g+y*y),t.circle=v;for(var _=null,m=$w._;m;)if(v.ytS)s=s.L;else{if(!((r=a-Qw(s,o))>tS)){i>-tS?(e=s.P,n=s):r>-tS?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}!function(t){Zw[t.index]={site:t,halfedges:[]}}(t);var u=Xw(t);if(Kw.insert(e,u),e||n){if(e===n)return jw(e),n=Xw(e.site),Kw.insert(u,n),u.edge=n.edge=Ew(e.site,u.site),Fw(e),void Fw(n);if(n){jw(e),jw(n);var c=e.site,l=c[0],f=c[1],d=t[0]-l,h=t[1]-f,p=n.site,g=p[0]-l,y=p[1]-f,v=2*(d*y-h*g),_=d*d+h*h,m=g*g+y*y,x=[(y*_-h*m)/v+l,(d*m-g*_)/v+f];kw(n.edge,c,p,x),u.edge=Ew(c,t,null,x),n.edge=Ew(t,p,null,x),Fw(e),Fw(n)}else u.edge=Ew(e.site,u.site)}}function Ww(t,e){var n=t.site,i=n[0],r=n[1],a=r-e;if(!a)return i;var o=t.P;if(!o)return-1/0;var s=(n=o.site)[0],u=n[1],c=u-e;if(!c)return s;var l=s-i,f=1/a-1/c,d=l/c;return f?(-d+Math.sqrt(d*d-2*f*(l*l/(-2*c)-u+c/2+r-a/2)))/f+i:(i+s)/2}function Qw(t,e){var n=t.N;if(n)return Ww(n,e);var i=t.site;return i[1]===e?i[0]:1/0}var Kw,Zw,$w,Jw,tS=1e-6,eS=1e-12;function nS(t,e){return e[1]-t[1]||e[0]-t[0]}function iS(t,e){var n,i,r,a=t.sort(nS).pop();for(Jw=[],Zw=new Array(t.length),Kw=new Mw,$w=new Mw;;)if(r=Nw,a&&(!r||a[1]tS||Math.abs(r[0][1]-r[1][1])>tS)||delete Jw[a]}(o,s,u,c),function(t,e,n,i){var r,a,o,s,u,c,l,f,d,h,p,g,y=Zw.length,v=!0;for(r=0;rtS||Math.abs(g-d)>tS)&&(u.splice(s,0,Jw.push(Lw(o,h,Math.abs(p-t)tS?[t,Math.abs(f-t)tS?[Math.abs(d-i)tS?[n,Math.abs(f-n)tS?[Math.abs(d-e)=s)return null;var u=t-r.site[0],c=e-r.site[1],l=u*u+c*c;do{r=a.cells[i=o],o=null,r.halfedges.forEach(function(n){var i=a.edges[n],s=i.left;if(s!==r.site&&s||(s=i.right)){var u=t-s[0],c=e-s[1],f=u*u+c*c;fi?(i+r)/2:Math.min(0,i)||Math.max(0,r),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}var _S=function(){var t,e,n=dS,i=hS,r=vS,a=gS,o=yS,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],c=250,l=di,f=dt("start","zoom","end"),d=500,h=150,p=0;function g(t){t.property("__zoom",pS).on("wheel.zoom",w).on("mousedown.zoom",S).on("dblclick.zoom",A).filter(o).on("touchstart.zoom",T).on("touchmove.zoom",P).on("touchend.zoom touchcancel.zoom",C).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new sS(e,t.x,t.y)}function v(t,e,n){var i=e[0]-n[0]*t.k,r=e[1]-n[1]*t.k;return i===t.x&&r===t.y?t:new sS(t.k,i,r)}function _(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function m(t,e,n){t.on("start.zoom",function(){x(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){x(this,arguments).end()}).tween("zoom",function(){var t=arguments,r=x(this,t),a=i.apply(this,t),o=null==n?_(a):"function"==typeof n?n.apply(this,t):n,s=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),u=this.__zoom,c="function"==typeof e?e.apply(this,t):e,f=l(u.invert(o).concat(s/u.k),c.invert(o).concat(s/c.k));return function(t){if(1===t)t=c;else{var e=f(t),n=s/e[2];t=new sS(n,o[0]-e[0]*n,o[1]-e[1]*n)}r.zoom(null,t)}})}function x(t,e,n){return!n&&t.__zooming||new b(t,e)}function b(t,e){this.that=t,this.args=e,this.active=0,this.extent=i.apply(t,e),this.taps=0}function w(){if(n.apply(this,arguments)){var t=x(this,arguments),e=this.__zoom,i=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,a.apply(this,arguments)))),o=ue(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=e.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(e.k===i)return;t.mouse=[o,e.invert(o)],ar(this),t.start()}fS(),t.wheel=setTimeout(function(){t.wheel=null,t.end()},h),t.zoom("mouse",r(v(y(e,i),t.mouse[0],t.mouse[1]),t.extent,u))}}function S(){if(!e&&n.apply(this,arguments)){var t=x(this,arguments,!0),i=ee(Xt.view).on("mousemove.zoom",function(){if(fS(),!t.moved){var e=Xt.clientX-o,n=Xt.clientY-s;t.moved=e*e+n*n>p}t.zoom("mouse",r(v(t.that.__zoom,t.mouse[0]=ue(t.that),t.mouse[1]),t.extent,u))},!0).on("mouseup.zoom",function(){i.on("mousemove.zoom mouseup.zoom",null),ge(Xt.view,t.moved),fS(),t.end()},!0),a=ue(this),o=Xt.clientX,s=Xt.clientY;pe(Xt.view),lS(),t.mouse=[a,this.__zoom.invert(a)],ar(this),t.start()}}function A(){if(n.apply(this,arguments)){var t=this.__zoom,e=ue(this),a=t.invert(e),o=t.k*(Xt.shiftKey?.5:2),s=r(v(y(t,o),e,a),i.apply(this,arguments),u);fS(),c>0?ee(this).transition().duration(c).call(m,s,e):ee(this).call(g.transform,s)}}function T(){if(n.apply(this,arguments)){var e,i,r,a,o=Xt.touches,s=o.length,u=x(this,arguments,Xt.changedTouches.length===s);for(lS(),i=0;i=1e15)return e;return t>=1||t<=-1?(t<0&&(t=-t,n="-"),n+function t(e,n){var e=String(e);var r=e.split(".");if(r.length>1){e=r[0];var a=r[1];2==e.length&&a.length>0?a.length>0?e=e+"."+a.charAt(0):e+="0":1==e.length&&a.length>0&&(e=e+"."+a.charAt(0),a.length>1?e+=a.charAt(1):e+="0")}var o=e.length;e.split(".").length>1&&o--;return o<=3?String(e)+i[n]:t(Number(e)/1e3,n+1)}(t,0)):t.toPrecision(3)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.escapeHtml=function(t){var e,n=""+t,r=i.exec(n);if(!r)return n;var a="",o=0,s=0;for(o=r.index;o]/},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.extend=function(t){for(var e=1;ee&&(a.pop(),c.text(a.join(" ")),a=[r],c=t.append("tspan").attr("x",s).attr("y",u).attr("dy",1.1*++o+0+"em").text(r))})};var i=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(2))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.appendColumn=s,e.appendRow=u;var i,r=n(9),a=(i=r)&&i.__esModule?i:{default:i},o=n(0);function s(t,e){var n=this,i=(Array.prototype.slice.call(arguments,2),void 0!==t?t:null);return"function"==typeof e?(n.matrix[0].push(i),(0,o.each)(n.matrix,function(t,i){var r=void 0;i>0&&(void 0===(r=e.call(n,t,i))&&(r=null),n.matrix[i].push(r))})):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix.length-1?e=e.concat((0,a.default)(n.matrix.length-1-e.length)):(0,o.each)(e,function(t,i){n.matrix.length-10&&(a=n.selectColumn(i),void 0===(o=e.call(n,a,i))&&(o=null),r.push(o))}),n.matrix.push(r)):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix[0].length-1?e=e.concat((0,a.default)(n.matrix[0].length-1-e.length)):(0,o.each)(e,function(t,i){n.matrix[0].length-10&&t(e[r],n[r],i)})}(i.prototype,this,this)}function r(t,e){this.component=t,this.params=e||{},this.d3=t.d3,this.scale=this.d3.scaleLinear(),this.range,this.orient="bottom",this.innerTickSize=6,this.outerTickSize=this.params.withOuterTick?6:0,this.tickPadding=3,this.tickValues=null,this.tickFormat,this.tickArguments,this.tickOffset=0,this.tickCulling=!0,this.tickCentered,this.tickTextCharSize,this.tickTextRotate=this.params.tickTextRotate,this.tickLength,this.axis=this.generateAxis()}r.prototype.axisX=function(t,e,n){t.attr("transform",function(t){return"translate("+Math.ceil(e(t)+n)+", 0)"})},r.prototype.axisY=function(t,e){t.attr("transform",function(t){return"translate(0,"+Math.ceil(e(t))+")"})},r.prototype.scaleExtent=function(t){var e=t[0],n=t[t.length-1];return e0&&i[0]>0&&i.unshift(i[0]-(i[1]-i[0])),i},r.prototype.copyScale=function(){var t,e=this.scale.copy();return this.params.isCategory&&(t=this.scale.domain(),e.domain([t[0],t[1]-1])),e},r.prototype.textFormatted=function(t){var e=this.tickFormat?this.tickFormat(t):t;return void 0!==e?e:""},r.prototype.updateRange=function(){return this.range=this.scale.rangeExtent?this.scale.rangeExtent():this.scaleExtent(this.scale.range()),this.range},r.prototype.updateTickTextCharSize=function(t){var e=this;if(e.tickTextCharSize)return e.tickTextCharSize;var n={h:11.5,w:5.5};return t.select("text").text(function(t){return e.textFormatted(t)}).each(function(t){var i=this.getBoundingClientRect(),r=e.textFormatted(t),a=i.height,o=r?i.width/r.length:void 0;a&&o&&(n.h=a,n.w=o)}).text(""),e.tickTextCharSize=n,n},r.prototype.isVertical=function(){return"left"===this.orient||"right"===this.orient},r.prototype.tspanData=function(t,e,n){var i=this.params.tickMultiline?this.splitTickText(t,n):[].concat(this.textFormatted(t));return this.params.tickMultiline&&this.params.tickMultilineMax>0&&(i=this.ellipsify(i,this.params.tickMultilineMax)),i.map(function(t){return{index:e,splitted:t,length:i.length}})},r.prototype.splitTickText=function(t,e){var n,i,r,a=this,o=a.textFormatted(t),s=a.params.tickWidth;return"[object Array]"===Object.prototype.toString.call(o)?o:((!s||s<=0)&&(s=a.isVertical()?95:a.params.isCategory?Math.ceil(e(1)-e(0))-12:110),function t(e,o){i=void 0;for(var u=1;u=0;r--){var a=n[r].length;if(n[r]=n[r].substr(0,a-i).padEnd(a,"."),(i-=a)<=0)break}return n},r.prototype.updateTickLength=function(){this.tickLength=Math.max(this.innerTickSize,0)+this.tickPadding},r.prototype.lineY2=function(t){var e=this.scale(t)+(this.tickCentered?0:this.tickOffset);return this.range[0]0?1:-1):this.tickLength},r.prototype.textTransform=function(){var t=this.tickTextRotate;return t?"rotate("+t+")":""},r.prototype.textTextAnchor=function(){var t=this.tickTextRotate;return t?t>0?"start":"end":"middle"},r.prototype.tspanDx=function(){var t=this.tickTextRotate;return t?8*Math.sin(Math.PI*(t/180)):0},r.prototype.tspanDy=function(t,e){var n=this.tickTextCharSize.h;return 0===e&&(n=this.isVertical()?-((t.length-1)*(this.tickTextCharSize.h/2)-3):".71em"),n},r.prototype.generateAxis=function(){var t=this,e=t.d3,n=t.params;function i(r,a){var o;return r.each(function(){var r,s,u,c=i.g=e.select(this),l=this.__chart__||t.scale,f=this.__chart__=t.copyScale(),d=t.tickValues?t.tickValues:t.generateTicks(f),h=c.selectAll(".tick").data(d,f),p=h.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),g=h.exit().remove(),y=h.merge(p);n.isCategory?(t.tickOffset=Math.ceil((f(1)-f(0))/2),s=t.tickCentered?0:t.tickOffset,u=t.tickCentered?t.tickOffset:0):t.tickOffset=s=0,t.updateRange(),t.updateTickLength(),t.updateTickTextCharSize(c.select(".tick"));var v=y.select("line").merge(p.append("line")),_=y.select("text").merge(p.append("text")),m=y.selectAll("text").selectAll("tspan").data(function(e,n){return t.tspanData(e,n,f)}),x=m.enter().append("tspan"),b=x.merge(m).text(function(t){return t.splitted});m.exit().remove();var w=c.selectAll(".domain").data([0]),S=w.enter().append("path").merge(w).attr("class","domain");switch(t.orient){case"bottom":r=t.axisX,v.attr("x1",s).attr("x2",s).attr("y2",function(e,n){return t.lineY2(e,n)}),_.attr("x",0).attr("y",function(e,n){return t.textY(e,n)}).attr("transform",function(e,n){return t.textTransform(e,n)}).style("text-anchor",function(e,n){return t.textTextAnchor(e,n)}),b.attr("x",0).attr("dy",function(e,n){return t.tspanDy(e,n)}).attr("dx",function(e,n){return t.tspanDx(e,n)}),S.attr("d","M"+t.range[0]+","+t.outerTickSize+"V0H"+t.range[1]+"V"+t.outerTickSize);break;case"top":r=t.axisX,v.attr("x1",s).attr("x2",s).attr("y2",function(e,n){return-1*t.lineY2(e,n)}),_.attr("x",0).attr("y",function(e,i){return-1*t.textY(e,i)-(n.isCategory?2:t.tickLength-2)}).attr("transform",function(e,n){return t.textTransform(e,n)}).style("text-anchor",function(e,n){return t.textTextAnchor(e,n)}),b.attr("x",0).attr("dy",function(e,n){return t.tspanDy(e,n)}).attr("dx",function(e,n){return t.tspanDx(e,n)}),S.attr("d","M"+t.range[0]+","+-t.outerTickSize+"V0H"+t.range[1]+"V"+-t.outerTickSize);break;case"left":r=t.axisY,v.attr("x2",-t.innerTickSize).attr("y1",u).attr("y2",u),_.attr("x",-t.tickLength).attr("y",t.tickOffset).style("text-anchor","end"),b.attr("x",-t.tickLength).attr("dy",function(e,n){return t.tspanDy(e,n)}),S.attr("d","M"+-t.outerTickSize+","+t.range[0]+"H0V"+t.range[1]+"H"+-t.outerTickSize);break;case"right":r=t.axisY,v.attr("x2",t.innerTickSize).attr("y1",u).attr("y2",u),_.attr("x",t.tickLength).attr("y",t.tickOffset).style("text-anchor","start"),b.attr("x",t.tickLength).attr("dy",function(e,n){return t.tspanDy(e,n)}),S.attr("d","M"+t.outerTickSize+","+t.range[0]+"H0V"+t.range[1]+"H"+t.outerTickSize)}if(f.rangeBand){var A=f,T=A.rangeBand()/2;l=f=function(t){return A(t)+T}}else l.rangeBand?l=f:g.call(r,f,t.tickOffset);p.call(r,l,t.tickOffset),o=(a?y.transition(a):y).style("opacity",1).call(r,f,t.tickOffset)}),o}return i.scale=function(e){return arguments.length?(t.scale=e,i):t.scale},i.orient=function(e){return arguments.length?(t.orient=e in{top:1,right:1,bottom:1,left:1}?e+"":"bottom",i):t.orient},i.tickFormat=function(e){return arguments.length?(t.tickFormat=e,i):t.tickFormat},i.tickCentered=function(e){return arguments.length?(t.tickCentered=e,i):t.tickCentered},i.tickOffset=function(){return t.tickOffset},i.tickInterval=function(){var e,r;return n.isCategory?e=2*t.tickOffset:(r=i.g.select("path.domain").node().getTotalLength()-2*t.outerTickSize,e=r/i.g.selectAll("line").size()),e===1/0?0:e},i.ticks=function(){return arguments.length?(t.tickArguments=arguments,i):t.tickArguments},i.tickCulling=function(e){return arguments.length?(t.tickCulling=e,i):t.tickCulling},i.tickValues=function(e){if("function"==typeof e)t.tickValues=function(){return e(t.scale.domain())};else{if(!arguments.length)return t.tickValues;t.tickValues=e}return i},i};var a={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",dragZoom:"c3-drag-zoom",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",title:"c3-title",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcLabelLine:"c3-arc-label-line",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",colorScale:"c3-colorscale",stanfordElements:"c3-stanford-elements",stanfordLine:"c3-stanford-line",stanfordLines:"c3-stanford-lines",stanfordRegion:"c3-stanford-region",stanfordRegions:"c3-stanford-regions",stanfordText:"c3-stanford-text",stanfordTexts:"c3-stanford-texts",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"},o=function(t){return Math.ceil(t)+.5},s=function(t){return 10*Math.ceil(t/10)},u=function(t){return t[1]-t[0]},c=function(t,e,n){return d(t[e])?t[e]:n},l=function(t){var e=t.getBoundingClientRect(),n=[t.pathSegList.getItem(0),t.pathSegList.getItem(1)],i=n[0].x,r=Math.min(n[0].y,n[1].y);return{x:i,y:r,width:e.width,height:e.height}},f=function(t){return Array.isArray(t)},d=function(t){return void 0!==t},h=function(e){return null==e||g(e)&&0===e.length||"object"===t(e)&&0===Object.keys(e).length},p=function(t){return"function"==typeof t},g=function(t){return"string"==typeof t},y=function(t){return void 0===t},v=function(t){return t||0===t},_=function(t){return!h(t)},m=function(t){return"string"==typeof t?t.replace(//g,">"):t},x=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.owner=e,this.d3=e.d3,this.internal=r};x.prototype.init=function(){var t=this.owner,e=t.config,n=t.main;t.axes.x=n.append("g").attr("class",a.axis+" "+a.axisX).attr("clip-path",e.axis_x_inner?"":t.clipPathForXAxis).attr("transform",t.getTranslate("x")).style("visibility",e.axis_x_show?"visible":"hidden"),t.axes.x.append("text").attr("class",a.axisXLabel).attr("transform",e.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),t.axes.y=n.append("g").attr("class",a.axis+" "+a.axisY).attr("clip-path",e.axis_y_inner?"":t.clipPathForYAxis).attr("transform",t.getTranslate("y")).style("visibility",e.axis_y_show?"visible":"hidden"),t.axes.y.append("text").attr("class",a.axisYLabel).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),t.axes.y2=n.append("g").attr("class",a.axis+" "+a.axisY2).attr("transform",t.getTranslate("y2")).style("visibility",e.axis_y2_show?"visible":"hidden"),t.axes.y2.append("text").attr("class",a.axisY2Label).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},x.prototype.getXAxis=function(t,e,n,i,r,a,o){var s=this.owner,u=s.config,c={isCategory:s.isCategorized(),withOuterTick:r,tickMultiline:u.axis_x_tick_multiline,tickMultilineMax:u.axis_x_tick_multiline?Number(u.axis_x_tick_multilineMax):0,tickWidth:u.axis_x_tick_width,tickTextRotate:o?0:u.axis_x_tick_rotate,withoutTransition:a},l=new this.internal(this,c).axis.scale(t).orient(e);return s.isTimeSeries()&&i&&"function"!=typeof i&&(i=i.map(function(t){return s.parseDate(t)})),l.tickFormat(n).tickValues(i),s.isCategorized()&&(l.tickCentered(u.axis_x_tick_centered),h(u.axis_x_tick_culling)&&(u.axis_x_tick_culling=!1)),l},x.prototype.updateXAxisTickValues=function(t,e){var n,i=this.owner,r=i.config;return(r.axis_x_tick_fit||r.axis_x_tick_count)&&(n=this.generateTickValues(i.mapTargetsToUniqueXs(t),r.axis_x_tick_count,i.isTimeSeries())),e?e.tickValues(n):(i.xAxis.tickValues(n),i.subXAxis.tickValues(n)),n},x.prototype.getYAxis=function(t,e,n,i,r,a,o){var s=this.owner,u=s.config,c={withOuterTick:r,withoutTransition:a,tickTextRotate:o?0:u.axis_y_tick_rotate},l=new this.internal(this,c).axis.scale(t).orient(e).tickFormat(n);return s.isTimeSeriesY()?l.ticks(u.axis_y_tick_time_type,u.axis_y_tick_time_interval):l.tickValues(i),l},x.prototype.getId=function(t){var e=this.owner.config;return t in e.data_axes?e.data_axes[t]:"y"},x.prototype.getXAxisTickFormat=function(){var t=this.owner,e=t.config,n=t.isTimeSeries()?t.defaultAxisTimeFormat:t.isCategorized()?t.categoryName:function(t){return t};return e.axis_x_tick_format&&(p(e.axis_x_tick_format)?n=e.axis_x_tick_format:t.isTimeSeries()&&(n=function(n){return n?t.axisTimeFormat(e.axis_x_tick_format)(n):""})),p(n)?function(e){return n.call(t,e)}:n},x.prototype.getTickValues=function(t,e){return t||(e?e.tickValues():void 0)},x.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},x.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},x.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},x.prototype.getLabelOptionByAxisId=function(t){var e,n=this.owner,i=n.config;return"y"===t?e=i.axis_y_label:"y2"===t?e=i.axis_y2_label:"x"===t&&(e=i.axis_x_label),e},x.prototype.getLabelText=function(t){var e=this.getLabelOptionByAxisId(t);return g(e)?e:e?e.text:null},x.prototype.setLabelText=function(t,e){var n=this.owner,i=n.config,r=this.getLabelOptionByAxisId(t);g(r)?"y"===t?i.axis_y_label=e:"y2"===t?i.axis_y2_label=e:"x"===t&&(i.axis_x_label=e):r&&(r.text=e)},x.prototype.getLabelPosition=function(e,n){var i=this.getLabelOptionByAxisId(e),r=i&&"object"===t(i)&&i.position?i.position:n;return{isInner:r.indexOf("inner")>=0,isOuter:r.indexOf("outer")>=0,isLeft:r.indexOf("left")>=0,isCenter:r.indexOf("center")>=0,isRight:r.indexOf("right")>=0,isTop:r.indexOf("top")>=0,isMiddle:r.indexOf("middle")>=0,isBottom:r.indexOf("bottom")>=0}},x.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},x.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},x.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},x.prototype.getLabelPositionById=function(t){return"y2"===t?this.getY2AxisLabelPosition():"y"===t?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},x.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},x.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},x.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},x.prototype.xForAxisLabel=function(t,e){var n=this.owner;return t?e.isLeft?0:e.isCenter?n.width/2:n.width:e.isBottom?-n.height:e.isMiddle?-n.height/2:0},x.prototype.dxForAxisLabel=function(t,e){return t?e.isLeft?"0.5em":e.isRight?"-0.5em":"0":e.isTop?"-0.5em":e.isBottom?"0.5em":"0"},x.prototype.textAnchorForAxisLabel=function(t,e){return t?e.isLeft?"start":e.isCenter?"middle":"end":e.isBottom?"start":e.isMiddle?"middle":"end"},x.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},x.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},x.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},x.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},x.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},x.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},x.prototype.dyForXAxisLabel=function(){var t=this.owner,e=t.config,n=this.getXAxisLabelPosition();return e.axis_rotated?n.isInner?"1.2em":-25-(t.config.axis_x_inner?0:this.getMaxTickWidth("x")):n.isInner?"-0.5em":e.axis_x_height?e.axis_x_height-10:"3em"},x.prototype.dyForYAxisLabel=function(){var t=this.owner,e=this.getYAxisLabelPosition();return t.config.axis_rotated?e.isInner?"-0.5em":"3em":e.isInner?"1.2em":-10-(t.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},x.prototype.dyForY2AxisLabel=function(){var t=this.owner,e=this.getY2AxisLabelPosition();return t.config.axis_rotated?e.isInner?"1.2em":"-2.2em":e.isInner?"-0.5em":15+(t.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},x.prototype.textAnchorForXAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(!t.config.axis_rotated,this.getXAxisLabelPosition())},x.prototype.textAnchorForYAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getYAxisLabelPosition())},x.prototype.textAnchorForY2AxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getY2AxisLabelPosition())},x.prototype.getMaxTickWidth=function(t,e){var n,i,r,a,o=this.owner,s=o.config,u=0;return e&&o.currentMaxTickWidths[t]?o.currentMaxTickWidths[t]:(o.svg&&(n=o.filterTargetsToShow(o.data.targets),"y"===t?(i=o.y.copy().domain(o.getYDomain(n,"y")),r=this.getYAxis(i,o.yOrient,s.axis_y_tick_format,o.yAxisTickValues,!1,!0,!0)):"y2"===t?(i=o.y2.copy().domain(o.getYDomain(n,"y2")),r=this.getYAxis(i,o.y2Orient,s.axis_y2_tick_format,o.y2AxisTickValues,!1,!0,!0)):(i=o.x.copy().domain(o.getXDomain(n)),r=this.getXAxis(i,o.xOrient,o.xAxisTickFormat,o.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(n,r)),(a=o.d3.select("body").append("div").classed("c3",!0)).append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0).append("g").call(r).each(function(){o.d3.select(this).selectAll("text").each(function(){var t=this.getBoundingClientRect();u2){for(o=i-2,r=t[0],a=t[t.length-1],s=(a-r)/(o+1),l=[r],u=0;u=0&&N.select(this).style("display",e%k?"none":"block")})}else R.svg.selectAll("."+a.axisX+" .tick text").style("display","block");v=R.generateDrawArea?R.generateDrawArea(z,!1):void 0,_=R.generateDrawBar?R.generateDrawBar(F):void 0,m=R.generateDrawLine?R.generateDrawLine(j,!1):void 0,x=R.generateXYForText(z,F,j,!0),b=R.generateXYForText(z,F,j,!1),R.updateCircleY(),O=(R.config.axis_rotated?R.circleY:R.circleX).bind(R),G=(R.config.axis_rotated?R.circleX:R.circleY).bind(R),n&&(R.subY.domain(R.getYDomain(B,"y")),R.subY2.domain(R.getYDomain(B,"y2"))),R.updateXgridFocus(),I.select("text."+a.text+"."+a.empty).attr("x",R.width/2).attr("y",R.height/2).text(D.data_empty_label_text).transition().style("opacity",B.length?0:1),p&&R.redrawEventRect(),R.updateGrid(w),R.updateStanfordElements(w),R.updateRegion(w),R.updateBar(S),R.updateLine(S),R.updateArea(S),R.updateCircle(O,G),R.hasDataLabel()&&R.updateText(x,b,S),R.redrawTitle&&R.redrawTitle(),R.redrawArc&&R.redrawArc(w,S,u),R.redrawSubchart&&R.redrawSubchart(i,e,w,S,z,F,j),R.isStanfordGraphType()&&R.drawColorScale(),I.selectAll("."+a.selectedCircles).filter(R.isBarType.bind(R)).selectAll("circle").remove(),t.flow&&(C=R.generateFlow({targets:B,flow:t.flow,duration:t.flow.duration,drawBar:_,drawLine:m,drawArea:v,cx:O,cy:G,xv:X,xForText:x,yForText:b})),R.isTabVisible()&&(w?(M=N.transition().duration(w),T=[],[R.redrawBar(_,!0,M),R.redrawLine(m,!0,M),R.redrawArea(v,!0,M),R.redrawCircle(O,G,!0,M),R.redrawText(x,b,t.flow,!0,M),R.redrawRegion(!0,M),R.redrawGrid(!0,M)].forEach(function(t){t.forEach(function(t){T.push(t)})}),P=R.generateWait(),T.forEach(function(t){P.add(t)}),P(function(){C&&C(),D.onrendered&&D.onrendered.call(R)})):(R.redrawBar(_),R.redrawLine(m),R.redrawArea(v),R.redrawCircle(O,G),R.redrawText(x,b,t.flow),R.redrawRegion(),R.redrawGrid(),C&&C(),D.onrendered&&D.onrendered.call(R))),R.mapToIds(R.data.targets).forEach(function(t){R.withoutFadeIn[t]=!0})},e.prototype.updateAndRedraw=function(t){var e,n=this,i=n.config;(t=t||{}).withTransition=c(t,"withTransition",!0),t.withTransform=c(t,"withTransform",!1),t.withLegend=c(t,"withLegend",!1),t.withUpdateXDomain=c(t,"withUpdateXDomain",!0),t.withUpdateOrgXDomain=c(t,"withUpdateOrgXDomain",!0),t.withTransitionForExit=!1,t.withTransitionForTransform=c(t,"withTransitionForTransform",t.withTransition),n.updateSizes(),t.withLegend&&i.legend_show||(e=n.axis.generateTransitions(t.withTransitionForAxis?i.transition_duration:0),n.updateScales(),n.updateSvgSize(),n.transformAll(t.withTransitionForTransform,e)),n.redraw(t,e)},e.prototype.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},e.prototype.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},e.prototype.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},e.prototype.isCustomX=function(){var t=this.config;return!this.isTimeSeries()&&(t.data_x||_(t.data_xs))},e.prototype.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},e.prototype.getTranslate=function(t){var e,n,i=this,r=i.config;return"main"===t?(e=o(i.margin.left),n=o(i.margin.top)):"context"===t?(e=o(i.margin2.left),n=o(i.margin2.top)):"legend"===t?(e=i.margin3.left,n=i.margin3.top):"x"===t?(e=0,n=r.axis_rotated?0:i.height):"y"===t?(e=0,n=r.axis_rotated?i.height:0):"y2"===t?(e=r.axis_rotated?0:i.width,n=r.axis_rotated?1:0):"subx"===t?(e=0,n=r.axis_rotated?0:i.height2):"arc"===t&&(e=i.arcWidth/2,n=i.arcHeight/2-(i.hasType("gauge")?6:0)),"translate("+e+","+n+")"},e.prototype.initialOpacity=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?1:0},e.prototype.initialOpacityForCircle=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?this.opacityForCircle(t):0},e.prototype.opacityForCircle=function(t){var e=(p(this.config.point_show)?this.config.point_show(t):this.config.point_show)||this.isStanfordType(t)?1:0;return v(t.value)?this.isScatterType(t)?.5:e:0},e.prototype.opacityForText=function(){return this.hasDataLabel()?1:0},e.prototype.xx=function(t){return t?this.x(t.x):null},e.prototype.xvCustom=function(t,e){var n=this,i=e?t[e]:t.value;return n.isTimeSeries()?i=n.parseDate(t.value):n.isCategorized()&&"string"==typeof t.value&&(i=n.config.axis_x_categories.indexOf(t.value)),Math.ceil(n.x(i))},e.prototype.yvCustom=function(t,e){var n=t.axis&&"y2"===t.axis?this.y2:this.y,i=e?t[e]:t.value;return Math.ceil(n(i))},e.prototype.xv=function(t){var e=this,n=t.value;return e.isTimeSeries()?n=e.parseDate(t.value):e.isCategorized()&&"string"==typeof t.value&&(n=e.config.axis_x_categories.indexOf(t.value)),Math.ceil(e.x(n))},e.prototype.yv=function(t){var e=t.axis&&"y2"===t.axis?this.y2:this.y;return Math.ceil(e(t.value))},e.prototype.subxx=function(t){return t?this.subX(t.x):null},e.prototype.transformMain=function(t,e){var n,i,r,o=this;e&&e.axisX?n=e.axisX:(n=o.main.select("."+a.axisX),t&&(n=n.transition())),e&&e.axisY?i=e.axisY:(i=o.main.select("."+a.axisY),t&&(i=i.transition())),e&&e.axisY2?r=e.axisY2:(r=o.main.select("."+a.axisY2),t&&(r=r.transition())),(t?o.main.transition():o.main).attr("transform",o.getTranslate("main")),n.attr("transform",o.getTranslate("x")),i.attr("transform",o.getTranslate("y")),r.attr("transform",o.getTranslate("y2")),o.main.select("."+a.chartArcs).attr("transform",o.getTranslate("arc"))},e.prototype.transformAll=function(t,e){var n=this;n.transformMain(t,e),n.config.subchart_show&&n.transformContext(t,e),n.legend&&n.transformLegend(t)},e.prototype.updateSvgSize=function(){var t=this,e=t.svg.select(".c3-brush .overlay");t.svg.attr("width",t.currentWidth).attr("height",t.currentHeight),t.svg.selectAll(["#"+t.clipId,"#"+t.clipIdForGrid]).select("rect").attr("width",t.width).attr("height",t.height),t.svg.select("#"+t.clipIdForXAxis).select("rect").attr("x",t.getXAxisClipX.bind(t)).attr("y",t.getXAxisClipY.bind(t)).attr("width",t.getXAxisClipWidth.bind(t)).attr("height",t.getXAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForYAxis).select("rect").attr("x",t.getYAxisClipX.bind(t)).attr("y",t.getYAxisClipY.bind(t)).attr("width",t.getYAxisClipWidth.bind(t)).attr("height",t.getYAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForSubchart).select("rect").attr("width",t.width).attr("height",e.size()?e.attr("height"):0),t.selectChart.style("max-height",t.currentHeight+"px")},e.prototype.updateDimension=function(t){var e=this;t||(e.config.axis_rotated?(e.axes.x.call(e.xAxis),e.axes.subx.call(e.subXAxis)):(e.axes.y.call(e.yAxis),e.axes.y2.call(e.y2Axis))),e.updateSizes(),e.updateScales(),e.updateSvgSize(),e.transformAll(!1)},e.prototype.observeInserted=function(t){var e,n=this;"undefined"!=typeof MutationObserver?(e=new MutationObserver(function(i){i.forEach(function(i){"childList"===i.type&&i.previousSibling&&(e.disconnect(),n.intervalForObserveInserted=window.setInterval(function(){t.node().parentNode&&(window.clearInterval(n.intervalForObserveInserted),n.updateDimension(),n.brush&&n.brush.update(),n.config.oninit.call(n),n.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),t.transition().style("opacity",1))},10))})})).observe(t.node(),{attributes:!0,childList:!0,characterData:!0}):window.console.error("MutationObserver not defined.")},e.prototype.bindResize=function(){var t=this,e=t.config;if(t.resizeFunction=t.generateResize(),t.resizeFunction.add(function(){e.onresize.call(t)}),e.resize_auto&&t.resizeFunction.add(function(){void 0!==t.resizeTimeout&&window.clearTimeout(t.resizeTimeout),t.resizeTimeout=window.setTimeout(function(){delete t.resizeTimeout,t.updateAndRedraw({withUpdateXDomain:!1,withUpdateOrgXDomain:!1,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),t.brush&&t.brush.update()},100)}),t.resizeFunction.add(function(){e.onresized.call(t)}),t.resizeIfElementDisplayed=function(){null!=t.api&&t.api.element.offsetParent&&t.resizeFunction()},window.attachEvent)window.attachEvent("onresize",t.resizeIfElementDisplayed);else if(window.addEventListener)window.addEventListener("resize",t.resizeIfElementDisplayed,!1);else{var n=window.onresize;n?n.add&&n.remove||(n=t.generateResize()).add(window.onresize):n=t.generateResize(),n.add(t.resizeFunction),window.onresize=function(){t.api.element.offsetParent&&n()}}},e.prototype.bindWindowFocus=function(){var t=this;this.windowFocusHandler||(this.windowFocusHandler=function(){t.redraw()},window.addEventListener("focus",this.windowFocusHandler))},e.prototype.unbindWindowFocus=function(){window.removeEventListener("focus",this.windowFocusHandler),delete this.windowFocusHandler},e.prototype.generateResize=function(){var t=[];function e(){t.forEach(function(t){t()})}return e.add=function(e){t.push(e)},e.remove=function(e){for(var n=0;ne.getTotalLength())break;n--}while(n>0);return n})),"SVGPathSegList"in window||(window.SVGPathSegList=function(t){this._pathElement=t,this._list=this._parsePath(this._pathElement.getAttribute("d")),this._mutationObserverConfig={attributes:!0,attributeFilter:["d"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},window.SVGPathSegList.prototype.classname="SVGPathSegList",Object.defineProperty(window.SVGPathSegList.prototype,"numberOfItems",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"pathSegList",{get:function(){return this._pathSegList||(this._pathSegList=new window.SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"normalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"animatedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"animatedNormalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),window.SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},window.SVGPathSegList.prototype._updateListFromPathMutations=function(t){if(this._pathElement){var e=!1;t.forEach(function(t){"d"==t.attributeName&&(e=!0)}),e&&(this._list=this._parsePath(this._pathElement.getAttribute("d")))}},window.SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute("d",window.SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},window.SVGPathSegList.prototype.segmentChanged=function(t){this._writeListToPath()},window.SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach(function(t){t._owningPathSegList=null}),this._list=[],this._writeListToPath()},window.SVGPathSegList.prototype.initialize=function(t){return this._checkPathSynchronizedToList(),this._list=[t],t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList.prototype._checkValidIndex=function(t){if(isNaN(t)||t<0||t>=this.numberOfItems)throw"INDEX_SIZE_ERR"},window.SVGPathSegList.prototype.getItem=function(t){return this._checkPathSynchronizedToList(),this._checkValidIndex(t),this._list[t]},window.SVGPathSegList.prototype.insertItemBefore=function(t,e){return this._checkPathSynchronizedToList(),e>this.numberOfItems&&(e=this.numberOfItems),t._owningPathSegList&&(t=t.clone()),this._list.splice(e,0,t),t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList.prototype.replaceItem=function(t,e){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._checkValidIndex(e),this._list[e]=t,t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList.prototype.removeItem=function(t){this._checkPathSynchronizedToList(),this._checkValidIndex(t);var e=this._list[t];return this._list.splice(t,1),this._writeListToPath(),e},window.SVGPathSegList.prototype.appendItem=function(t){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._list.push(t),t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList._pathSegArrayAsString=function(t){var e="",n=!0;return t.forEach(function(t){n?(n=!1,e+=t._asPathString()):e+=" "+t._asPathString()}),e},window.SVGPathSegList.prototype._parsePath=function(t){if(!t||0==t.length)return[];var e=this,n=function(){this.pathSegList=[]};n.prototype.appendSegment=function(t){this.pathSegList.push(t)};var i=function(t){this._string=t,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=window.SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};i.prototype._isCurrentSpace=function(){var t=this._string[this._currentIndex];return t<=" "&&(" "==t||"\n"==t||"\t"==t||"\r"==t||"\f"==t)},i.prototype._skipOptionalSpaces=function(){for(;this._currentIndex="0"&&t<="9")&&e!=window.SVGPathSeg.PATHSEG_CLOSEPATH?e==window.SVGPathSeg.PATHSEG_MOVETO_ABS?window.SVGPathSeg.PATHSEG_LINETO_ABS:e==window.SVGPathSeg.PATHSEG_MOVETO_REL?window.SVGPathSeg.PATHSEG_LINETO_REL:e:window.SVGPathSeg.PATHSEG_UNKNOWN},i.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var t=this.peekSegmentType();return t==window.SVGPathSeg.PATHSEG_MOVETO_ABS||t==window.SVGPathSeg.PATHSEG_MOVETO_REL},i.prototype._parseNumber=function(){var t=0,e=0,n=1,i=0,r=1,a=1,o=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex"9")&&"."!=this._string.charAt(this._currentIndex))){for(var s=this._currentIndex;this._currentIndex="0"&&this._string.charAt(this._currentIndex)<="9";)this._currentIndex++;if(this._currentIndex!=s)for(var u=this._currentIndex-1,c=1;u>=s;)e+=c*(this._string.charAt(u--)-"0"),c*=10;if(this._currentIndex=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex="0"&&this._string.charAt(this._currentIndex)<="9";)n*=10,i+=(this._string.charAt(this._currentIndex)-"0")/n,this._currentIndex+=1}if(this._currentIndex!=o&&this._currentIndex+1=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex="0"&&this._string.charAt(this._currentIndex)<="9";)t*=10,t+=this._string.charAt(this._currentIndex)-"0",this._currentIndex++}var l=e+i;if(l*=r,t&&(l*=Math.pow(10,a*t)),o!=this._currentIndex)return this._skipOptionalSpacesOrDelimiter(),l}},i.prototype._parseArcFlag=function(){if(!(this._currentIndex>=this._endIndex)){var t=!1,e=this._string.charAt(this._currentIndex++);if("0"==e)t=!1;else{if("1"!=e)return;t=!0}return this._skipOptionalSpacesOrDelimiter(),t}},i.prototype.parseSegment=function(){var t=this._string[this._currentIndex],n=this._pathSegTypeFromChar(t);if(n==window.SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==window.SVGPathSeg.PATHSEG_UNKNOWN)return null;if((n=this._nextCommandHelper(t,this._previousCommand))==window.SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;switch(this._previousCommand=n,n){case window.SVGPathSeg.PATHSEG_MOVETO_REL:return new window.SVGPathSegMovetoRel(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_MOVETO_ABS:return new window.SVGPathSegMovetoAbs(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_REL:return new window.SVGPathSegLinetoRel(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_ABS:return new window.SVGPathSegLinetoAbs(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new window.SVGPathSegLinetoHorizontalRel(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new window.SVGPathSegLinetoHorizontalAbs(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new window.SVGPathSegLinetoVerticalRel(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new window.SVGPathSegLinetoVerticalAbs(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new window.SVGPathSegClosePath(e);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegCurvetoCubicRel(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:return i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoCubicAbs(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:return i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoCubicSmoothRel(e,i.x,i.y,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:return i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoCubicSmoothAbs(e,i.x,i.y,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:return i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoQuadraticRel(e,i.x,i.y,i.x1,i.y1);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:return i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoQuadraticAbs(e,i.x,i.y,i.x1,i.y1);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new window.SVGPathSegCurvetoQuadraticSmoothRel(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new window.SVGPathSegCurvetoQuadraticSmoothAbs(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_ARC_REL:return i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegArcRel(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);case window.SVGPathSeg.PATHSEG_ARC_ABS:return i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegArcAbs(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);default:throw"Unknown path seg type."}};var r=new n,a=new i(t);if(!a.initialCommandIsMoveTo())return[];for(;a.hasMoreData();){var o=a.parseSegment();if(!o)return[];r.appendSegment(o)}return r.pathSegList}),String.prototype.padEnd||(String.prototype.padEnd=function(t,e){return t>>=0,e=String(void 0!==e?e:" "),this.length>t?String(this):((t-=this.length)>e.length&&(e+=e.repeat(t/e.length)),String(this)+e.slice(0,t))}),i.prototype.axis=function(){},i.prototype.axis.labels=function(t){var e=this.internal;arguments.length&&(Object.keys(t).forEach(function(n){e.axis.setLabelText(n,t[n])}),e.axis.updateLabels())},i.prototype.axis.max=function(e){var n=this.internal,i=n.config;if(!arguments.length)return{x:i.axis_x_max,y:i.axis_y_max,y2:i.axis_y2_max};"object"===t(e)?(v(e.x)&&(i.axis_x_max=e.x),v(e.y)&&(i.axis_y_max=e.y),v(e.y2)&&(i.axis_y2_max=e.y2)):i.axis_y_max=i.axis_y2_max=e,n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})},i.prototype.axis.min=function(e){var n=this.internal,i=n.config;if(!arguments.length)return{x:i.axis_x_min,y:i.axis_y_min,y2:i.axis_y2_min};"object"===t(e)?(v(e.x)&&(i.axis_x_min=e.x),v(e.y)&&(i.axis_y_min=e.y),v(e.y2)&&(i.axis_y2_min=e.y2)):i.axis_y_min=i.axis_y2_min=e,n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})},i.prototype.axis.range=function(t){if(!arguments.length)return{max:this.axis.max(),min:this.axis.min()};d(t.max)&&this.axis.max(t.max),d(t.min)&&this.axis.min(t.min)},i.prototype.category=function(t,e){var n=this.internal,i=n.config;return arguments.length>1&&(i.axis_x_categories[t]=e,n.redraw()),i.axis_x_categories[t]},i.prototype.categories=function(t){var e=this.internal,n=e.config;return arguments.length?(n.axis_x_categories=t,e.redraw(),n.axis_x_categories):n.axis_x_categories},i.prototype.resize=function(t){var e=this.internal,n=e.config;n.size_width=t?t.width:null,n.size_height=t?t.height:null,this.flush()},i.prototype.flush=function(){var t=this.internal;t.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},i.prototype.destroy=function(){var t=this.internal;if(window.clearInterval(t.intervalForObserveInserted),void 0!==t.resizeTimeout&&window.clearTimeout(t.resizeTimeout),window.detachEvent)window.detachEvent("onresize",t.resizeIfElementDisplayed);else if(window.removeEventListener)window.removeEventListener("resize",t.resizeIfElementDisplayed);else{var e=window.onresize;e&&e.add&&e.remove&&e.remove(t.resizeFunction)}return t.resizeFunction.remove(),t.unbindWindowFocus(),t.selectChart.classed("c3",!1).html(""),Object.keys(t).forEach(function(e){t[e]=null}),null},i.prototype.color=function(t){var e=this.internal;return e.color(t)},i.prototype.data=function(t){var e=this.internal.data.targets;return void 0===t?e:e.filter(function(e){return[].concat(t).indexOf(e.id)>=0})},i.prototype.data.shown=function(t){return this.internal.filterTargetsToShow(this.data(t))},i.prototype.data.values=function(t){var e,n=null;return t&&(e=this.data(t),n=e[0]?e[0].values.map(function(t){return t.value}):null),n},i.prototype.data.names=function(t){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",t)},i.prototype.data.colors=function(t){return this.internal.updateDataAttributes("colors",t)},i.prototype.data.axes=function(t){return this.internal.updateDataAttributes("axes",t)},i.prototype.flow=function(t){var e,n,i,r,a,o,s,u=this.internal,c=[],l=u.getMaxDataCount(),f=0,h=0;if(t.json)n=u.convertJsonToData(t.json,t.keys);else if(t.rows)n=u.convertRowsToData(t.rows);else{if(!t.columns)return;n=u.convertColumnsToData(t.columns)}e=u.convertDataToTargets(n,!0),u.data.targets.forEach(function(t){var n,i,r=!1;for(n=0;n1?r.values[r.values.length-1].x-a.x:a.x-u.getXDomain(u.data.targets)[0]:1,i=[a.x-o,a.x],u.updateXDomain(null,!0,!0,!1,i)),u.updateTargets(u.data.targets),u.redraw({flow:{index:a.index,length:f,duration:v(t.duration)?t.duration:u.config.transition_duration,done:t.done,orgDataCount:l},withLegend:!0,withTransition:l>1,withTrimXDomain:!1,withUpdateXAxis:!0})},e.prototype.generateFlow=function(t){var e=this,n=e.config,i=e.d3;return function(){var r,o,s,c,l,f,d,h,p,g,y,v=t.targets,_=t.flow,m=t.drawBar,x=t.drawLine,b=t.drawArea,w=t.cx,S=t.cy,A=t.xv,T=t.xForText,P=t.yForText,C=t.duration,M=1,E=_.index,L=_.length,k=e.getValueOnIndex(e.data.targets[0].values,E),V=e.getValueOnIndex(e.data.targets[0].values,E+L),O=e.x.domain(),G=_.duration||C,R=_.done||function(){},I=e.generateWait();e.flowing=!0,e.data.targets.forEach(function(t){t.values.splice(0,L)}),s=e.updateXDomain(v,!0,!0),e.updateXGrid&&e.updateXGrid(!0),c=e.xgrid||i.selectAll([]),l=e.xgridLines||i.selectAll([]),f=e.mainRegion||i.selectAll([]),d=e.mainText||i.selectAll([]),h=e.mainBar||i.selectAll([]),p=e.mainLine||i.selectAll([]),g=e.mainArea||i.selectAll([]),y=e.mainCircle||i.selectAll([]),_.orgDataCount?r=1===_.orgDataCount||(k&&k.x)===(V&&V.x)?e.x(O[0])-e.x(s[0]):e.isTimeSeries()?e.x(O[0])-e.x(s[0]):e.x(k.x)-e.x(V.x):1!==e.data.targets[0].values.length?r=e.x(O[0])-e.x(s[0]):e.isTimeSeries()?(k=e.getValueOnIndex(e.data.targets[0].values,0),V=e.getValueOnIndex(e.data.targets[0].values,e.data.targets[0].values.length-1),r=e.x(k.x)-e.x(V.x)):r=u(s)/2,M=u(O)/u(s),o="translate("+r+",0) scale("+M+",1)",e.hideXGridFocus();var N=i.transition().ease(i.easeLinear).duration(G);I.add(e.xAxis(e.axes.x,N)),I.add(h.transition(N).attr("transform",o)),I.add(p.transition(N).attr("transform",o)),I.add(g.transition(N).attr("transform",o)),I.add(y.transition(N).attr("transform",o)),I.add(d.transition(N).attr("transform",o)),I.add(f.filter(e.isRegionOnX).transition(N).attr("transform",o)),I.add(c.transition(N).attr("transform",o)),I.add(l.transition(N).attr("transform",o)),I(function(){var t,i=[],r=[];if(L){for(t=0;t=0&&(e=!0)}),!e)}),o.regions},i.prototype.selected=function(t){var e=this.internal,n=e.d3;return e.main.selectAll("."+a.shapes+e.getTargetSelectorSuffix(t)).selectAll("."+a.shape).filter(function(){return n.select(this).classed(a.SELECTED)}).nodes().map(function(t){var e=t.__data__;return e.data?e.data:e})},i.prototype.select=function(t,e,n){var i=this.internal,r=i.d3,o=i.config;o.data_selection_enabled&&i.main.selectAll("."+a.shapes).selectAll("."+a.shape).each(function(s,u){var c=r.select(this),l=s.data?s.data.id:s.id,f=i.getToggle(this,s).bind(i),h=o.data_selection_grouped||!t||t.indexOf(l)>=0,p=!e||e.indexOf(u)>=0,g=c.classed(a.SELECTED);c.classed(a.line)||c.classed(a.area)||(h&&p?o.data_selection_isselectable(s)&&!g&&f(!0,c.classed(a.SELECTED,!0),s,u):d(n)&&n&&g&&f(!1,c.classed(a.SELECTED,!1),s,u))})},i.prototype.unselect=function(t,e){var n=this.internal,i=n.d3,r=n.config;r.data_selection_enabled&&n.main.selectAll("."+a.shapes).selectAll("."+a.shape).each(function(o,s){var u=i.select(this),c=o.data?o.data.id:o.id,l=n.getToggle(this,o).bind(n),f=r.data_selection_grouped||!t||t.indexOf(c)>=0,d=!e||e.indexOf(s)>=0,h=u.classed(a.SELECTED);u.classed(a.line)||u.classed(a.area)||f&&d&&r.data_selection_isselectable(o)&&h&&l(!1,u.classed(a.SELECTED,!1),o,s)})},i.prototype.show=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.removeHiddenTargetIds(t),(n=i.svg.selectAll(i.selectorTargets(t))).transition().style("display","initial","important").style("opacity",1,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",1)}),e.withLegend&&i.showLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},i.prototype.hide=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.addHiddenTargetIds(t),(n=i.svg.selectAll(i.selectorTargets(t))).transition().style("opacity",0,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",0),n.style("display","none")}),e.withLegend&&i.hideLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},i.prototype.toggle=function(t,e){var n=this,i=this.internal;i.mapToTargetIds(t).forEach(function(t){i.isTargetToShow(t)?n.hide(t,e):n.show(t,e)})},i.prototype.tooltip=function(){},i.prototype.tooltip.show=function(t){var e,n,i=this.internal,r={};t.mouse?r=t.mouse:(t.data?n=t.data:void 0!==t.x&&(e=t.id?i.data.targets.filter(function(e){return e.id===t.id}):i.data.targets,n=i.filterByX(e,t.x).slice(0,1)[0]),r=n?i.getMousePosition(n):null),i.dispatchEvent("mousemove",r),i.config.tooltip_onshow.call(i,n)},i.prototype.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0),this.internal.config.tooltip_onhide.call(this)},i.prototype.transform=function(t,e){var n=this.internal,i=["pie","donut"].indexOf(t)>=0?{withTransform:!0}:null;n.transformTo(e,t,i)},e.prototype.transformTo=function(t,e,n){var i=this,r=!i.hasArcType(),a=n||{withTransitionForAxis:r};a.withTransitionForTransform=!1,i.transiting=!1,i.setTargetType(t,e),i.updateTargets(i.data.targets),i.updateAndRedraw(a)},i.prototype.x=function(t){var e=this.internal;return arguments.length&&(e.updateTargetX(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},i.prototype.xs=function(t){var e=this.internal;return arguments.length&&(e.updateTargetXs(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},i.prototype.zoom=function(t){var e=this.internal;return t?(e.isTimeSeries()&&(t=t.map(function(t){return e.parseDate(t)})),e.config.subchart_show?e.brush.selectionAsValue(t,!0):(e.updateXDomain(null,!0,!1,!1,t),e.redraw({withY:e.config.zoom_rescale,withSubchart:!1})),e.config.zoom_onzoom.call(this,e.x.orgDomain()),t):e.x.domain()},i.prototype.zoom.enable=function(t){var e=this.internal;e.config.zoom_enabled=t,e.updateAndRedraw()},i.prototype.unzoom=function(){var t=this.internal;t.config.subchart_show?t.brush.clear():(t.updateXDomain(null,!0,!1,!1,t.subX.domain()),t.redraw({withY:t.config.zoom_rescale,withSubchart:!1}))},i.prototype.zoom.max=function(t){var e=this.internal,n=e.config,i=e.d3;if(0!==t&&!t)return n.zoom_x_max;n.zoom_x_max=i.max([e.orgXDomain[1],t])},i.prototype.zoom.min=function(t){var e=this.internal,n=e.config,i=e.d3;if(0!==t&&!t)return n.zoom_x_min;n.zoom_x_min=i.min([e.orgXDomain[0],t])},i.prototype.zoom.range=function(t){if(!arguments.length)return{max:this.domain.max(),min:this.domain.min()};d(t.max)&&this.domain.max(t.max),d(t.min)&&this.domain.min(t.min)},e.prototype.initPie=function(){var t=this,e=t.d3;t.pie=e.pie().value(function(t){return t.values.reduce(function(t,e){return t+e.value},0)});var n=t.getOrderFunction();if(n&&(t.isOrderAsc()||t.isOrderDesc())){var i=n;n=function(t,e){return-1*i(t,e)}}t.pie.sort(n||null)},e.prototype.updateRadius=function(){var t=this,e=t.config,n=e.gauge_width||e.donut_width,i=t.filterTargetsToShow(t.data.targets).length*t.config.gauge_arcs_minWidth;t.radiusExpanded=Math.min(t.arcWidth,t.arcHeight)/2*(t.hasType("gauge")?.85:1),t.radius=.95*t.radiusExpanded,t.innerRadiusRatio=n?(t.radius-n)/t.radius:.6,t.innerRadius=t.hasType("donut")||t.hasType("gauge")?t.radius*t.innerRadiusRatio:0,t.gaugeArcWidth=n||(i<=t.radius-t.innerRadius?t.radius-t.innerRadius:i<=t.radius?i:t.radius)},e.prototype.updateArc=function(){var t=this;t.svgArc=t.getSvgArc(),t.svgArcExpanded=t.getSvgArcExpanded(),t.svgArcExpandedSub=t.getSvgArcExpanded(.98)},e.prototype.updateAngle=function(t){var e,n,i,r,a=this,o=a.config,s=!1,u=0;return o?(a.pie(a.filterTargetsToShow(a.data.targets)).forEach(function(e){s||e.data.id!==t.data.id||(s=!0,(t=e).index=u),u++}),isNaN(t.startAngle)&&(t.startAngle=0),isNaN(t.endAngle)&&(t.endAngle=t.startAngle),a.isGaugeType(t.data)&&(e=o.gauge_min,n=o.gauge_max,i=Math.PI*(o.gauge_fullCircle?2:1)/(n-e),r=t.value.375?1.175-36/o.radius:.8)*o.radius/r:0,c="translate("+n*a+","+i*a+")";else if(u&&l&&o.filterTargetsToShow(o.data.targets).length>1){var f=Math.sin(u.endAngle-Math.PI/2);n=Math.cos(u.endAngle-Math.PI/2)*(o.radiusExpanded+25),i=f*(o.radiusExpanded+15-Math.abs(10*f))+3,c="translate("+n+","+i+")"}return c},e.prototype.getArcRatio=function(t){var e=this.config,n=Math.PI*(this.hasType("gauge")&&!e.gauge_fullCircle?1:2);return t?(t.endAngle-t.startAngle)/n:null},e.prototype.convertToArcData=function(t){return this.addName({id:t.data.id,value:t.value,ratio:this.getArcRatio(t),index:t.index})},e.prototype.textForArcLabel=function(t){var e,n,i,r,a,o=this;return o.shouldShowArcLabel()?(e=o.updateAngle(t),n=e?e.value:null,i=o.getArcRatio(e),r=t.data.id,o.hasType("gauge")||o.meetsArcLabelThreshold(i)?(a=o.getArcLabelFormat())?a(n,i,r):o.defaultArcValueFormat(n,i):""):""},e.prototype.textForGaugeMinMax=function(t,e){var n=this.getGaugeLabelExtents();return n?n(t,e):t},e.prototype.expandArc=function(t){var e,n=this;n.transiting?e=window.setInterval(function(){n.transiting||(window.clearInterval(e),n.legend.selectAll(".c3-legend-item-focused").size()>0&&n.expandArc(t))},10):(t=n.mapToTargetIds(t),n.svg.selectAll(n.selectorTargets(t,"."+a.chartArc)).each(function(t){n.shouldExpand(t.data.id)&&n.d3.select(this).selectAll("path").transition().duration(n.expandDuration(t.data.id)).attr("d",n.svgArcExpanded).transition().duration(2*n.expandDuration(t.data.id)).attr("d",n.svgArcExpandedSub).each(function(t){n.isDonutType(t.data)})}))},e.prototype.unexpandArc=function(t){var e=this;e.transiting||(t=e.mapToTargetIds(t),e.svg.selectAll(e.selectorTargets(t,"."+a.chartArc)).selectAll("path").transition().duration(function(t){return e.expandDuration(t.data.id)}).attr("d",e.svgArc),e.svg.selectAll("."+a.arc))},e.prototype.expandDuration=function(t){var e=this.config;return this.isDonutType(t)?e.donut_expand_duration:this.isGaugeType(t)?e.gauge_expand_duration:this.isPieType(t)?e.pie_expand_duration:50},e.prototype.shouldExpand=function(t){var e=this.config;return this.isDonutType(t)&&e.donut_expand||this.isGaugeType(t)&&e.gauge_expand||this.isPieType(t)&&e.pie_expand},e.prototype.shouldShowArcLabel=function(){var t=this.config,e=!0;return this.hasType("donut")?e=t.donut_label_show:this.hasType("pie")&&(e=t.pie_label_show),e},e.prototype.meetsArcLabelThreshold=function(t){var e=this.config,n=this.hasType("donut")?e.donut_label_threshold:e.pie_label_threshold;return t>=n},e.prototype.getArcLabelFormat=function(){var t=this.config,e=t.pie_label_format;return this.hasType("gauge")?e=t.gauge_label_format:this.hasType("donut")&&(e=t.donut_label_format),e},e.prototype.getGaugeLabelExtents=function(){var t=this.config;return t.gauge_label_extents},e.prototype.getArcTitle=function(){return this.hasType("donut")?this.config.donut_title:""},e.prototype.updateTargetsForArc=function(t){var e,n,i=this,r=i.main,o=i.classChartArc.bind(i),s=i.classArcs.bind(i),u=i.classFocus.bind(i);e=r.select("."+a.chartArcs).selectAll("."+a.chartArc).data(i.pie(t)).attr("class",function(t){return o(t)+u(t.data)}),(n=e.enter().append("g").attr("class",o)).append("g").attr("class",s),n.append("text").attr("dy",i.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},e.prototype.initArc=function(){var t=this;t.arcs=t.main.select("."+a.chart).append("g").attr("class",a.chartArcs).attr("transform",t.getTranslate("arc")),t.arcs.append("text").attr("class",a.chartArcsTitle).style("text-anchor","middle").text(t.getArcTitle())},e.prototype.redrawArc=function(t,e,n){var i,r,o,s,u=this,c=u.d3,l=u.config,f=u.main,d=u.hasType("gauge");if(i=f.selectAll("."+a.arcs).selectAll("."+a.arc).data(u.arcData.bind(u)),r=i.enter().append("path").attr("class",u.classArc.bind(u)).style("fill",function(t){return u.color(t.data)}).style("cursor",function(t){return l.interaction_enabled&&l.data_selection_isselectable(t)?"pointer":null}).each(function(t){u.isGaugeType(t.data)&&(t.startAngle=t.endAngle=l.gauge_startingAngle),this._current=t}).merge(i),d&&(o=f.selectAll("."+a.arcs).selectAll("."+a.arcLabelLine).data(u.arcData.bind(u)),s=o.enter().append("rect").attr("class",function(t){return a.arcLabelLine+" "+a.target+" "+a.target+"-"+t.data.id}).merge(o),1===u.filterTargetsToShow(u.data.targets).length?s.style("display","none"):s.style("fill",function(t){return u.levelColor?u.levelColor(t.data.values[0].value):u.color(t.data)}).style("display",l.gauge_labelLine_show?"":"none").each(function(t){var e=0,n=0,i=0,r="";if(u.hiddenTargetIds.indexOf(t.data.id)<0){var a=u.updateAngle(t),o=u.gaugeArcWidth/u.filterTargetsToShow(u.data.targets).length*(a.index+1),s=a.endAngle-Math.PI/2,l=u.radius-o,f=s-(0===l?0:1/l);e=u.radiusExpanded-u.radius+o,n=Math.cos(f)*l,i=Math.sin(f)*l,r="rotate("+180*s/Math.PI+", "+n+", "+i+")"}c.select(this).attr("x",n).attr("y",i).attr("width",e).attr("height",2).attr("transform",r).style("stroke-dasharray","0, "+(e+2)+", 0")})),r.attr("transform",function(t){return!u.isGaugeType(t.data)&&n?"scale(0)":""}).on("mouseover",l.interaction_enabled?function(t){var e,n;u.transiting||(e=u.updateAngle(t))&&(n=u.convertToArcData(e),u.expandArc(e.data.id),u.api.focus(e.data.id),u.toggleFocusLegend(e.data.id,!0),u.config.data_onmouseover(n,this))}:null).on("mousemove",l.interaction_enabled?function(t){var e,n,i=u.updateAngle(t);i&&(e=u.convertToArcData(i),n=[e],u.showTooltip(n,this))}:null).on("mouseout",l.interaction_enabled?function(t){var e,n;u.transiting||(e=u.updateAngle(t))&&(n=u.convertToArcData(e),u.unexpandArc(e.data.id),u.api.revert(),u.revertLegend(),u.hideTooltip(),u.config.data_onmouseout(n,this))}:null).on("click",l.interaction_enabled?function(t,e){var n,i=u.updateAngle(t);i&&(n=u.convertToArcData(i),u.toggleShape&&u.toggleShape(this,n,e),u.config.data_onclick.call(u.api,n,this))}:null).each(function(){u.transiting=!0}).transition().duration(t).attrTween("d",function(t){var e,n=u.updateAngle(t);return n?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),e=c.interpolate(this._current,n),this._current=e(0),function(n){var i=e(n);return i.data=t.data,u.getArc(i,!0)}):function(){return"M 0 0"}}).attr("transform",n?"scale(1)":"").style("fill",function(t){return u.levelColor?u.levelColor(t.data.values[0].value):u.color(t.data.id)}).call(u.endall,function(){u.transiting=!1}),i.exit().transition().duration(e).style("opacity",0).remove(),f.selectAll("."+a.chartArc).select("text").style("opacity",0).attr("class",function(t){return u.isGaugeType(t.data)?a.gaugeValue:""}).text(u.textForArcLabel.bind(u)).attr("transform",u.transformForArcLabel.bind(u)).style("font-size",function(t){return u.isGaugeType(t.data)&&1===u.filterTargetsToShow(u.data.targets).length?Math.round(u.radius/5)+"px":""}).transition().duration(t).style("opacity",function(t){return u.isTargetToShow(t.data.id)&&u.isArcType(t.data)?1:0}),f.select("."+a.chartArcsTitle).style("opacity",u.hasType("donut")||d?1:0),d){var h=0,p=u.arcs.select("g."+a.chartArcsBackground).selectAll("path."+a.chartArcsBackground).data(u.data.targets);p.enter().append("path").attr("class",function(t,e){return a.chartArcsBackground+" "+a.chartArcsBackground+"-"+e}).merge(p).attr("d",function(t){if(u.hiddenTargetIds.indexOf(t.id)>=0)return"M 0 0";var e={data:[{value:l.gauge_max}],startAngle:l.gauge_startingAngle,endAngle:-1*l.gauge_startingAngle*(l.gauge_fullCircle?Math.PI:1),index:h++};return u.getArc(e,!0,!0)}),p.exit().remove(),u.arcs.select("."+a.chartArcsGaugeUnit).attr("dy",".75em").text(l.gauge_label_show?l.gauge_units:""),u.arcs.select("."+a.chartArcsGaugeMin).attr("dx",-1*(u.innerRadius+(u.radius-u.innerRadius)/(l.gauge_fullCircle?1:2))+"px").attr("dy","1.2em").text(l.gauge_label_show?u.textForGaugeMinMax(l.gauge_min,!1):""),u.arcs.select("."+a.chartArcsGaugeMax).attr("dx",u.innerRadius+(u.radius-u.innerRadius)/(l.gauge_fullCircle?1:2)+"px").attr("dy","1.2em").text(l.gauge_label_show?u.textForGaugeMinMax(l.gauge_max,!0):"")}},e.prototype.initGauge=function(){var t=this.arcs;this.hasType("gauge")&&(t.append("g").attr("class",a.chartArcsBackground),t.append("text").attr("class",a.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",a.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",a.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},e.prototype.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},e.prototype.hasCaches=function(t){for(var e=0;e=0?a.focused:"")},e.prototype.classDefocused=function(t){return" "+(this.defocusedTargetIds.indexOf(t.id)>=0?a.defocused:"")},e.prototype.classChartText=function(t){return a.chartText+this.classTarget(t.id)},e.prototype.classChartLine=function(t){return a.chartLine+this.classTarget(t.id)},e.prototype.classChartBar=function(t){return a.chartBar+this.classTarget(t.id)},e.prototype.classChartArc=function(t){return a.chartArc+this.classTarget(t.data.id)},e.prototype.getTargetSelectorSuffix=function(t){return this.generateTargetClass(t).replace(/([?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\])/g,"\\$1")},e.prototype.selectorTarget=function(t,e){return(e||"")+"."+a.target+this.getTargetSelectorSuffix(t)},e.prototype.selectorTargets=function(t,e){var n=this;return(t=t||[]).length?t.map(function(t){return n.selectorTarget(t,e)}):null},e.prototype.selectorLegend=function(t){return"."+a.legendItem+this.getTargetSelectorSuffix(t)},e.prototype.selectorLegends=function(t){var e=this;return t&&t.length?t.map(function(t){return e.selectorLegend(t)}):null},e.prototype.getClipPath=function(t){var e=window.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(e?"":document.URL.split("#")[0])+"#"+t+")"},e.prototype.appendClip=function(t,e){return t.append("clipPath").attr("id",e).append("rect")},e.prototype.getAxisClipX=function(t){var e=Math.max(30,this.margin.left);return t?-(1+e):-(e-1)},e.prototype.getAxisClipY=function(t){return t?-20:-this.margin.top},e.prototype.getXAxisClipX=function(){return this.getAxisClipX(!this.config.axis_rotated)},e.prototype.getXAxisClipY=function(){return this.getAxisClipY(!this.config.axis_rotated)},e.prototype.getYAxisClipX=function(){return this.config.axis_y_inner?-1:this.getAxisClipX(this.config.axis_rotated)},e.prototype.getYAxisClipY=function(){return this.getAxisClipY(this.config.axis_rotated)},e.prototype.getAxisClipWidth=function(t){var e=Math.max(30,this.margin.left),n=Math.max(30,this.margin.right);return t?this.width+2+e+n:this.margin.left+20},e.prototype.getAxisClipHeight=function(t){return(t?this.margin.bottom:this.margin.top+this.height)+20},e.prototype.getXAxisClipWidth=function(){return this.getAxisClipWidth(!this.config.axis_rotated)},e.prototype.getXAxisClipHeight=function(){return this.getAxisClipHeight(!this.config.axis_rotated)},e.prototype.getYAxisClipWidth=function(){return this.getAxisClipWidth(this.config.axis_rotated)+(this.config.axis_y_inner?20:0)},e.prototype.getYAxisClipHeight=function(){return this.getAxisClipHeight(this.config.axis_rotated)},e.prototype.generateColor=function(){var t=this.config,e=this.d3,n=t.data_colors,i=_(t.color_pattern)?t.color_pattern:e.schemeCategory10,r=t.data_color,a=[];return function(t){var e,o=t.id||t.data&&t.data.id||t;return n[o]instanceof Function?e=n[o](t):n[o]?e=n[o]:(a.indexOf(o)<0&&a.push(o),e=i[a.indexOf(o)%i.length],n[o]=e),r instanceof Function?r(e,t):e}},e.prototype.generateLevelColor=function(){var t=this.config,e=t.color_pattern,n=t.color_threshold,i="value"===n.unit,r=n.values&&n.values.length?n.values:[],a=n.max||100;return _(n)&&_(e)?function(t){var n,o=e[e.length-1];for(n=0;n=0?s.data.xs[n]=(e&&s.data.xs[n]?s.data.xs[n]:[]).concat(t.map(function(t){return t[i]}).filter(v).map(function(t,e){return s.generateTargetX(t,n,e)})):u.data_x?s.data.xs[n]=s.getOtherTargetXs():_(u.data_xs)&&(s.data.xs[n]=s.getXValuesOfXKey(i,s.data.targets)):s.data.xs[n]=t.map(function(t,e){return e})}),i.forEach(function(t){if(!s.data.xs[t])throw new Error('x is not defined for id = "'+t+'".')}),(n=i.map(function(e,n){var i=u.data_idConverter(e);return{id:i,id_org:e,values:t.map(function(t,r){var a,c,l=s.getXKey(e),f=t[l],d=null===t[e]||isNaN(t[e])?null:+t[e];return s.isCustomX()&&s.isCategorized()&&!y(f)?(0===n&&0===r&&(u.axis_x_categories=[]),-1===(a=u.axis_x_categories.indexOf(f))&&(a=u.axis_x_categories.length,u.axis_x_categories.push(f))):a=s.generateTargetX(f,e,r),(y(t[e])||s.data.xs[e].length<=r)&&(a=void 0),c={x:a,value:d,id:i},s.isStanfordGraphType()&&(c.epochs=t[o]),c}).filter(function(t){return d(t.x)})}})).forEach(function(t){var e;u.data_xSort&&(t.values=t.values.sort(function(t,e){var n=t.x||0===t.x?t.x:1/0,i=e.x||0===e.x?e.x:1/0;return n-i})),e=0,t.values.forEach(function(t){t.index=e++}),s.data.xs[t.id].sort(function(t,e){return t-e})}),s.hasNegativeValue=s.hasNegativeValueInTargets(n),s.hasPositiveValue=s.hasPositiveValueInTargets(n),u.data_type&&s.setTargetType(s.mapToIds(n).filter(function(t){return!(t in u.data_types)}),u.data_type),n.forEach(function(t){s.addCache(t.id_org,t)}),n},e.prototype.isEpochs=function(t){var e=this.config;return e.data_epochs&&t===e.data_epochs},e.prototype.isX=function(t){var e,n,i,r=this.config;return r.data_x&&t===r.data_x||_(r.data_xs)&&(e=r.data_xs,n=t,i=!1,Object.keys(e).forEach(function(t){e[t]===n&&(i=!0)}),i)},e.prototype.isNotX=function(t){return!this.isX(t)},e.prototype.isNotXAndNotEpochs=function(t){return!this.isX(t)&&!this.isEpochs(t)},e.prototype.getXKey=function(t){var e=this.config;return e.data_x?e.data_x:_(e.data_xs)?e.data_xs[t]:null},e.prototype.getXValuesOfXKey=function(t,e){var n,i=this,r=e&&_(e)?i.mapToIds(e):[];return r.forEach(function(e){i.getXKey(e)===t&&(n=i.data.xs[e])}),n},e.prototype.getXValue=function(t,e){return t in this.data.xs&&this.data.xs[t]&&v(this.data.xs[t][e])?this.data.xs[t][e]:e},e.prototype.getOtherTargetXs=function(){var t=Object.keys(this.data.xs);return t.length?this.data.xs[t[0]]:null},e.prototype.getOtherTargetX=function(t){var e=this.getOtherTargetXs();return e&&te?1:t>=e?0:NaN})},e.prototype.addHiddenTargetIds=function(t){t=t instanceof Array?t:new Array(t);for(var e=0;e0})},e.prototype.isOrderDesc=function(){var t=this.config;return"string"==typeof t.data_order&&"desc"===t.data_order.toLowerCase()},e.prototype.isOrderAsc=function(){var t=this.config;return"string"==typeof t.data_order&&"asc"===t.data_order.toLowerCase()},e.prototype.getOrderFunction=function(){var t=this.config,e=this.isOrderAsc(),n=this.isOrderDesc();if(e||n){var i=function(t,e){return t+Math.abs(e.value)};return function(t,n){var r=t.values.reduce(i,0),a=n.values.reduce(i,0);return e?a-r:r-a}}if(p(t.data_order))return t.data_order;if(f(t.data_order)){var r=t.data_order;return function(t,e){return r.indexOf(t.id)-r.indexOf(e.id)}}},e.prototype.orderTargets=function(t){var e=this.getOrderFunction();return e&&t.sort(e),t},e.prototype.filterByX=function(t,e){return this.d3.merge(t.map(function(t){return t.values})).filter(function(t){return t.x-e==0})},e.prototype.filterRemoveNull=function(t){return t.filter(function(t){return v(t.value)})},e.prototype.filterByXDomain=function(t,e){return t.map(function(t){return{id:t.id,id_org:t.id_org,values:t.values.filter(function(t){return e[0]<=t.x&&t.x<=e[1]})}})},e.prototype.hasDataLabel=function(){var e=this.config;return!("boolean"!=typeof e.data_labels||!e.data_labels)||!("object"!==t(e.data_labels)||!_(e.data_labels))},e.prototype.getDataLabelLength=function(t,e,n){var i=this,r=[0,0];return i.selectChart.select("svg").selectAll(".dummy").data([t,e]).enter().append("text").text(function(t){return i.dataLabelFormat(t.id)(t)}).each(function(t,e){r[e]=1.3*this.getBoundingClientRect()[n]}).remove(),r},e.prototype.isNoneArc=function(t){return this.hasTarget(this.data.targets,t.id)},e.prototype.isArc=function(t){return"data"in t&&this.hasTarget(this.data.targets,t.data.id)},e.prototype.findClosestFromTargets=function(t,e){var n,i=this;return n=t.map(function(t){return i.findClosest(t.values,e)}),i.findClosest(n,e)},e.prototype.findClosest=function(t,e){var n,i=this,r=i.config.point_sensitivity;return t.filter(function(t){return t&&i.isBarType(t.id)}).forEach(function(t){var e=i.main.select("."+a.bars+i.getTargetSelectorSuffix(t.id)+" ."+a.bar+"-"+t.index).node();!n&&i.isWithinBar(i.d3.mouse(e),e)&&(n=t)}),t.filter(function(t){return t&&!i.isBarType(t.id)}).forEach(function(t){var a=i.config.tooltip_horizontal?i.horizontalDistance(t,e):i.dist(t,e);a0)for(o=s.hasNegativeValueInTargets(t),e=0;e=0})).length)for(i=r[0],o&&l[i]&&l[i].forEach(function(t,e){l[i][e]=t<0?t:0}),n=1;n0||(l[i][e]+=+t)});return s.d3.min(Object.keys(l).map(function(t){return s.d3.min(l[t])}))},e.prototype.getYDomainMax=function(t){var e,n,i,r,a,o,s=this,u=s.config,c=s.mapToIds(t),l=s.getValuesAsIdKeyed(t);if(u.data_groups.length>0)for(o=s.hasPositiveValueInTargets(t),e=0;e=0})).length)for(i=r[0],o&&l[i]&&l[i].forEach(function(t,e){l[i][e]=t>0?t:0}),n=1;n=0&&S>=0,h=w<=0&&S<=0,(v(x)&&d||v(b)&&h)&&(T=!1),T&&(d&&(w=0),h&&(S=0)),r=Math.abs(S-w),a=o=.1*r,void 0!==A&&(s=Math.max(Math.abs(w),Math.abs(S)),S=A+s,w=A-s),C?(c=p.getDataLabelLength(w,S,"width"),l=u(p.y.range()),f=[c[0]/l,c[1]/l],a+=r*(f[1]/(1-f[0]-f[1])),o+=r*(f[0]/(1-f[0]-f[1]))):M&&(c=p.getDataLabelLength(w,S,"height"),a+=p.axis.convertPixelsToAxisPadding(c[1],r),o+=p.axis.convertPixelsToAxisPadding(c[0],r)),"y"===e&&_(g.axis_y_padding)&&(a=p.axis.getPadding(g.axis_y_padding,"top",a,r),o=p.axis.getPadding(g.axis_y_padding,"bottom",o,r)),"y2"===e&&_(g.axis_y2_padding)&&(a=p.axis.getPadding(g.axis_y2_padding,"top",a,r),o=p.axis.getPadding(g.axis_y2_padding,"bottom",o,r)),T&&(d&&(o=w),h&&(a=-S)),i=[w-o,S+a],P?i.reverse():i)},e.prototype.getXDomainMin=function(t){var e=this,n=e.config;return d(n.axis_x_min)?e.isTimeSeries()?this.parseDate(n.axis_x_min):n.axis_x_min:e.d3.min(t,function(t){return e.d3.min(t.values,function(t){return t.x})})},e.prototype.getXDomainMax=function(t){var e=this,n=e.config;return d(n.axis_x_max)?e.isTimeSeries()?this.parseDate(n.axis_x_max):n.axis_x_max:e.d3.max(t,function(t){return e.d3.max(t.values,function(t){return t.x})})},e.prototype.getXDomainPadding=function(e){var n,i,r,a,o=this.config,s=e[1]-e[0];return this.isCategorized()?i=0:this.hasType("bar")?(n=this.getMaxDataCount(),i=n>1?s/(n-1)/2:.5):i=.01*s,"object"===t(o.axis_x_padding)&&_(o.axis_x_padding)?(r=v(o.axis_x_padding.left)?o.axis_x_padding.left:i,a=v(o.axis_x_padding.right)?o.axis_x_padding.right:i):r=a="number"==typeof o.axis_x_padding?o.axis_x_padding:i,{left:r,right:a}},e.prototype.getXDomain=function(t){var e=this,n=[e.getXDomainMin(t),e.getXDomainMax(t)],i=n[0],r=n[1],a=e.getXDomainPadding(n),o=0,s=0;return i-r!=0||e.isCategorized()||(e.isTimeSeries()?(i=new Date(.5*i.getTime()),r=new Date(1.5*r.getTime())):(i=0===i?1:.5*i,r=0===r?-1:1.5*r)),(i||0===i)&&(o=e.isTimeSeries()?new Date(i.getTime()-a.left):i-a.left),(r||0===r)&&(s=e.isTimeSeries()?new Date(r.getTime()+a.right):r+a.right),[o,s]},e.prototype.updateXDomain=function(t,e,n,i,r){var a=this,o=a.config;return n&&(a.x.domain(r||a.d3.extent(a.getXDomain(t))),a.orgXDomain=a.x.domain(),o.zoom_enabled&&a.zoom.update(),a.subX.domain(a.x.domain()),a.brush&&a.brush.updateScale(a.subX)),e&&a.x.domain(r||(!a.brush||a.brush.empty()?a.orgXDomain:a.brush.selectionAsValue())),i&&a.x.domain(a.trimXDomain(a.x.orgDomain())),a.x.domain()},e.prototype.trimXDomain=function(t){var e=this.getZoomDomain(),n=e[0],i=e[1];return t[0]<=n&&(t[1]=+t[1]+(n-t[0]),t[0]=n),i<=t[1]&&(t[0]=+t[0]-(t[1]-i),t[1]=i),t},e.prototype.drag=function(t){var e,n,i,r,o,s,u,c,f=this,d=f.config,h=f.main,p=f.d3;f.hasArcType()||d.data_selection_enabled&&d.data_selection_multiple&&(e=f.dragStart[0],n=f.dragStart[1],i=t[0],r=t[1],o=Math.min(e,i),s=Math.max(e,i),u=d.data_selection_grouped?f.margin.top:Math.min(n,r),c=d.data_selection_grouped?f.height:Math.max(n,r),h.select("."+a.dragarea).attr("x",o).attr("y",u).attr("width",s-o).attr("height",c-u),h.selectAll("."+a.shapes).selectAll("."+a.shape).filter(function(t){return d.data_selection_isselectable(t)}).each(function(t,e){var n,i,r,d,h,g,y=p.select(this),v=y.classed(a.SELECTED),_=y.classed(a.INCLUDED),m=!1;if(y.classed(a.circle))n=1*y.attr("cx"),i=1*y.attr("cy"),h=f.togglePoint,m=ou&&(s=s.filter(function(t){return(""+t).indexOf(".")<0}));return s},e.prototype.getGridFilterToRemove=function(t){return t?function(e){var n=!1;return[].concat(t).forEach(function(t){("value"in t&&e.value===t.value||"class"in t&&e.class===t.class)&&(n=!0)}),n}:function(){return!0}},e.prototype.removeGridLines=function(t,e){var n=this.config,i=this.getGridFilterToRemove(t),r=function(t){return!i(t)},o=e?a.xgridLines:a.ygridLines,s=e?a.xgridLine:a.ygridLine;this.main.select("."+o).selectAll("."+s).filter(i).transition().duration(n.transition_duration).style("opacity",0).remove(),e?n.grid_x_lines=n.grid_x_lines.filter(r):n.grid_y_lines=n.grid_y_lines.filter(r)},e.prototype.initEventRect=function(){var t=this,e=t.config;t.main.select("."+a.chart).append("g").attr("class",a.eventRects).style("fill-opacity",0),t.eventRect=t.main.select("."+a.eventRects).append("rect").attr("class",a.eventRect),e.zoom_enabled&&t.zoom&&(t.eventRect.call(t.zoom).on("dblclick.zoom",null),e.zoom_initialRange&&t.eventRect.transition().duration(0).call(t.zoom.transform,t.zoomTransform(e.zoom_initialRange)))},e.prototype.redrawEventRect=function(){var t,e,n=this,i=n.d3,r=n.config;function o(){n.svg.select("."+a.eventRect).style("cursor",null),n.hideXGridFocus(),n.hideTooltip(),n.unexpandCircles(),n.unexpandBars()}t=n.width,e=n.height,n.main.select("."+a.eventRects).style("cursor",r.zoom_enabled?r.axis_rotated?"ns-resize":"ew-resize":null),n.eventRect.attr("x",0).attr("y",0).attr("width",t).attr("height",e).on("mouseout",r.interaction_enabled?function(){r&&(n.hasArcType()||o())}:null).on("mousemove",r.interaction_enabled?function(){var t,e,s,u,c;n.dragging||n.hasArcType(t)||(t=n.filterTargetsToShow(n.data.targets),e=i.mouse(this),s=n.findClosestFromTargets(t,e),!n.mouseover||s&&s.id===n.mouseover.id||(r.data_onmouseout.call(n.api,n.mouseover),n.mouseover=void 0),s?(u=n.isScatterOrStanfordType(s)||!r.tooltip_grouped?[s]:n.filterByX(t,s.x),c=u.map(function(t){return n.addName(t)}),n.showTooltip(c,this),r.point_focus_expand_enabled&&(n.unexpandCircles(),c.forEach(function(t){n.expandCircles(t.index,t.id,!1)})),n.expandBars(s.index,s.id,!0),n.showXGridFocus(c),(n.isBarType(s.id)||n.dist(s,e)=0}).classed(a.legendItemFocused,e).transition().duration(100).style("opacity",function(){var t=e?n.opacityForLegend:n.opacityForUnfocusedLegend;return t.call(n,n.d3.select(this))})},e.prototype.revertLegend=function(){var t=this,e=t.d3;t.legend.selectAll("."+a.legendItem).classed(a.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return t.opacityForLegend(e.select(this))})},e.prototype.showLegend=function(t){var e=this,n=e.config;n.legend_show||(n.legend_show=!0,e.legend.style("visibility","visible"),e.legendHasRendered||e.updateLegendWithDefaults()),e.removeHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("visibility","visible").transition().style("opacity",function(){return e.opacityForLegend(e.d3.select(this))})},e.prototype.hideLegend=function(t){var e=this,n=e.config;n.legend_show&&h(t)&&(n.legend_show=!1,e.legend.style("visibility","hidden")),e.addHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("opacity",0).style("visibility","hidden")},e.prototype.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},e.prototype.updateLegend=function(t,e,n){var i,r,o,s,u,l,f,h,p,g,y,v,_,m,x,b,w=this,S=w.config,A=4,T=10,P=0,C=0,M=10,E=S.legend_item_tile_width+5,L=0,k={},V={},O={},G=[0],R={},I=0;function N(e,n,i){var r,o,s=0===i,u=i===t.length-1,c=function(t,e){return w.legendItemTextBox[e]||(w.legendItemTextBox[e]=w.getTextRect(t.textContent,a.legendItem,t)),w.legendItemTextBox[e]}(e,n),l=c.width+E+(!u||w.isLegendRight||w.isLegendInset?T:0)+S.legend_padding,f=c.height+A,d=w.isLegendRight||w.isLegendInset?f:l,h=w.isLegendRight||w.isLegendInset?w.getLegendHeight():w.getLegendWidth();function p(t,e){e||(r=(h-L-d)/2)=P)&&(P=l),(!C||f>=C)&&(C=f),o=w.isLegendRight||w.isLegendInset?C:P,S.legend_equally?(Object.keys(V).forEach(function(t){V[t]=P}),Object.keys(O).forEach(function(t){O[t]=C}),(r=(h-o*t.length)/2)0&&0===b.size()&&(b=w.legend.insert("g","."+a.legendItem).attr("class",a.legendBackground).append("rect")),_=w.legend.selectAll("text").data(t).text(function(t){return d(S.data_names[t])?S.data_names[t]:t}).each(function(t,e){N(this,t,e)}),(y?_.transition():_).attr("x",r).attr("y",u),m=w.legend.selectAll("rect."+a.legendItemEvent).data(t),(y?m.transition():m).attr("width",function(t){return V[t]}).attr("height",function(t){return O[t]}).attr("x",o).attr("y",l),x=w.legend.selectAll("line."+a.legendItemTile).data(t),(y?x.transition():x).style("stroke",w.levelColor?function(t){return w.levelColor(w.cache[t].values[0].value)}:w.color).attr("x1",f).attr("y1",p).attr("x2",h).attr("y2",p),b&&(y?b.transition():b).attr("height",w.getLegendHeight()-12).attr("width",P*(I+1)+10),w.legend.selectAll("."+a.legendItem).classed(a.legendItemHidden,function(t){return!w.isTargetToShow(t)}),w.updateLegendItemWidth(P),w.updateLegendItemHeight(C),w.updateLegendStep(I),w.updateSizes(),w.updateScales(),w.updateSvgSize(),w.transformAll(v,n),w.legendHasRendered=!0},e.prototype.initRegion=function(){this.region=this.main.append("g").attr("clip-path",this.clipPath).attr("class",a.regions)},e.prototype.updateRegion=function(t){var e=this,n=e.config;e.region.style("visibility",e.hasArcType()?"hidden":"visible");var i=e.main.select("."+a.regions).selectAll("."+a.region).data(n.regions),r=i.enter().append("rect").attr("x",e.regionX.bind(e)).attr("y",e.regionY.bind(e)).attr("width",e.regionWidth.bind(e)).attr("height",e.regionHeight.bind(e)).style("fill-opacity",0);e.mainRegion=r.merge(i).attr("class",e.classRegion.bind(e)),i.exit().transition().duration(t).style("opacity",0).remove()},e.prototype.redrawRegion=function(t,e){var n=this,i=n.mainRegion;return[(t?i.transition(e):i).attr("x",n.regionX.bind(n)).attr("y",n.regionY.bind(n)).attr("width",n.regionWidth.bind(n)).attr("height",n.regionHeight.bind(n)).style("fill-opacity",function(t){return v(t.opacity)?t.opacity:.1})]},e.prototype.regionX=function(t){var e=this,n=e.config,i="y"===t.axis?e.y:e.y2;return"y"===t.axis||"y2"===t.axis?n.axis_rotated&&"start"in t?i(t.start):0:n.axis_rotated?0:"start"in t?e.x(e.isTimeSeries()?e.parseDate(t.start):t.start):0},e.prototype.regionY=function(t){var e=this,n=e.config,i="y"===t.axis?e.y:e.y2;return"y"===t.axis||"y2"===t.axis?n.axis_rotated?0:"end"in t?i(t.end):0:n.axis_rotated&&"start"in t?e.x(e.isTimeSeries()?e.parseDate(t.start):t.start):0},e.prototype.regionWidth=function(t){var e,n=this,i=n.config,r=n.regionX(t),a="y"===t.axis?n.y:n.y2;return(e="y"===t.axis||"y2"===t.axis?i.axis_rotated&&"end"in t?a(t.end):n.width:i.axis_rotated?n.width:"end"in t?n.x(n.isTimeSeries()?n.parseDate(t.end):t.end):n.width)n.bar_width_max?n.bar_width_max:i},e.prototype.getBars=function(t,e){return(e?this.main.selectAll("."+a.bars+this.getTargetSelectorSuffix(e)):this.main).selectAll("."+a.bar+(v(t)?"-"+t:""))},e.prototype.expandBars=function(t,e,n){n&&this.unexpandBars(),this.getBars(t,e).classed(a.EXPANDED,!0)},e.prototype.unexpandBars=function(t){this.getBars(t).classed(a.EXPANDED,!1)},e.prototype.generateDrawBar=function(t,e){var n=this.config,i=this.generateGetBarPoints(t,e);return function(t,e){var r=i(t,e),a=n.axis_rotated?1:0,o=n.axis_rotated?0:1,s="M "+r[0][a]+","+r[0][o]+" L"+r[1][a]+","+r[1][o]+" L"+r[2][a]+","+r[2][o]+" L"+r[3][a]+","+r[3][o]+" z";return s}},e.prototype.generateGetBarPoints=function(t,e){var n=this,i=e?n.subXAxis:n.xAxis,r=t.__max__+1,a=n.getBarW(i,r),o=n.getShapeX(a,r,t,!!e),s=n.getShapeY(!!e),u=n.getShapeOffset(n.isBarType,t,!!e),c=a*(n.config.bar_space/2),l=e?n.getSubYScale:n.getYScale;return function(t,e){var i=l.call(n,t.id)(0),r=u(t,e)||i,f=o(t),d=s(t);return n.config.axis_rotated&&(0=0&&(c+=s(r[o].value)-u))}),c}},e.prototype.isWithinShape=function(t,e){var n,i=this,r=i.d3.select(t);return i.isTargetToShow(e.id)?"circle"===t.nodeName?n=i.isStepType(e)?i.isWithinStep(t,i.getYScale(e.id)(e.value)):i.isWithinCircle(t,1.5*i.pointSelectR(e)):"path"===t.nodeName&&(n=!r.classed(a.bar)||i.isWithinBar(i.d3.mouse(t),t)):n=!1,n},e.prototype.getInterpolate=function(t){var e=this,n=e.d3,i={linear:n.curveLinear,"linear-closed":n.curveLinearClosed,basis:n.curveBasis,"basis-open":n.curveBasisOpen,"basis-closed":n.curveBasisClosed,bundle:n.curveBundle,cardinal:n.curveCardinal,"cardinal-open":n.curveCardinalOpen,"cardinal-closed":n.curveCardinalClosed,monotone:n.curveMonotoneX,step:n.curveStep,"step-before":n.curveStepBefore,"step-after":n.curveStepAfter};return e.isSplineType(t)?i[e.config.spline_interpolation_type]||i.cardinal:e.isStepType(t)?i[e.config.line_step_type]:i.linear},e.prototype.initLine=function(){this.main.select("."+a.chart).append("g").attr("class",a.chartLines)},e.prototype.updateTargetsForLine=function(t){var e,n,i=this,r=i.config,o=i.classChartLine.bind(i),s=i.classLines.bind(i),u=i.classAreas.bind(i),c=i.classCircles.bind(i),l=i.classFocus.bind(i);e=i.main.select("."+a.chartLines).selectAll("."+a.chartLine).data(t).attr("class",function(t){return o(t)+l(t)}),(n=e.enter().append("g").attr("class",o).style("opacity",0).style("pointer-events","none")).append("g").attr("class",s),n.append("g").attr("class",u),n.append("g").attr("class",function(t){return i.generateClass(a.selectedCircles,t.id)}),n.append("g").attr("class",c).style("cursor",function(t){return r.data_selection_isselectable(t)?"pointer":null}),t.forEach(function(t){i.main.selectAll("."+a.selectedCircles+i.getTargetSelectorSuffix(t.id)).selectAll("."+a.selectedCircle).each(function(e){e.value=t.values[e.index].value})})},e.prototype.updateLine=function(t){var e=this,n=e.main.selectAll("."+a.lines).selectAll("."+a.line).data(e.lineData.bind(e)),i=n.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color);e.mainLine=i.merge(n).style("opacity",e.initialOpacity.bind(e)).style("shape-rendering",function(t){return e.isStepType(t)?"crispEdges":""}).attr("transform",null),n.exit().transition().duration(t).style("opacity",0)},e.prototype.redrawLine=function(t,e,n){return[(e?this.mainLine.transition(n):this.mainLine).attr("d",t).style("stroke",this.color).style("opacity",1)]},e.prototype.generateDrawLine=function(t,e){var n=this,i=n.config,r=n.d3.line(),a=n.generateGetLinePoints(t,e),o=e?n.getSubYScale:n.getYScale,s=function(t){return(e?n.subxx:n.xx).call(n,t)},u=function(t,e){return i.data_groups.length>0?a(t,e)[0][1]:o.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x(u).y(s):r.x(s).y(u),i.line_connectNull||(r=r.defined(function(t){return null!=t.value})),function(t){var a,s=i.line_connectNull?n.filterRemoveNull(t.values):t.values,u=e?n.subX:n.x,c=o.call(n,t.id),l=0,f=0;return n.isLineType(t)?i.data_regions[t.id]?a=n.lineWithRegions(s,u,c,i.data_regions[t.id]):(n.isStepType(t)&&(s=n.convertValuesToStep(s)),a=r.curve(n.getInterpolate(t))(s)):(s[0]&&(l=u(s[0].x),f=c(s[0].value)),a=i.axis_rotated?"M "+f+" "+l:"M "+l+" "+f),a||"M 0 0"}},e.prototype.generateGetLinePoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,a=n.getShapeX(0,r,t,!!e),o=n.getShapeY(!!e),s=n.getShapeOffset(n.isLineType,t,!!e),u=e?n.getSubYScale:n.getYScale;return function(t,e){var r=u.call(n,t.id)(0),c=s(t,e)||r,l=a(t),f=o(t);return i.axis_rotated&&(00?a(t,e)[0][1]:o.call(n,t.id)(n.getAreaBaseValue(t.id))},c=function(t,e){return i.data_groups.length>0?a(t,e)[1][1]:o.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x0(u).x1(c).y(s):r.x(s).y0(i.area_above?0:u).y1(c),i.line_connectNull||(r=r.defined(function(t){return null!==t.value})),function(t){var e,a=i.line_connectNull?n.filterRemoveNull(t.values):t.values,o=0,s=0;return n.isAreaType(t)?(n.isStepType(t)&&(a=n.convertValuesToStep(a)),e=r.curve(n.getInterpolate(t))(a)):(a[0]&&(o=n.x(a[0].x),s=n.getYScale(t.id)(a[0].value)),e=i.axis_rotated?"M "+s+" "+o:"M "+o+" "+s),e||"M 0 0"}},e.prototype.getAreaBaseValue=function(){return 0},e.prototype.generateGetAreaPoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,a=n.getShapeX(0,r,t,!!e),o=n.getShapeY(!!e),s=n.getShapeOffset(n.isAreaType,t,!!e),u=e?n.getSubYScale:n.getYScale;return function(t,e){var r=u.call(n,t.id)(0),c=s(t,e)||r,l=a(t),f=o(t);return i.axis_rotated&&(00?(t=n.getShapeIndices(n.isLineType),e=n.generateGetLinePoints(t),n.circleY=function(t,n){return e(t,n)[0][1]}):n.circleY=function(t){return n.getYScale(t.id)(t.value)}},e.prototype.getCircles=function(t,e){return(e?this.main.selectAll("."+a.circles+this.getTargetSelectorSuffix(e)):this.main).selectAll("."+a.circle+(v(t)?"-"+t:""))},e.prototype.expandCircles=function(t,e,n){var i=this.pointExpandedR.bind(this);n&&this.unexpandCircles(),this.getCircles(t,e).classed(a.EXPANDED,!0).attr("r",i)},e.prototype.unexpandCircles=function(t){var e=this,n=e.pointR.bind(e);e.getCircles(t).filter(function(){return e.d3.select(this).classed(a.EXPANDED)}).classed(a.EXPANDED,!1).attr("r",n)},e.prototype.pointR=function(t){var e=this.config;return this.isStepType(t)?0:p(e.point_r)?e.point_r(t):e.point_r},e.prototype.pointExpandedR=function(t){var e=this.config;return e.point_focus_expand_enabled?p(e.point_focus_expand_r)?e.point_focus_expand_r(t):e.point_focus_expand_r?e.point_focus_expand_r:1.75*this.pointR(t):this.pointR(t)},e.prototype.pointSelectR=function(t){var e=this.config;return p(e.point_select_r)?e.point_select_r(t):e.point_select_r?e.point_select_r:4*this.pointR(t)},e.prototype.isWithinCircle=function(t,e){var n=this.d3,i=n.mouse(t),r=n.select(t),a=+r.attr("cx"),o=+r.attr("cy");return Math.sqrt(Math.pow(a-i[0],2)+Math.pow(o-i[1],2))0?e:320/(this.hasType("gauge")&&!t.gauge_fullCircle?2:1)},e.prototype.getCurrentPaddingTop=function(){var t=this.config,e=v(t.padding_top)?t.padding_top:0;return this.title&&this.title.node()&&(e+=this.getTitlePadding()),e},e.prototype.getCurrentPaddingBottom=function(){var t=this.config;return v(t.padding_bottom)?t.padding_bottom:0},e.prototype.getCurrentPaddingLeft=function(t){var e=this.config;return v(e.padding_left)?e.padding_left:e.axis_rotated?!e.axis_x_show||e.axis_x_inner?1:Math.max(s(this.getAxisWidthByAxisId("x",t)),40):!e.axis_y_show||e.axis_y_inner?this.axis.getYAxisLabelPosition().isOuter?30:1:s(this.getAxisWidthByAxisId("y",t))},e.prototype.getCurrentPaddingRight=function(){var t=this,e=t.config,n=0,i=t.isLegendRight?t.getLegendWidth()+20:0;return n=v(e.padding_right)?e.padding_right+1:e.axis_rotated?10+i:!e.axis_y2_show||e.axis_y2_inner?2+i+(t.axis.getY2AxisLabelPosition().isOuter?20:0):s(t.getAxisWidthByAxisId("y2"))+i,t.colorScale&&t.colorScale.node()&&(n+=t.getColorScalePadding()),n},e.prototype.getParentRectValue=function(t){for(var e,n=this.selectChart.node();n&&"BODY"!==n.tagName;){try{e=n.getBoundingClientRect()[t]}catch(i){"width"===t&&(e=n.offsetWidth)}if(e)break;n=n.parentNode}return e},e.prototype.getParentWidth=function(){return this.getParentRectValue("width")},e.prototype.getParentHeight=function(){var t=this.selectChart.style("height");return t.indexOf("px")>0?+t.replace("px",""):0},e.prototype.getSvgLeft=function(t){var e=this,n=e.config,i=n.axis_rotated||!n.axis_rotated&&!n.axis_y_inner,r=n.axis_rotated?a.axisX:a.axisY,o=e.main.select("."+r).node(),s=o&&i?o.getBoundingClientRect():{right:0},u=e.selectChart.node().getBoundingClientRect(),c=e.hasArcType(),l=s.right-u.left-(c?0:e.getCurrentPaddingLeft(t));return l>0?l:0},e.prototype.getAxisWidthByAxisId=function(t,e){var n=this.axis.getLabelPositionById(t);return this.axis.getMaxTickWidth(t,e)+(n.isInner?20:40)},e.prototype.getHorizontalAxisHeight=function(t){var e=this,n=e.config,i=30;return"x"!==t||n.axis_x_show?"x"===t&&n.axis_x_height?n.axis_x_height:"y"!==t||n.axis_y_show?"y2"!==t||n.axis_y2_show?("x"===t&&!n.axis_rotated&&n.axis_x_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-Math.abs(n.axis_x_tick_rotate))/180)),"y"===t&&n.axis_rotated&&n.axis_y_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-Math.abs(n.axis_y_tick_rotate))/180)),i+(e.axis.getLabelPositionById(t).isInner?0:10)+("y2"===t?-10:0)):e.rotated_padding_top:!n.legend_show||e.isLegendRight||e.isLegendInset?1:10:8},e.prototype.initBrush=function(t){var e=this,n=e.d3;return e.brush=(e.config.axis_rotated?n.brushY():n.brushX()).on("brush",function(){var t=n.event.sourceEvent;t&&"zoom"===t.type||e.redrawForBrush()}).on("end",function(){var t=n.event.sourceEvent;t&&"zoom"===t.type||e.brush.empty()&&t&&"end"!==t.type&&e.brush.clear()}),e.brush.updateExtent=function(){var t,n=this.scale.range();return t=e.config.axis_rotated?[[0,n[0]],[e.width2,n[1]]]:[[n[0],0],[n[1],e.height2]],this.extent(t),this},e.brush.updateScale=function(t){return this.scale=t,this},e.brush.update=function(t){this.updateScale(t||e.subX).updateExtent(),e.context.select("."+a.brush).call(this)},e.brush.clear=function(){e.context.select("."+a.brush).call(e.brush.move,null)},e.brush.selection=function(){return n.brushSelection(e.context.select("."+a.brush).node())},e.brush.selectionAsValue=function(t,n){var i,r;return t?(e.context&&(i=[this.scale(t[0]),this.scale(t[1])],r=e.context.select("."+a.brush),n&&(r=r.transition()),e.brush.move(r,i)),[]):(i=e.brush.selection()||[0,0],[this.scale.invert(i[0]),this.scale.invert(i[1])])},e.brush.empty=function(){var t=e.brush.selection();return!t||t[0]===t[1]},e.brush.updateScale(t)},e.prototype.initSubchart=function(){var t=this,e=t.config,n=t.context=t.svg.append("g").attr("transform",t.getTranslate("context")),i=e.subchart_show?"visible":"hidden";n.style("visibility",i),n.append("g").attr("clip-path",t.clipPathForSubchart).attr("class",a.chart),n.select("."+a.chart).append("g").attr("class",a.chartBars),n.select("."+a.chart).append("g").attr("class",a.chartLines),n.append("g").attr("clip-path",t.clipPath).attr("class",a.brush),t.axes.subx=n.append("g").attr("class",a.axisX).attr("transform",t.getTranslate("subx")).attr("clip-path",e.axis_rotated?"":t.clipPathForXAxis)},e.prototype.initSubchartBrush=function(){this.initBrush(this.subX).updateExtent(),this.context.select("."+a.brush).call(this.brush)},e.prototype.updateTargetsForSubchart=function(t){var e,n,i,r,o=this,s=o.context,u=o.config,c=o.classChartBar.bind(o),l=o.classBars.bind(o),f=o.classChartLine.bind(o),d=o.classLines.bind(o),h=o.classAreas.bind(o);u.subchart_show&&(r=s.select("."+a.chartBars).selectAll("."+a.chartBar).data(t),(i=r.enter().append("g").style("opacity",0)).merge(r).attr("class",c),i.append("g").attr("class",l),n=s.select("."+a.chartLines).selectAll("."+a.chartLine).data(t),(e=n.enter().append("g").style("opacity",0)).merge(n).attr("class",f),e.append("g").attr("class",d),e.append("g").attr("class",h),s.selectAll("."+a.brush+" rect").attr(u.axis_rotated?"width":"height",u.axis_rotated?o.width2:o.height2))},e.prototype.updateBarForSubchart=function(t){var e=this,n=e.context.selectAll("."+a.bars).selectAll("."+a.bar).data(e.barData.bind(e)),i=n.enter().append("path").attr("class",e.classBar.bind(e)).style("stroke","none").style("fill",e.color);n.exit().transition().duration(t).style("opacity",0).remove(),e.contextBar=i.merge(n).style("opacity",e.initialOpacity.bind(e))},e.prototype.redrawBarForSubchart=function(t,e,n){(e?this.contextBar.transition(Math.random().toString()).duration(n):this.contextBar).attr("d",t).style("opacity",1)},e.prototype.updateLineForSubchart=function(t){var e=this,n=e.context.selectAll("."+a.lines).selectAll("."+a.line).data(e.lineData.bind(e)),i=n.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color);n.exit().transition().duration(t).style("opacity",0).remove(),e.contextLine=i.merge(n).style("opacity",e.initialOpacity.bind(e))},e.prototype.redrawLineForSubchart=function(t,e,n){(e?this.contextLine.transition(Math.random().toString()).duration(n):this.contextLine).attr("d",t).style("opacity",1)},e.prototype.updateAreaForSubchart=function(t){var e=this,n=e.d3,i=e.context.selectAll("."+a.areas).selectAll("."+a.area).data(e.lineData.bind(e)),r=i.enter().append("path").attr("class",e.classArea.bind(e)).style("fill",e.color).style("opacity",function(){return e.orgAreaOpacity=+n.select(this).style("opacity"),0});i.exit().transition().duration(t).style("opacity",0).remove(),e.contextArea=r.merge(i).style("opacity",0)},e.prototype.redrawAreaForSubchart=function(t,e,n){(e?this.contextArea.transition(Math.random().toString()).duration(n):this.contextArea).attr("d",t).style("fill",this.color).style("opacity",this.orgAreaOpacity)},e.prototype.redrawSubchart=function(t,e,n,i,r,a,o){var s,u,c,l=this,f=l.d3,d=l.config;l.context.style("visibility",d.subchart_show?"visible":"hidden"),d.subchart_show&&(f.event&&"zoom"===f.event.type&&l.brush.selectionAsValue(l.x.orgDomain()),t&&(l.brush.empty()||l.brush.selectionAsValue(l.x.orgDomain()),s=l.generateDrawArea(r,!0),u=l.generateDrawBar(a,!0),c=l.generateDrawLine(o,!0),l.updateBarForSubchart(n),l.updateLineForSubchart(n),l.updateAreaForSubchart(n),l.redrawBarForSubchart(u,n,n),l.redrawLineForSubchart(c,n,n),l.redrawAreaForSubchart(s,n,n)))},e.prototype.redrawForBrush=function(){var t,e=this,n=e.x,i=e.d3;e.redraw({withTransition:!1,withY:e.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withEventRect:!1,withDimension:!1}),t=i.event.selection||e.brush.scale.range(),e.main.select("."+a.eventRect).call(e.zoom.transform,i.zoomIdentity.scale(e.width/(t[1]-t[0])).translate(-t[0],0)),e.config.subchart_onbrush.call(e.api,n.orgDomain())},e.prototype.transformContext=function(t,e){var n;e&&e.axisSubX?n=e.axisSubX:(n=this.context.select("."+a.axisX),t&&(n=n.transition())),this.context.attr("transform",this.getTranslate("context")),n.attr("transform",this.getTranslate("subx"))},e.prototype.getDefaultSelection=function(){var t=this,e=t.config,n=p(e.axis_x_selection)?e.axis_x_selection(t.getXDomain(t.data.targets)):e.axis_x_selection;return t.isTimeSeries()&&(n=[t.parseDate(n[0]),t.parseDate(n[1])]),n},e.prototype.initText=function(){this.main.select("."+a.chart).append("g").attr("class",a.chartTexts),this.mainText=this.d3.selectAll([])},e.prototype.updateTargetsForText=function(t){var e=this,n=e.classChartText.bind(e),i=e.classTexts.bind(e),r=e.classFocus.bind(e),o=e.main.select("."+a.chartTexts).selectAll("."+a.chartText).data(t),s=o.enter().append("g").attr("class",n).style("opacity",0).style("pointer-events","none");s.append("g").attr("class",i),s.merge(o).attr("class",function(t){return n(t)+r(t)})},e.prototype.updateText=function(t,e,n){var i=this,r=i.config,o=i.barOrLineData.bind(i),s=i.classText.bind(i),u=i.main.selectAll("."+a.texts).selectAll("."+a.text).data(o),c=u.enter().append("text").attr("class",s).attr("text-anchor",function(t){return r.axis_rotated?t.value<0?"end":"start":"middle"}).style("stroke","none").attr("x",t).attr("y",e).style("fill",function(t){return i.color(t)}).style("fill-opacity",0);i.mainText=c.merge(u).text(function(t,e,n){return i.dataLabelFormat(t.id)(t.value,t.id,e,n)}),u.exit().transition().duration(n).style("fill-opacity",0).remove()},e.prototype.redrawText=function(t,e,n,i,r){return[(i?this.mainText.transition(r):this.mainText).attr("x",t).attr("y",e).style("fill",this.color).style("fill-opacity",n?0:this.opacityForText.bind(this))]},e.prototype.getTextRect=function(t,e,n){var i,r=this.d3.select("body").append("div").classed("c3",!0),a=r.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),o=this.d3.select(n).style("font");return a.selectAll(".dummy").data([t]).enter().append("text").classed(e||"",!0).style("font",o).text(t).each(function(){i=this.getBoundingClientRect()}),r.remove(),i},e.prototype.generateXYForText=function(t,e,n,i){var r=this,a=r.generateGetAreaPoints(t,!1),o=r.generateGetBarPoints(e,!1),s=r.generateGetLinePoints(n,!1),u=i?r.getXForText:r.getYForText;return function(t,e){var n=r.isAreaType(t)?a:r.isBarType(t)?o:s;return u.call(r,n(t,e),t,this)}},e.prototype.getXForText=function(t,e,n){var i,r,a=this,o=n.getBoundingClientRect();return a.config.axis_rotated?(r=a.isBarType(e)?4:6,i=t[2][1]+r*(e.value<0?-1:1)):i=a.hasType("bar")?(t[2][0]+t[0][0])/2:t[0][0],null===e.value&&(i>a.width?i=a.width-o.width:i<0&&(i=4)),i},e.prototype.getYForText=function(t,e,n){var i,r=this,a=n.getBoundingClientRect();return r.config.axis_rotated?i=(t[0][0]+t[2][0]+.6*a.height)/2:(i=t[2][1],e.value<0||0===e.value&&!r.hasPositiveValue?(i+=a.height,r.isBarType(e)&&r.isSafari()?i-=3:!r.isBarType(e)&&r.isChrome()&&(i+=3)):i+=r.isBarType(e)?-3:-6),null!==e.value||r.config.axis_rotated||(ithis.height&&(i=this.height-4)),i},e.prototype.initTitle=function(){this.title=this.svg.append("text").text(this.config.title_text).attr("class",this.CLASS.title)},e.prototype.redrawTitle=function(){var t=this;t.title.attr("x",t.xForTitle.bind(t)).attr("y",t.yForTitle.bind(t))},e.prototype.xForTitle=function(){var t=this,e=t.config,n=e.title_position||"left";return n.indexOf("right")>=0?t.currentWidth-t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).width-e.title_padding.right:n.indexOf("center")>=0?(t.currentWidth-t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).width)/2:e.title_padding.left},e.prototype.yForTitle=function(){var t=this;return t.config.title_padding.top+t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).height},e.prototype.getTitlePadding=function(){return this.yForTitle()+this.config.title_padding.bottom},e.prototype.drawColorScale=function(){var t,e,n,i,r,o,s,u=this,c=u.d3,l=u.config,f=u.data.targets[0];if((t=isNaN(l.stanford_scaleWidth)?20:l.stanford_scaleWidth)<0)throw Error("Colorscale's barheight and barwidth must be greater than 0.");s=u.height-l.stanford_padding.bottom-l.stanford_padding.top,n=c.range(l.stanford_padding.bottom,s,5),o=c.scaleSequential(f.colors).domain([n[n.length-1],n[0]]),u.colorScale&&u.colorScale.remove(),u.colorScale=u.svg.append("g").attr("width",50).attr("height",s).attr("class",a.colorScale),u.colorScale.append("g").attr("transform","translate(0, ".concat(l.stanford_padding.top,")")).selectAll("bars").data(n).enter().append("rect").attr("y",function(t,e){return 5*e}).attr("x",0).attr("width",t).attr("height",5).attr("fill",function(t){return o(t)}),r=c.scaleLog().domain([f.minEpochs,f.maxEpochs]).range([n[0]+l.stanford_padding.top+n[n.length-1]+5-1,n[0]+l.stanford_padding.top]),i=c.axisRight(r),"pow10"===l.stanford_scaleFormat?i.tickValues([1,10,100,1e3,1e4,1e5,1e6,1e7]):p(l.stanford_scaleFormat)?i.tickFormat(l.stanford_scaleFormat):i.tickFormat(c.format("d")),p(l.stanford_scaleValues)&&i.tickValues(l.stanford_scaleValues(f.minEpochs,f.maxEpochs)),e=u.colorScale.append("g").attr("class","legend axis").attr("transform","translate(".concat(t,",0)")).call(i),"pow10"===l.stanford_scaleFormat&&e.selectAll(".tick text").text(null).filter(w).text(10).append("tspan").attr("dy","-.7em").text(function(t){return Math.round(Math.log(t)/Math.LN10)}),u.colorScale.attr("transform","translate(".concat(u.currentWidth-u.xForColorScale(),", 0)"))},e.prototype.xForColorScale=function(){return this.config.stanford_padding.right+this.colorScale.node().getBBox().width},e.prototype.getColorScalePadding=function(){return this.xForColorScale()+this.config.stanford_padding.left+20},e.prototype.isStanfordGraphType=function(){return"stanford"===this.config.data_type},e.prototype.initStanfordData=function(){var t,e,n,i=this.d3,r=this.config,a=this.data.targets[0];if(a.values.sort(T),t=a.values.map(function(t){return t.epochs}),n=isNaN(r.stanford_scaleMin)?i.min(t):r.stanford_scaleMin,e=isNaN(r.stanford_scaleMax)?i.max(t):r.stanford_scaleMax,n>e)throw Error("Number of minEpochs has to be smaller than maxEpochs");a.colors=p(r.stanford_colors)?r.stanford_colors:i.interpolateHslLong(i.hsl(250,1,.5),i.hsl(0,1,.5)),a.colorscale=i.scaleSequentialLog(a.colors).domain([n,e]),a.minEpochs=n,a.maxEpochs=e},e.prototype.getStanfordPointColor=function(t){var e=this.data.targets[0];return e.colorscale(t.epochs)},e.prototype.getCentroid=function(t){var e,n,i,r,a,o=S(t),s=0,u=0;for(e=0,n=t.length-1;e".concat(e?m(e):"x","").concat(t.x,"\n ").concat(n?m(n):"y","").concat(t.value,"\n ")},e.prototype.countEpochsInRegion=function(t){var e,n,i=this.data.targets[0];return e=i.values.reduce(function(t,e){return t+Number(e.epochs)},0),{value:n=i.values.reduce(function(e,n){return A(n,t)?e+Number(n.epochs):e},0),percentage:0!==n?(n/e*100).toFixed(1):0}};var S=function(t){var e,n,i,r,a=0;for(e=0,n=t.length-1;es!=r>s&&o<(a-n)*(s-i)/(r-i)+n&&(u=!u);return u},T=function(t,e){return t.epochse.epochs?1:0};return e.prototype.initStanfordElements=function(){var t=this;t.stanfordElements=t.main.select("."+a.chart).append("g").attr("class",a.stanfordElements),t.stanfordElements.append("g").attr("class",a.stanfordLines),t.stanfordElements.append("g").attr("class",a.stanfordTexts),t.stanfordElements.append("g").attr("class",a.stanfordRegions)},e.prototype.updateStanfordElements=function(t){var e,n,i,r,o,s,u=this,c=u.main,l=u.config,f=u.xvCustom.bind(u),d=u.yvCustom.bind(u),h=u.countEpochsInRegion.bind(u);(n=(e=c.select("."+a.stanfordLines).style("shape-rendering","geometricprecision").selectAll("."+a.stanfordLine).data(l.stanford_lines)).enter().append("g").attr("class",function(t){return a.stanfordLine+(t.class?" "+t.class:"")})).append("line").attr("x1",function(t){return l.axis_rotated?d(t,"value_y1"):f(t,"value_x1")}).attr("x2",function(t){return l.axis_rotated?d(t,"value_y2"):f(t,"value_x2")}).attr("y1",function(t){return l.axis_rotated?f(t,"value_x1"):d(t,"value_y1")}).attr("y2",function(t){return l.axis_rotated?f(t,"value_x2"):d(t,"value_y2")}).style("opacity",0),u.stanfordLines=n.merge(e),u.stanfordLines.select("line").transition().duration(t).attr("x1",function(t){return l.axis_rotated?d(t,"value_y1"):f(t,"value_x1")}).attr("x2",function(t){return l.axis_rotated?d(t,"value_y2"):f(t,"value_x2")}).attr("y1",function(t){return l.axis_rotated?f(t,"value_x1"):d(t,"value_y1")}).attr("y2",function(t){return l.axis_rotated?f(t,"value_x2"):d(t,"value_y2")}).style("opacity",1),e.exit().transition().duration(t).style("opacity",0).remove(),(s=(o=c.select("."+a.stanfordTexts).selectAll("."+a.stanfordText).data(l.stanford_texts)).enter().append("g").attr("class",function(t){return a.stanfordText+(t.class?" "+t.class:"")})).append("text").attr("x",function(t){return l.axis_rotated?d(t,"y"):f(t,"x")}).attr("y",function(t){return l.axis_rotated?f(t,"x"):d(t,"y")}).style("opacity",0),u.stanfordTexts=s.merge(o),u.stanfordTexts.select("text").transition().duration(t).attr("x",function(t){return l.axis_rotated?d(t,"y"):f(t,"x")}).attr("y",function(t){return l.axis_rotated?f(t,"x"):d(t,"y")}).text(function(t){return t.content}).style("opacity",1),o.exit().transition().duration(t).style("opacity",0).remove(),(r=(i=c.select("."+a.stanfordRegions).selectAll("."+a.stanfordRegion).data(l.stanford_regions)).enter().append("g").attr("class",function(t){return a.stanfordRegion+(t.class?" "+t.class:"")})).append("polygon").attr("points",function(t){return t.points.map(function(t){return[l.axis_rotated?d(t,"y"):f(t,"x"),l.axis_rotated?f(t,"x"):d(t,"y")].join(",")}).join(" ")}).style("opacity",0),r.append("text").attr("x",function(t){return u.getCentroid(t.points).x}).attr("y",function(t){return u.getCentroid(t.points).y}).style("opacity",0),u.stanfordRegions=r.merge(i),u.stanfordRegions.select("polygon").transition().duration(t).attr("points",function(t){return t.points.map(function(t){return[l.axis_rotated?d(t,"y"):f(t,"x"),l.axis_rotated?f(t,"x"):d(t,"y")].join(",")}).join(" ")}).style("opacity",function(t){return t.opacity?t.opacity:.2}),u.stanfordRegions.select("text").transition().duration(t).attr("x",function(t){return l.axis_rotated?d(u.getCentroid(t.points),"y"):f(u.getCentroid(t.points),"x")}).attr("y",function(t){return l.axis_rotated?f(u.getCentroid(t.points),"x"):d(u.getCentroid(t.points),"y")}).text(function(t){var e,n,i;return t.text?(u.isStanfordGraphType()&&(e=(i=h(t.points)).value,n=i.percentage),t.text(e,n)):""}).attr("text-anchor","middle").attr("dominant-baseline","middle").style("opacity",1),i.exit().transition().duration(t).style("opacity",0).remove()},e.prototype.initTooltip=function(){var t,e=this,n=e.config;if(e.tooltip=e.selectChart.style("position","relative").append("div").attr("class",a.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),n.tooltip_init_show){if(e.isTimeSeries()&&g(n.tooltip_init_x)){for(n.tooltip_init_x=e.parseDate(n.tooltip_init_x),t=0;t"+o),c=l.getStanfordPointColor(t[a]),u=m(f.data_epochs),s=t[a].epochs;else if(r||(o=m(d?d(t[a].x,t[a].index):t[a].x),r=""+(o||0===o?"":"")),void 0!==(s=m(p(t[a].value,t[a].ratio,t[a].id,t[a].index,t)))){if(null===t[a].name)continue;u=m(h(t[a].name,t[a].ratio,t[a].id,t[a].index)),c=l.levelColor?l.levelColor(t[a].value):i(t[a].id)}void 0!==s&&(r+="",r+="",r+="",r+="")}return r+"
"+o+"
"+u+""+s+"
"},e.prototype.tooltipPosition=function(t,e,n,i){var r,a,o,s,u,c=this,l=c.config,f=c.d3,d=c.hasArcType(),h=f.mouse(i);return d?(a=(c.width-(c.isLegendRight?c.getLegendWidth():0))/2+h[0],s=(c.hasType("gauge")?c.height:c.height/2)+h[1]+20):(r=c.getSvgLeft(!0),l.axis_rotated?(o=(a=r+h[0]+100)+e,u=c.currentWidth-c.getCurrentPaddingRight(),s=c.x(t[0].x)+20):(o=(a=r+c.getCurrentPaddingLeft(!0)+c.x(t[0].x)+20)+e,u=r+c.currentWidth-c.getCurrentPaddingRight(),s=h[1]+15),o>u&&(a-=o-u+20),s+n>c.currentHeight&&(s-=n+30)),s<0&&(s=0),{top:s,left:a}},e.prototype.showTooltip=function(t,n){var i,r,a,o=this,s=o.config,u=o.hasArcType(),c=t.filter(function(t){return t&&v(t.value)}),l=s.tooltip_position||e.prototype.tooltipPosition;0!==c.length&&s.tooltip_show&&(o.tooltip.html(s.tooltip_contents.call(o,t,o.axis.getXAxisTickFormat(),o.getYFormat(u),o.color)).style("display","block"),i=o.tooltip.property("offsetWidth"),r=o.tooltip.property("offsetHeight"),a=l.call(this,c,i,r,n),o.tooltip.style("top",a.top+"px").style("left",a.left+"px"))},e.prototype.hideTooltip=function(){this.tooltip.style("display","none")},e.prototype.setTargetType=function(t,e){var n=this,i=n.config;n.mapToTargetIds(t).forEach(function(t){n.withoutFadeIn[t]=e===i.data_types[t],i.data_types[t]=e}),t||(i.data_type=e)},e.prototype.hasType=function(t,e){var n=this.config.data_types,i=!1;return(e=e||this.data.targets)&&e.length?e.forEach(function(e){var r=n[e.id];(r&&r.indexOf(t)>=0||!r&&"line"===t)&&(i=!0)}):Object.keys(n).length?Object.keys(n).forEach(function(e){n[e]===t&&(i=!0)}):i=this.config.data_type===t,i},e.prototype.hasArcType=function(t){return this.hasType("pie",t)||this.hasType("donut",t)||this.hasType("gauge",t)},e.prototype.isLineType=function(t){var e=this.config,n=g(t)?t:t.id;return!e.data_types[n]||["line","spline","area","area-spline","step","area-step"].indexOf(e.data_types[n])>=0},e.prototype.isStepType=function(t){var e=g(t)?t:t.id;return["step","area-step"].indexOf(this.config.data_types[e])>=0},e.prototype.isSplineType=function(t){var e=g(t)?t:t.id;return["spline","area-spline"].indexOf(this.config.data_types[e])>=0},e.prototype.isAreaType=function(t){var e=g(t)?t:t.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[e])>=0},e.prototype.isBarType=function(t){var e=g(t)?t:t.id;return"bar"===this.config.data_types[e]},e.prototype.isScatterType=function(t){var e=g(t)?t:t.id;return"scatter"===this.config.data_types[e]},e.prototype.isStanfordType=function(t){var e=g(t)?t:t.id;return"stanford"===this.config.data_types[e]},e.prototype.isScatterOrStanfordType=function(t){return this.isScatterType(t)||this.isStanfordType(t)},e.prototype.isPieType=function(t){var e=g(t)?t:t.id;return"pie"===this.config.data_types[e]},e.prototype.isGaugeType=function(t){var e=g(t)?t:t.id;return"gauge"===this.config.data_types[e]},e.prototype.isDonutType=function(t){var e=g(t)?t:t.id;return"donut"===this.config.data_types[e]},e.prototype.isArcType=function(t){return this.isPieType(t)||this.isDonutType(t)||this.isGaugeType(t)},e.prototype.lineData=function(t){return this.isLineType(t)?[t]:[]},e.prototype.arcData=function(t){return this.isArcType(t.data)?[t]:[]},e.prototype.barData=function(t){return this.isBarType(t)?t.values:[]},e.prototype.lineOrScatterOrStanfordData=function(t){return this.isLineType(t)||this.isScatterType(t)||this.isStanfordType(t)?t.values:[]},e.prototype.barOrLineData=function(t){return this.isBarType(t)||this.isLineType(t)?t.values:[]},e.prototype.isSafari=function(){var t=window.navigator.userAgent;return t.indexOf("Safari")>=0&&t.indexOf("Chrome")<0},e.prototype.isChrome=function(){return window.navigator.userAgent.indexOf("Chrome")>=0},e.prototype.initZoom=function(){var t,e=this,n=e.d3,i=e.config;return e.zoom=n.zoom().on("start",function(){if("scroll"===i.zoom_type){var r=n.event.sourceEvent;r&&"brush"===r.type||(t=r,i.zoom_onzoomstart.call(e.api,r))}}).on("zoom",function(){if("scroll"===i.zoom_type){var t=n.event.sourceEvent;t&&"brush"===t.type||(e.redrawForZoom(),i.zoom_onzoom.call(e.api,e.x.orgDomain()))}}).on("end",function(){if("scroll"===i.zoom_type){var r=n.event.sourceEvent;r&&"brush"===r.type||r&&t.clientX===r.clientX&&t.clientY===r.clientY||i.zoom_onzoomend.call(e.api,e.x.orgDomain())}}),e.zoom.updateDomain=function(){return n.event&&n.event.transform&&e.x.domain(n.event.transform.rescaleX(e.subX).domain()),this},e.zoom.updateExtent=function(){return this.scaleExtent([1,1/0]).translateExtent([[0,0],[e.width,e.height]]).extent([[0,0],[e.width,e.height]]),this},e.zoom.update=function(){return this.updateExtent().updateDomain()},e.zoom.updateExtent()},e.prototype.zoomTransform=function(t){var e=[this.x(t[0]),this.x(t[1])];return this.d3.zoomIdentity.scale(this.width/(e[1]-e[0])).translate(-e[0],0)},e.prototype.initDragZoom=function(){var t=this,e=t.d3,n=t.config,i=t.context=t.svg,r=t.margin.left+20.5,o=t.margin.top+.5;if("drag"===n.zoom_type&&n.zoom_enabled){var s=function(e){return e&&e.map(function(e){return t.x.invert(e)})},u=t.dragZoomBrush=e.brushX().on("start",function(){t.api.unzoom(),t.svg.select("."+a.dragZoom).classed("disabled",!1),n.zoom_onzoomstart.call(t.api,e.event.sourceEvent)}).on("brush",function(){n.zoom_onzoom.call(t.api,s(e.event.selection))}).on("end",function(){if(null!=e.event.selection){var i=s(e.event.selection);n.zoom_disableDefaultBehavior||t.api.zoom(i),t.svg.select("."+a.dragZoom).classed("disabled",!0),n.zoom_onzoomend.call(t.api,i)}});i.append("g").classed(a.dragZoom,!0).attr("clip-path",t.clipPath).attr("transform","translate("+r+","+o+")").call(u)}},e.prototype.getZoomDomain=function(){var t=this.config,e=this.d3;return[e.min([this.orgXDomain[0],t.zoom_x_min]),e.max([this.orgXDomain[1],t.zoom_x_max])]},e.prototype.redrawForZoom=function(){var t=this,e=t.d3,n=t.config,i=t.zoom,r=t.x;n.zoom_enabled&&0!==t.filterTargetsToShow(t.data.targets).length&&(i.update(),n.zoom_disableDefaultBehavior||(t.isCategorized()&&r.orgDomain()[0]===t.orgXDomain[0]&&r.domain([t.orgXDomain[0]-1e-10,r.orgDomain()[1]]),t.redraw({withTransition:!1,withY:n.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),e.event.sourceEvent&&"mousemove"===e.event.sourceEvent.type&&(t.cancelClick=!0)))},b}()},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function r(t){return null!==t&&"function"==typeof t.getTime&&!isNaN(t.getTime())}function a(t){return/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?(([+-]\d\d:\d\d)|Z)?$/i.test(t)}e.testObject=r,e.testString=a,e.default=function(t){return"object"===(void 0===t?"undefined":i(t))?r(t):"string"==typeof t&&a(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Dataset=void 0;var i=p(n(8)),r=p(n(22)),a=p(n(23)),o=p(n(24)),s=p(n(25)),u=p(n(26)),c=p(n(27)),l=h(n(13)),f=n(5),d=h(n(28));function h(t){return t&&t.__esModule?t:{default:t}}function p(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}var g=e.Dataset=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this instanceof t==!1)return new t(e);this.matrix=[["Index"]],this.meta={type:void 0},this.config=e};g.prototype.data=function(t){return arguments.length?(this.matrix=t instanceof Array?t:null,this):this.matrix},g.prototype.set=function(t,e){if(arguments.length<2||t.length<2)throw Error("Incorrect arguments provided for #set method");var n="number"==typeof t[0]?t[0]:this.matrix[0].indexOf(t[0]),r="number"==typeof t[1]?t[1]:s.selectColumn.call(this,0).indexOf(t[1]),a=s.selectColumn.call(this,t[0]),o=s.selectRow.call(this,t[1]);return a.length<1&&(i.appendColumn.call(this,String(t[0])),n=this.matrix[0].length-1),o.length<1&&(i.appendRow.call(this,String(t[1])),r=this.matrix.length-1),this.matrix[r][n]=e,this},g.prototype.type=function(t){return arguments.length?(this.meta.type=t?String(t):void 0,this):this.meta.type},(0,f.extend)(g.prototype,i),(0,f.extend)(g.prototype,r),(0,f.extend)(g.prototype,a),(0,f.extend)(g.prototype,o),(0,f.extend)(g.prototype,s),(0,f.extend)(g.prototype,u),(0,f.extend)(g.prototype,c),(0,f.extend)(g.prototype,l.default),g.parser=(0,d.default)(g),e.default=g},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0);n(5);function r(t,e,n){var r=t.slice(e||0,n?n+1:t.length),a=0;return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||(a+=parseFloat(t))}),a/r.length}function a(t,e,n){var r=t.slice(e||0,n?n+1:t.length),a=[];return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||a.push(parseFloat(t))}),Math.max.apply(Math,a)}function o(t,e,n){var r=t.slice(e||0,n?n+1:t.length),a=[];return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||a.push(parseFloat(t))}),Math.min.apply(Math,a)}function s(t,e,n){var r=t.slice(e||0,n?n+1:t.length),a=0;return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||(a+=parseFloat(t))}),a}var u=function(t){return r(t,1)},c=u,l=function(t){return s(t,1)},f=l,d=function(t){return a(t,1)},h=d,p=function(t){return o(t,1)},g=p,y=function(t){return t[0]},v=y;e.default={average:r,maximum:a,minimum:o,sum:s,getColumnAverage:u,getRowAverage:c,getColumnSum:l,getRowSum:f,getColumnMaximum:d,getRowMaximum:h,getColumnMinimum:p,getRowMinimum:g,getColumnLabel:y,getRowIndex:v}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stripHtmlTags=function(t){if("string"!=typeof t)return t;return t.replace(/(<([^>]+)>)/gi,"")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.extendDeep=function t(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},e=t.element,n=t.label,i=void 0===n?"Download":n,r=t.type,o=void 0===r?"json":r,s=t.data;if([].concat(function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1)throw Error("Please provide image quality between 0 and 1");a.default.toBlob(e,{quality:n,bgcolor:i}).then(function(t){(0,o.saveAs)(t,"chart.jpeg")})}n||a.default.toBlob(e).then(function(t){(0,o.saveAs)(t,"chart.png")})};var i,r=n(41),a=(i=r)&&i.__esModule?i:{default:i},o=n(42)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.type,n=t.data,i=["json","csv"],r=e.toLowerCase();if(!i.includes(e))throw new Error("This type is not supported");var a=i[0],o="";"json"===r&&(o="data:text/json;charset=utf-8, "+encodeURIComponent(JSON.stringify(n)));"csv"===r&&(o=function(t){var e="";return t.forEach(function(n,i){n.forEach(function(t,i){e+=String(t).replace(/,/g,""),n.length>i+1&&(e+=",")}),t.length>i+1&&(e+="\n")}),"data:text/csv;charset=utf-8,"+encodeURIComponent(e)}(n),a=r);var s=document.createElement("a");s.setAttribute("href",o),s.setAttribute("download","chart."+a),document.body.appendChild(s),s.click(),document.body.removeChild(s)}},function(t,e,n){(function(e){var n,i,r,a,o;void 0===e&&(this.window||this.global),t.exports=(n=function(t,e){var n=document.createElement(t);return e&&n.classList.add(e),n},i=function(t){return t&&"function"==typeof t},r=function(t,e,n){var i;return function(){if(n=n||this,!i)return t.apply(n,arguments),i=!0,setTimeout(function(){i=!1},e)}},(o=(a=function(t,e){this.plugins=["ruler"],"string"==typeof t&&(t=document.querySelector(t)),this.input=t,this.config=Object.assign({},{type:"single",tooltips:"always",updateThrottle:30,formatTooltip:function(t){return t},classes:{input:"rangeable-input",container:"rangeable-container",vertical:"rangeable-vertical",progress:"rangeable-progress",handle:"rangeable-handle",track:"rangeable-track",multiple:"rangeable-multiple",disabled:"rangeable-disabled",tooltips:"rangeable-tooltips",tooltip:"rangeable-tooltip",visible:"rangeable-tooltips--visible"}},e),this.mouseAxis={x:"clientX",y:"clientY"},this.trackSize={x:"width",y:"height"},this.trackPos={x:"left",y:"top"},this.lastPos=0,this.double="double"===this.config.type||Array.isArray(this.config.value),this.touch="ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version="0.1.6",this.init(),this.onInit()}).prototype).init=function(){if(!this.input.rangeable){var t,e={min:0,max:100,step:1,value:this.input.value};for(t in e)this.input[t]||(this.input[t]=e[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?"y":"x",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},o.render=function(){var t=this,e=this.config,i=e.classes,r=n("div",i.container),a=n("div",i.track),o=n("div",i.progress),s=n("div",i.handle),u=n("div",i.tooltip);if(this.input.tabIndex=-1,this.double){s=[n("div",i.handle),n("div",i.handle)],u=[];for(var c=0;3>c;c++)u[c]=n("div",i.tooltip);s.forEach(function(t,n){t.index=n,o.appendChild(t),t.appendChild(u[n]),t.tabIndex=1,e.controls&&e.controls[n]&&e.controls[n].locked&&!0===e.controls[n].locked&&(t.locked=!0)}),e.vertical&&o.appendChild(s[0]),o.appendChild(u[2]),r.classList.add(i.multiple)}else o.appendChild(s),s.appendChild(u),s.tabIndex=1,e.controls&&e.controls.locked&&!0===e.controls.locked&&(s.locked=!0);if(r.appendChild(a),e.vertical&&r.classList.add(i.vertical),e.size&&(r.style[this.trackSize[this.axis]]=isNaN(e.size)?e.size:e.size+"px"),e.tooltips&&(r.classList.add(i.tooltips),"string"==typeof e.tooltips&&"always"===e.tooltips&&r.classList.add(i.visible)),this.nodes={container:r,track:a,progress:o,handle:s,tooltip:u},this.double){this.nodes.buffer=[];var l=n("div","rangeable-buffers");this.input.values.forEach(function(i,r){var o=n("div","rangeable-buffer");l.appendChild(o),t.nodes.buffer.push(o),a.appendChild(l),e.controls&&(t.limits=[{},{}],void 0!==e.controls[r].min&&(t.limits[r].min=e.controls[r].min),void 0!==e.controls[r].max&&(t.limits[r].max=e.controls[r].max))})}else s=n("div","rangeable-buffer"),a.appendChild(s),this.nodes.buffer=s,a.appendChild(s),e.controls&&(this.limits={},void 0!==e.controls.min&&(this.limits.min=e.controls.min),void 0!==e.controls.max&&(this.limits.max=e.controls.max));this.setLimits(e.controls),a.appendChild(o),this.input.parentNode.insertBefore(r,this.input),r.insertBefore(this.input,a),this.input.classList.add(i.input),this.bind(),this.update()},o.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},o.setValueFromPosition=function(t){var e=this.getLimits(),n=parseFloat(this.input.step),i=this.touch?t.touches[0][this.mouseAxis[this.axis]]:t[this.mouseAxis[this.axis]],r=i-this.rects.container[this.trackPos[this.axis]],a=this.rects.container[this.trackSize[this.axis]];return("mousedown"!==t.type||!(!this.double&&this.nodes.handle.contains(t.target)||this.double&&(this.nodes.handle[0].contains(t.target)||this.nodes.handle[1].contains(t.target))))&&(t=(this.config.vertical?(a-r)/a*100:r/a*100)*(e.max-e.min)/100+e.min,t=Math.ceil(t/n)*n,i>=this.lastPos&&(t-=n),parseFloat(t)!==parseFloat(this.startValue)&&(n=!1,this.double&&(n=this.activeHandle.index),t=this.limit(t,n),void this.setValue(t,n)))},o.start=function(t){return t.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add("dragging"),this.recalculate(),this.activeHandle=this.getHandle(t),!!this.activeHandle&&(this.activeHandle.classList.add("active"),this.setValueFromPosition(t),void(this.touch?(document.addEventListener("touchmove",this.events.move,!1),document.addEventListener("touchend",this.events.stop,!1),document.addEventListener("touchcancel",this.events.stop,!1)):(document.addEventListener("mousemove",this.events.move,!1),document.addEventListener("mouseup",this.events.stop,!1))))},o.move=function(t){this.setValueFromPosition(t),this.lastPos=this.touch?t.touches[0][this.mouseAxis[this.axis]]:t[this.mouseAxis[this.axis]]},o.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove("dragging"),this.onEnd(),this.activeHandle.classList.remove("active"),this.activeHandle=!1,this.touch?(document.removeEventListener("touchmove",this.events.move),document.removeEventListener("touchend",this.events.stop),document.removeEventListener("touchcancel",this.events.stop)):(document.removeEventListener("mousemove",this.events.move),document.removeEventListener("mouseup",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event("change")),this.startValue=null},o.keydown=function(t){var e=this,n=function(n){switch(t.key){case"ArrowRight":case"ArrowUp":e.stepUp(n);break;case"ArrowLeft":case"ArrowDown":e.stepDown(n)}};this.double?this.nodes.handle.forEach(function(t){t===document.activeElement&&n(t.index)}):this.nodes.handle===document.activeElement&&n()},o.stepUp=function(t){var e=parseFloat(this.input.step),n=this.getValue();this.double&&void 0!==t&&(n=n[t]),e=this.limit(parseFloat(n)+e,t),this.setValue(e,t)},o.stepDown=function(t){var e=parseFloat(this.input.step),n=this.getValue();this.double&&void 0!==t&&(n=n[t]),e=this.limit(parseFloat(n)-e,t),this.setValue(e,t)},o.limit=function(t,e){var n=this.input,i=this.getLimits();return t=parseFloat(t),this.double&&void 0!==e?(!e&&t>n.values[1]?t=n.values[1]:0this.limits[1].max?t=this.limits[1].max:tthis.limits[0].max?t=this.limits[0].max:tthis.limits.max?t=this.limits.max:ti.max?t=i.max:ts.right||o.bottoms.bottom),n.container.classList.toggle("combined-tooltip",o),o&&(n.tooltip[2].textContent=a[0]===a[1]?r.call(this,a[0]):r.call(this,a[0])+" - "+r.call(this,a[1]))}}else this.input.value=t,n.tooltip.textContent=r.call(this,t);this.setPosition(t,e),i&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event("input")),this.nativeEvent=!1)},o.native=function(){this.nativeEvent=!0,this.setValue()},o.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},o.setLimits=function(t){var e=this;if(void 0===t)return!1;this.limits||(this.limits=t);var n=function(t,e){void 0!==e.min&&(t.min=e.min),void 0!==e.max&&(t.max=e.max)};this.double?t.forEach(function(t,i){n(e.limits[i],t)}):n(this.limits,t),this.update()},o.setPosition=function(t){if(this.double){t=this.getPosition(this.input.values[0]);var e=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?"bottom":"left"]=t+"px",t=e-t}else t=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=t+"px"},o.getPosition=function(t){void 0===t&&(t=this.input.value);var e=this.getLimits();return(t-e.min)/(e.max-e.min)*this.rects.container[this.trackSize[this.axis]]},o.getHandle=function(t){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var e=this.rects,n=Math.abs(t[this.mouseAxis[this.axis]]-e.handle[0][this.trackPos[this.axis]]);return e=Math.abs(t[this.mouseAxis[this.axis]]-e.handle[1][this.trackPos[this.axis]]),(t=t.target.closest("."+this.config.classes.handle))||(t=n>e?this.nodes.handle[1]:this.nodes.handle[0]),!t.locked&&t},o.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?"touchstart":"mousedown",this.events.start,!1),this.double?this.nodes.handle.forEach(function(t){return t.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},o.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?"touchstart":"mousedown",this.events.start),this.double?this.nodes.handle.forEach(function(t){return t.removeAttribute("tabindex")}):this.nodes.handle.removeAttribute("tabindex"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},o.bind=function(){var t=this;this.events={},"start move stop update reset native keydown".split(" ").forEach(function(e){t.events[e]=t[e].bind(t)}),this.events.scroll=r(this.events.update,this.config.updateThrottle),this.events.resize=r(this.events.update,this.config.updateThrottle),document.addEventListener("scroll",this.events.scroll,!1),window.addEventListener("resize",this.events.resize,!1),document.addEventListener("keydown",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?"touchstart":"mousedown",this.events.start,!1),this.input.addEventListener("input",this.events.native,!1),this.input.form&&this.input.form.addEventListener("reset",this.events.reset,!1)},o.unbind=function(){document.removeEventListener("scroll",this.events.scroll),window.removeEventListener("resize",this.events.resize),document.removeEventListener("keydown",this.events.keydown),this.nodes.container.removeEventListener(this.touch?"touchstart":"mousedown",this.events.start),this.input.removeEventListener("input",this.events.native),this.input.form&&this.input.form.removeEventListener("reset",this.events.reset),this.events=null},o.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},o.onInit=function(){i(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},o.onStart=function(){i(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},o.onChange=function(){i(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},o.onEnd=function(){i(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},a)}).call(this,n(7))},function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.Dataset=e.Dataviz=e.keenGlobals=e.extendKeenGlobalObject=void 0;var i=n(21);Object.defineProperty(e,"Dataviz",{enumerable:!0,get:function(){return i.Dataviz}}),Object.defineProperty(e,"Dataset",{enumerable:!0,get:function(){return i.Dataset}});var r=void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};(e.extendKeenGlobalObject=function(t){t.KeenDataviz=i.Dataviz,t.KeenDataset=i.Dataset,t.Keen=t.Keen||{},t.Keen.Dataset=i.Dataset,t.Keen.Dataviz=i.Dataviz})(r);e.keenGlobals=void 0;"undefined"!=typeof webpackKeenGlobals&&(e.keenGlobals=webpackKeenGlobals),e.default=i.Dataviz}).call(this,n(7))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Dataset=e.Dataviz=void 0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=Object.assign||function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};if(this instanceof t==!1)return new t(n);this.c3=s.default,this.d3=o;var i={showDeprecationWarnings:!0,showLoadingSpinner:!1,container:void 0,containerElement:void 0,title:void 0,showTitle:!0,subtitle:void 0,notes:void 0,theme:"keen-dataviz",colors:["#00bbde","#fe6672","#eeb058","#8a8ad6","#ff855c","#00cfbb","#5a9eed","#73d483","#c879bb","#0099b6","#d74d58","#cb9141","#6b6bb6","#d86945","#00aa99","#4281c9","#57b566","#ac5c9e","#27cceb","#ff818b","#f6bf71","#9b9be1","#ff9b79","#26dfcd","#73aff4","#87e096","#d88bcb"],colorMapping:{},ui:{executionMetadata:!0},utils:{clickToCopyToClipboard:!0},indexBy:"timeframe.start",labels:[],labelMapping:{},labelMappingRegExp:void 0,errorMapping:{},showErrorMessages:!0,library:"default",sortGroups:void 0,sortIntervals:void 0,results:void 0,type:void 0,stacked:!1,dateFormat:void 0,legend:{show:!0,position:"right",alignment:"top",label:{textMaxLength:12},pagination:{offset:0,limit:5},tooltip:{show:!0,pointer:!0},sort:void 0},axis:{},color:{},size:{},padding:{top:15},point:{focus:{expand:{enabled:!1}},r:2,show:!0,sensitivity:300},tooltip:{horizontal:!0,format:{}},transition:{},data:{order:null,selection:{enabled:!0,draggable:!0,multiple:!0},onselected:function(t,n){var i=e.view._artifacts.c3.selected().reduce(function(t,e){return t+e.value},0);(0,m.default)(i)}},grid:{y:{show:!0}},partialIntervalIndicator:{show:void 0,className:"partial-interval-indicator"},timezone:"UTC",table:{schema:"static"},renderOnVisible:!1,funnel:{lines:!0,resultValues:!0,percents:{show:!1,countingMethod:"absolute",decimals:0},marginBetweenElements:!1,hover:!0,effect3d:"both-sides",minimalSize:!1},react:!1,range:!1,sparkline:!1,choropleth:{map:"world",borders:{show:!0,size:.5,color:"#000"},showSlider:!1},heatmap:{}};this.config=r({},(0,p.extendDeep)(i,n)),n.palette&&(x.default[n.palette]||console.log("Colors pallete not found",n.palette),this.config.colors=x.default[n.palette].colors),this.config.type&&(this.config.type=M(this.config.type)),this.config.type&&this.config.type.includes("-range")&&(this.config.range=!0,this.config.type=this.config.type.replace("-range",""),this.config.legend.show=!1,this.config.stacking="normal",this.config.labels=["Max","Min"],this.config.colors=[this.config.colors[0],this.config.colors[0]]),this.config.stacking&&(this.config.stacked=!0),this.config.sparkline&&(this.config.legend.show=!1,this.config.axis={x:{show:!1},y:{show:!1}},this.config.grid={x:{show:!1},y:{show:!1}}),this.config.container&&this.el(this.config.container),void 0===n.legend||n.legend||(this.config.legend=r({},n,{show:!1})),n.color&&n.color.pattern&&(this.config.colors=n.color.pattern),this.config.legend&&this.config.legend.tooltip&&!1===this.config.legend.tooltip.show&&void 0===this.config.tooltip.show&&(this.config.tooltip={show:!1}),this.dataset=new a.Dataset(this.config),this.view={_prepared:!1,_rendered:!1,_artifacts:{}},t.visuals.push(this),this.config.showLoadingSpinner&&this.prepare(),this.config.results&&this.render(this.config.results),this.config.firstVisibilityState=document.visibilityState,this.config.utils.clickToCopyToClipboard||(this.config.data.onselected=function(){}),n.data&&n.data.onselected&&(this.config.data.onselected=function(t,i){if(n.data.onselected.bind(null,t,i)(),e.config.utils.clickToCopyToClipboard){var r=e.view._artifacts.c3.selected().reduce(function(t,e){return t+e.value},0);(0,m.default)(r)}})};function S(t){2!==t.data()[0].length||(0,f.default)(t.data()[1][0])?t.dataset.updateRow(0,function(e,n){return n>0&&t.config.labels[n-1]?(0,d.stripHtmlTags)(String(t.config.labels[n-1])):(0,d.stripHtmlTags)(e)}.bind(t)):t.dataset.updateColumn(0,function(e,n){return t.config.labels[n-1]?(0,d.stripHtmlTags)(String(t.config.labels[n-1])):(0,d.stripHtmlTags)(e)}.bind(t))}function A(t){var e=t.datavizInstance,n=t.value;if(e.config.labelMappingRegExp){var i=n;return e.config.labelMappingRegExp.forEach(function(t){t.length>1&&(t[0].test(n)&&(i=t[1]))}),(0,d.stripHtmlTags)(i)}return e.config.labelMapping[n]?(0,d.stripHtmlTags)(String(e.config.labelMapping[n])):(0,d.stripHtmlTags)(n)}function T(t){t.config.labelMappingDimension||(2!==t.data()[0].length||(0,f.default)(t.data()[1][0])?t.config.labelMappingDimension="column":t.config.labelMappingDimension="row"),"row"!==t.config.labelMappingDimension&&"both"!==t.config.labelMappingDimension||t.dataset.updateColumn(0,function(e){return A({datavizInstance:t,value:e})}.bind(t)),"column"!==t.config.labelMappingDimension&&"both"!==t.config.labelMappingDimension||t.dataset.updateRow(0,function(e){return A({datavizInstance:t,value:e})}.bind(t))}function P(t){t.config.sortGroups&&t.data().length>1&&((0,f.default)(t.data()[1][0])?t.dataset.sortColumns(t.config.sortGroups,t.dataset.getColumnSum):t.dataset.sortRows(t.config.sortGroups,t.dataset.getRowSum))}function C(t){t.config.sortIntervals&&t.dataset.sortRows(t.config.sortIntervals)}function M(t){return{areachart:"area",barchart:"horizontal-bar",columnchart:"bar",linechart:"line",piechart:"pie"}[t]||t}function E(t){"undefined"==typeof document&&"undefined"!=typeof window?(null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function t(){document.removeEventListener("DOMContentLoaded",t,!1),document.readyState="complete"},!1),document.readyState="loading"),function t(e){/in/.test(document.readyState)?setTimeout(function(){t(e)},9):e()}(t)):t()}w.libraries={default:{}},"undefined"!=typeof window&&(w.libraries.default=(0,h.default)(w)),w.visuals=[],w.register=function(t,e){w.libraries[t]=w.libraries[t]||{},(0,l.each)(e,function(e,n){w.libraries[t][n]=e})},w.find=function(t){if(!arguments.length)return w.visuals;var e=t.nodeName?t:document.querySelector(t),n=null;return(0,l.each)(w.visuals,function(t){if(e==t.config.container)return n=t,!1}),n},w.prototype.attributes=function(t){if(this.config.showDeprecationWarnings&&console.log(".attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })"),!arguments.length)return this.config;var e=this.config;return(0,l.each)(t,function(t,n){"chartType"===n&&(n="type"),e[n]=t}),this},w.prototype.call=function(t){return t.call(this),this},w.prototype.chartOptions=function(t){return this.config.showDeprecationWarnings&&console.log(".chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })"),arguments.length?(this.config=(0,p.extendDeep)(this.config,t),this):this.config},w.prototype.colors=function(t){return this.config.showDeprecationWarnings&&console.log(".colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })"),arguments.length?(this.config.colors=t instanceof Array?t:[],this):this.config.colors},w.prototype.colorMapping=function(t){this.config.showDeprecationWarnings&&console.log(".colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })");var e=this;return arguments.length?(null===t?this.config.colorMapping={}:"object"===(void 0===t?"undefined":i(t))&&(0,l.each)(t,function(t,n){e.config.colorMapping[n]=t||null}),this):this.config.colorMapping},w.prototype.data=c.default,w.prototype.dateFormat=function(t){return this.config.showDeprecationWarnings&&console.log(".dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })"),arguments.length?(this.config.dateFormat="string"==typeof t||"function"==typeof t?t:void 0,this):this.config.dateFormat},w.prototype.destroy=function(){var t=this.library(),e=this.config.type,n=this.el();return w.libraries[t]&&w.libraries[t][e]&&w.libraries[t][e].destroy.call(this),n&&(n.innerHTML=""),this.view._prepared=!1,this.view._rendered=!1,this.view._artifacts={},this},w.prototype.el=function(t){var e=this;return arguments.length?(E(function(){t&&null!==t?t.nodeName?e.config.containerElement=t:document.querySelector&&(e.config.containerElement=document.querySelector(t)):e.config.containerElement=void 0}),this):this.config.containerElement},w.prototype.height=function(t){return this.config.showDeprecationWarnings&&console.log(".height() is deprecated - use CSS classes"),this},w.prototype.indexBy=function(t){return this.config.showDeprecationWarnings&&console.log(".indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })"),arguments.length?(this.config.indexBy=t?String(t):"timeframe.start",this):this.config.indexBy},w.prototype.labels=function(t){return this.config.showDeprecationWarnings&&console.log(".labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })"),arguments.length?(this.config.labels=t instanceof Array?t:[],S(this),this):this.config.labels},w.prototype.labelMapping=function(t){return this.config.showDeprecationWarnings&&console.log(".labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })"),arguments.length?(null===t?this.config.labelMapping={}:"object"===(void 0===t?"undefined":i(t))&&(0,l.each)(t,function(t,e){this.config.labelMapping[e]=t||null}.bind(this)),T(this),this):this.config.labelMapping},w.prototype.library=function(t){return arguments.length?(this.config.library=t?String(t):null,this):this.config.library},w.prototype.message=function(){if(this.view._rendered&&this.destroy(),this.el()){this.el().innerHTML="";var t=w.libraries.default.message;t.render&&t.render.apply(this,arguments)}return this},w.prototype.notes=function(t){return this.config.showDeprecationWarnings&&console.log(".notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })"),arguments.length?(this.config.notes=t?String(t):null,this):this.config.notes},w.prototype.prepare=function(){var t=this;if(!this.el())throw this.config.container+" not found. A DOM parent element is required to mount the chart.";return E(function(){if(t.view._rendered&&t.destroy(),t.el()){t.el().innerHTML="";var e=w.libraries.default.spinner;e.render&&e.render.call(t),t.view._prepared=!0}}),this},w.prototype.render=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,n=this;if(e){var i=e[0]||e;if(i.query&&i.query.interval&&i.query.timeframe&&"string"==typeof i.query.timeframe&&i.query.timeframe.includes("this_")&&this.config.partialIntervalIndicator&&void 0===this.config.partialIntervalIndicator.show&&(this.config.partialIntervalIndicator.show=!0),Array.isArray(e)){var r=e.map(function(t){return t.query.timeframe});return r.forEach(function(t){if(r.find(function(e){return JSON.stringify(e)!==JSON.stringify(t)})){var e="Timeframes of the queries should be the same";throw console.error(e),e}}),n.data(e[0]).call(function(){var i=e[0];t.dataset.deleteColumn(1);var r=!0,o=!1,s=void 0;try{for(var u,c=e[Symbol.iterator]();!(r=(u=c.next()).done);r=!0){var l=u.value,f=i.query.event_collection+" "+i.query.analysis_type,d=a.Dataset.parser("interval")(l);n.dataset.appendColumn(f,d.selectColumn(1).slice(1))}}catch(t){o=!0,s=t}finally{try{!r&&c.return&&c.return()}finally{if(o)throw s}}}).render()}return n.data(e).render()}(this.config.labelMapping&&Object.keys(this.config.labelMapping).length>0||this.config.labelMappingRegExp&&this.config.labelMappingRegExp.length>0)&&T(n),this.config.labels&&Object.keys(this.config.labels).length>0&&S(n),this.config.sortGroups&&P(n),this.config.sortIntervals&&C(n);var o=w.libraries.default.spinner,s=this.config.library,u=this.config.type,c=this.el();if(!c||void 0===c){var l=this.config.container+" not found. A DOM parent element is required to mount the chart.";throw console.error(l),l}var f=n;return n.config.renderAsPromise&&(f=new Promise(function(e,i){var r=t.config.onrendered;n.config.onrendered=function(){r&&r(),e(n)}})),E(function(){var t=n.execution_metadata&&n.config.ui&&n.config.ui.executionMetadata,e=n.config.ui&&n.config.ui.buttons&&n.config.ui.buttons.download&&n.config.ui.buttons.download.type;if(n.view._prepared&&o.destroy&&o.destroy.apply(n,arguments),c.innerHTML="","undefined"===w.libraries[s]){var i="Incorrect library";throw n.message(i),i}if(void 0===w.libraries[s][u]){var r="Incorrect chart type",a=this.config.errorMapping[r]||r;throw n.message(a),r}if(function(t,e){var n="",i="",r="";"top"!==e.legend.position&&"bottom"!==e.legend.position||(i="c3-chart-100-percent");e.range&&(r="keen-dataviz-range");var a='
',o="horizontal",s="center";["left","center","right"].includes(e.legend.alignment)&&(s=e.legend.alignment);"left"!==e.legend.position&&"right"!==e.legend.position||(o="vertical",["top","middle","bottom"].includes(e.legend.alignment)&&(s=e.legend.alignment));e.legend&&e.legend.show&&(a="top"===e.legend.position||"left"===e.legend.position?'
'+a:a+'
');e.react||(n+='
');e.title&&e.showTitle&&(n+='
'+e.title+"
");e.subtitle&&(n+='
'+e.subtitle+"
");n+='
'+a+"
",e.notes&&(n+='
'+e.notes+"
");e.react||(n+="
");t.innerHTML=n}(c,n.config),e&&(0,v.default)({element:c,data:n.dataset.matrix,type:n.config.ui.buttons.download.type,label:n.config.ui.buttons.download.label}),t&&(0,_.default)({element:c,data:n.execution_metadata}),n.config.renderOnVisible&&"undefined"!=typeof IntersectionObserver){new IntersectionObserver(function(t,e){t.forEach(function(t){t.isIntersecting&&(n.view._rendered||(w.libraries[s][u].render.call(n),n.view._rendered=!0))})}).observe(c)}else{if("hidden"===n.config.firstVisibilityState&&"undefined"!=typeof document){var l=void 0,f=void 0;void 0!==document.hidden?(l="hidden",f="visibilitychange"):void 0!==document.msHidden?(l="msHidden",f="msvisibilitychange"):void 0!==document.webkitHidden&&(l="webkitHidden",f="webkitvisibilitychange");void 0===document.addEventListener&&void 0===l||document.addEventListener(f,function(){!document[l]&&n.view._artifacts.c3&&n.view._artifacts.c3.load(n.dataset.matrix)},{once:!0})}w.libraries[s][u].render.call(n),n.view._rendered=!0}}),f},w.prototype.sortGroups=function(t){return this.config.showDeprecationWarnings&&console.log(".sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })"),arguments.length?(this.config.sortGroups=t?String(t):null,P(this),this):this.config.sortGroups},w.prototype.sortIntervals=function(t){return this.config.showDeprecationWarnings&&console.log(".sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })"),arguments.length?(this.config.sortIntervals=t?String(t):null,C(this),this):this.config.sortIntervals},w.prototype.stacked=function(t){return this.config.showDeprecationWarnings&&console.log(".stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })"),arguments.length?(this.config.stacked=!!t,this):this.config.stacked},w.prototype.theme=function(t){return this.config.showDeprecationWarnings&&console.log(".theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })"),arguments.length?(this.config.theme=t?String(t):null,this):this.config.theme},w.prototype.title=function(t){return this.config.showDeprecationWarnings&&console.log(".title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })"),arguments.length?(this.config.title=t?String(t):null,this):this.config.title},w.prototype.type=function(t){return this.config.showDeprecationWarnings&&console.log(".type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })"),arguments.length?(this.config.type=t?M(t):null,this):this.config.type},w.prototype.update=function(){var t=this.config.library,e=this.config.type,n=this.el();return t&&e&&n&&w.libraries[t][e].update&&w.libraries[t][e].update.apply(this,arguments),this},w.prototype.width=function(t){return this.config.showDeprecationWarnings&&console.log(".width() is deprecated - use CSS classes"),this},w.prototype.exportImage=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.quality,n=void 0===e?0:e,i=t.bgcolor,r=void 0===i?"#fff":i;(0,g.default)({node:this.config.containerElement,quality:n,bgcolor:r})},w.prototype.exportData=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"json";(0,y.default)({data:this.dataset.matrix,type:t})},w.prototype.chartType=w.prototype.type,w.prototype.error=w.prototype.message,w.prototype.parseRawData=w.prototype.data,w.prototype.parseRequest=function(){return this},w.prototype.initialize=function(){return this},w.version=u.default.version,e.default=w},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.deleteColumn=function(t){var e=this,n="number"==typeof t?t:this.matrix[0].indexOf(t);n>-1&&(0,i.each)(e.matrix,function(t,i){e.matrix[i].splice(n,1)});return e},e.deleteRow=function(t){var e="number"==typeof t?t:this.selectColumn(0).indexOf(t);e>-1&&this.matrix.splice(e,1);return this};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.filterColumns=function(t){var e=this,n=[];return(0,i.each)(e.matrix,function(t,e){n.push([])}),(0,i.each)(e.matrix[0],function(r,a){var o=e.selectColumn(a);(0==a||t.call(e,o,a))&&(0,i.each)(o,function(t,e){n[e].push(t)})}),e.data(n),e},e.filterRows=function(t){var e=this,n=[];return(0,i.each)(e.matrix,function(i,r){(0==r||t.call(e,i,r))&&n.push(i)}),e.data(n),e};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.insertColumn=function(t,e,n){var i=this,a=void 0!==e?e:null;"function"==typeof n?(i.matrix[0].splice(t,0,a),(0,r.each)(i.matrix,function(e,r){var a;r>0&&(void 0===(a=n.call(i,e,r))&&(a=null),i.matrix[r].splice(t,0,a))})):(!n||n instanceof Array)&&((n=n||[]).length<=i.matrix.length-1?n=n.concat((0,o.default)(i.matrix.length-1-n.length)):(0,r.each)(n,function(t,e){i.matrix.length-10&&(r=i.selectColumn(e),void 0===(o=n.call(i,r,e))&&(o=null),a.push(o))}),i.matrix.splice(t,0,a)):(!n||n instanceof Array)&&((n=n||[]).length<=i.matrix[0].length-1?n=n.concat((0,o.default)(i.matrix[0].length-1-n.length)):(0,r.each)(n,function(t,e){i.matrix[0].length-1-1&&void 0!==this.matrix[0][n]&&(0,i.each)(this.matrix,function(t,i){e.push(t[n])});return e},e.selectRow=function(t){var e=[],n="number"==typeof t?t:this.selectColumn(0).indexOf(t);n>-1&&void 0!==this.matrix[n]&&(e=this.matrix[n]);return e};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sortColumns=function(t,e){var n=this,i=this.matrix[0].slice(1),a=[],s=e||o.default.getColumnLabel;return(0,r.each)(i,function(t,e){a.push(n.selectColumn(e+1).slice(0))}),a.sort(function(e,i){var r=s.call(n,e)>s.call(n,i);return r?"asc"===t?1:-1:r?0:"asc"===t?-1:1}),(0,r.each)(a,function(t,e){n.deleteColumn(e+1).insertColumn(e+1,t[0],t.slice(1))}),n},e.sortRows=function(t,e){var n=this,i=this.matrix.slice(0,1),r=this.matrix.slice(1),a=e||o.default.getRowIndex;return r.sort(function(e,i){var r=a.call(n,e)>a.call(n,i);return r?"asc"===t?1:-1:r?0:"asc"===t?-1:1}),n.data(i.concat(r)),n};var i,r=n(0),a=n(13),o=(i=a)&&i.__esModule?i:{default:i}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.updateColumn=function(t,e){var n=this,i="number"==typeof t?t:this.matrix[0].indexOf(t);i>-1&&("function"==typeof e?(0,r.each)(n.data(),function(t,r){var a;r>0&&void 0!==(a=e.call(n,t[i],r,t))&&(n.matrix[r][i]=a)}):(!e||e instanceof Array)&&((e=e||[]).length<=n.data().length-1?e=e.concat((0,o.default)(n.data().length-1-e.length)):(0,r.each)(e,function(t,i){n.matrix.length-1-1&&("function"==typeof e?(0,r.each)(n.data()[i],function(t,r){var a=n.selectColumn(r),o=e.call(n,t,r,a);void 0!==o&&(n.matrix[i][r]=o)}):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix[0].length-1?e=e.concat((0,o.default)(n.matrix[0].length-1-e.length)):(0,r.each)(e,function(t,i){n.matrix[0].length-1 stats.json",analyze:"webpack-bundle-analyzer stats.json /dist",version:"npm run build && git add .",postversion:"git push && git push --tags && npm publish",test:"NODE_ENV=test jest","test:watch":"NODE_ENV=test jest --watch"},repository:{type:"git",url:"https://github.com/keen/keen-dataviz.js.git"},bugs:"https://github.com/keen/keen-dataviz.js/issues",author:"Keen.IO (https://keen.io/)",contributors:["Dustin Larimer (https://github.com/dustinlarimer)","Joanne Cheng (https://github.com/joannecheng)","Eric Anderson (https://github.com/aroc)","Joe Wegner (https://github.com/josephwegner)","Sara Falkoff (https://github.com/adamkasprowicz)","Dariusz Łacheta (https://github.com/dariuszlacheta)"],homepage:"https://keen.io",keywords:["d3","c3","Analytics","Stats","Statistics","Visualization","Visualizations","Data Visualization","Chart","Charts","Charting","Svg","Dataviz","Plots","Graphs","Funnels"],dependencies:{c3:"^0.7.2",d3:"^5.11.0","dom-to-image":"^2.6.0","file-saver":"^2.0.1","promise-polyfill":"^8.0.0",rangeable:"^0.1.6"},devDependencies:{autoprefixer:"^8.2.0","babel-loader":"^7.1.4","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0",concurrently:"^3.5.1",cssnano:"^3.10.0",eslint:"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0",jest:"^22.4.3","jest-environment-jsdom-c3":"^2.0.0",nock:"^9.2.6",postcss:"^6.0.21","postcss-cli":"^5.0.0","postcss-color-function":"^4.0.1","postcss-css-variables":"^0.8.1","postcss-cssnext":"^2.4.0","postcss-import":"^8.0.2","postcss-loader":"^2.1.3",precss:"^3.1.2","regenerator-runtime":"^0.11.1","replace-in-file":"^3.4.0","style-loader":"^0.20.3",webpack:"^4.29.0","webpack-bundle-analyzer":"^3.3.2","webpack-cli":"^3.2.1","webpack-dev-server":"^3.3.1","xhr-mock":"^2.3.2"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return arguments.length?t instanceof a.default?(this.dataset=t,this):function(t){var e,n,i,r,u,c,l,f,d=[];n=this.config.indexBy,i=t.metadata||{},u=void 0!==t.query?t.query:{},"funnel"===(u=(0,o.extend)({analysis_type:null,event_collection:null,filters:[],group_by:null,interval:null,timeframe:null,timezone:null},u)).analysis_type?r="funnel":"extraction"===u.analysis_type?r="extraction":"select_unique"===u.analysis_type?u.group_by||u.interval||(r="list"):u.analysis_type&&(u.group_by||u.interval?u.group_by&&!u.interval?u.group_by instanceof Array&&u.group_by.length>1?(r="double-grouped-metric",d.push(u.group_by)):r="grouped-metric":u.interval&&!u.group_by?(r="interval",d.push(n)):u.group_by&&u.interval&&(u.group_by instanceof Array&&u.group_by.length>1?(r="double-grouped-interval",d.push(u.group_by),d.push(n)):(r="grouped-interval",d.push(n))):r="metric");r||("number"==typeof t.result&&(r="metric"),t.result instanceof Array&&t.result.length>0&&(!t.result[0].timeframe||"number"!=typeof t.result[0].value&&null!=t.result[0].value||(r="interval",d.push(n)),"number"==typeof t.result[0].result&&(r="grouped-metric"),"heatmap"===this.config.type&&Object.keys(3===t.result[0]&&"number"==typeof t.result[0].result)&&(r="heatmap-axis"),t.result[0].value instanceof Array&&(r="grouped-interval",d.push(n)),"number"==typeof t.result[0]&&void 0!==t.steps&&(r="funnel",u.steps=t.steps),"string"!=typeof t.result[0]&&"number"!=typeof t.result[0]||void 0!==t.steps||(r="list"),r||(r="extraction")),r||(r="extraction"));void 0===this.config.title&&(l=i.display_name?i.display_name:function(t){var e,n=t.analysis_type?t.analysis_type.replace("_"," "):"";e=n.replace(/\b./g,function(t){return t.toUpperCase()}),t.event_collection&&(e+=" - "+t.event_collection);return e}(u),this.config.title=l);this.config.type||(f=i.visualization&&i.visualization.chart_type?i.visualization.chart_type:function(t){var e=void 0;switch(t){case"metric":e="metric";break;case"interval":e="area";break;case"grouped-metric":case"double-grouped-metric":e="bar";break;case"grouped-interval":case"double-grouped-interval":e="line";break;case"funnel":e="horizontal-bar";break;case"list":case"extraction":default:e="table"}return e}(r),this.config.type=f);c=a.default.parser.apply(this,[r].concat(d)),e=c((0,o.extend)(t,{query:u})),r.indexOf("interval")>-1&&e.updateColumn(0,function(t,e){return new Date(t)});e.updateRow(0,function(t,e){return(0,s.stripHtmlTags)(t)}),this.dataset=e,t.execution_metadata&&(this.execution_metadata=t.execution_metadata);return this}.call(this,t):this.dataset.data()};var i,r=n(12),a=(i=r)&&i.__esModule?i:{default:i},o=n(5),s=n(14)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=Object.assign||function(t){for(var e=1;e12?1e3:250;e=setTimeout(function(){(0,a.each)(t.visuals,function(t){var e=t.view._artifacts.c3;if(e){var n=e.element.parentNode.parentNode.offsetWidth,i=n;if(t.config.legend&&t.config.legend.show&&("left"===t.config.legend.position||"right"===t.config.legend.position)){var r=e.element.nextSibling?e.element.nextSibling.offsetWidth:0;i=n-(e.element.previousSibling?e.element.previousSibling.offsetWidth:0)-r}e.resize({width:i})}})},n)}),function(){var t={message:h.default,metric:p.default,table:g.default,spinner:y.default,funnel:new v.default,"funnel-3d":new _.default,"horizontal-funnel":new m.default,"horizontal-funnel-3d":new x.default,"metric-combo":new b.default,heatmap:new w.default,choropleth:new S.default},e=function(t,e){return parseInt(window.getComputedStyle(t)["padding"+e].replace("px",""))};return(0,a.each)(["area","area-spline","area-step","bar","donut","gauge","line","pie","step","spline","horizontal-area","horizontal-area-spline","horizontal-area-step","horizontal-bar","horizontal-line","horizontal-step","horizontal-spline"],function(n,h){t[n]={render:function(){var t=this,h=function(){var t={bindto:this.el().querySelector("."+this.config.theme+"-rendering .c3-chart"),color:{pattern:this.config.colors},data:{colors:i({},this.config.colorMapping),columns:[],type:this.config.type.replace("horizontal-","")}},n=this.el(),r=n.offsetHeight;if(r-=e(n,"Top")+e(n,"Bottom"),this.config.showTitle){var a=this.el().querySelector(".keen-dataviz-title");r-=a?a.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}if(this.config.subtitle){var s=this.el().querySelector(".keen-dataviz-subtitle");r-=s?s.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}if(this.config.notes){var u=this.el().querySelector(".keen-dataviz-notes");r-=u?u.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}var c=this.el().querySelector(".c3-chart").offsetWidth-(e(n,"Left")+e(n,"Right"));c<0&&(c=0);var l={size:{width:c,height:r>0?r:void 0}};return(0,o.extendDeep)({},l,this.config,t)}.call(this),p=(0,d.calculateSumForPercents)(this.dataset.matrix);if("percent"!==h.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n||(this.dataset.matrix,this.dataset.matrix=[this.dataset.matrix[0]].concat(T((0,d.calculatePercents)(this.dataset.matrix,p))),h.sparkline||(h.axis={y:{padding:{top:0},tick:{format:function(t){return t+"%"}}}})),h.range&&(this.dataset.matrix=[this.dataset.matrix[0]].concat(T((0,f.default)(this.dataset.matrix)))),this.config.clearOnRender&&h.data.columns.length&&this.dataset&&this.dataset.meta){var g=(this.dataset.meta||{}).type,y=0;["interval"].includes(void 0===g?"":g)&&(y=1),h.data.columns.splice(y)}if(1!==this.data()[0].length&&1!==this.data().length){var v=!1;if("gauge"===n?(h.legend.show=!1,h.data.columns=[[this.config.title||this.data()[1][0],this.data()[1][1]]],v=!0):"pie"===n||"donut"===n?h.data.columns=this.data().slice(1):(n.indexOf("horizontal-")>-1&&(h.axis.rotated=n.indexOf("horizontal-")>-1),(0,s.default)(this.data()[1][0])?(h.axis.x=h.axis.x||{},h.axis.x.type="timeseries",h.axis.x.tick=h.axis.x.tick||{format:this.config.dateFormat||(0,u.default)(this.data()[1][0],this.data()[2]?this.data()[2][0]:this.data()[1][0]),culling:{max:5}},h.data.columns[0]=[],(0,a.each)(this.dataset.selectColumn(0),function(t,e){e>0&&(t=new Date(t)),h.data.columns[0][e]=t}),h.data.columns[0][0]="x",h.data.x="x",this.config.stacked&&this.data()[0].length>2&&(h.data.groups=[this.dataset.selectRow(0).slice(1)])):(h.axis.x=h.axis.x||{},h.axis.x.type="category",h.axis.x.categories=this.dataset.selectColumn(0).slice(1),this.config.stacked&&this.data()[0].length>2&&(h.data.groups=[this.dataset.selectRow(0).slice(1)])),2===this.data()[0].length&&(h.legend.show=!1,v=!0),(0,a.each)(this.data()[0],function(t,e){e>0&&h.data.columns.push(this.dataset.selectColumn(e))}.bind(this))),v){var _=this.el().querySelector(".keen-c3-legend");_&&(_.remove(),h.size.width=this.el().querySelector(".c3-chart").offsetWidth),h.legend.show=!1}if(h.partialIntervalIndicator&&h.partialIntervalIndicator.show&&["area","area-spline","area-step","line","spline","step"].indexOf(h.type)>-1){var m=h.data.columns&&h.data.columns[0];if(m&&m.length>1){var x={axis:"x",start:new Date(m[m.length-2]),class:h.partialIntervalIndicator.className};h.regions=[].concat(T(h.regions||[]),[x])}}if(h.tooltip&&!1===h.tooltip.show||!(!0===h.legend.show||h.legend&&h.legend.tooltip&&h.legend.tooltip.show)||(h.tooltip={contents:l.default,format:{title:this.config.tooltip.format.title,value:function(e,i,r,a){var o=function(t,e,n,i){var r=this.config.type;if(!this.view._artifacts.pagination||"gauge"===r)return t;var a=this.view._artifacts.pagination.labels;return a.indexOf(n)>-1?t:void 0}.call(t,e,i,r,a);return t.config.tooltip&&t.config.tooltip.format&&t.config.tooltip.format.value?(o=t.config.tooltip.format.value.call(t,o,i,r,a),"percent"!==h.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n||(o=parseFloat((o/100*p[a]).toFixed(2))),h.range&&"Max"===r&&(o+=t.dataset.matrix[a+1][2]),o):"percent"!==h.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n?(h.range&&"Max"===r&&(o+=t.dataset.matrix[a+1][2]),o):(o=(o/100*p[a]).toFixed(2),parseFloat(o))}}}),!0===h.legend.show){var b=i({},h);b.data.color=function(t,e){var n=this.config.type;if(this.view._artifacts.pagination&&"gauge"!==n){var i=this.view._artifacts.pagination.labels;return e.id&&i.indexOf(e.id)>-1||e&&!e.id&&i.indexOf(e)>-1?t:"donut"===n||"pie"===n?"rgba(0,0,0,.1)":"rgba(0,0,0,.07)"}return t}.bind(this),b.legend.hide=!0,this.view._artifacts.c3=r.default.generate(b),c.default.call(this,i({},h,{onLegendRendered:function(){var n=t.el().querySelector(".keen-c3-legend");n&&("top"===h.legend.position||"bottom"===h.legend.position?(b.size.height-=n.offsetHeight,t.view._artifacts.c3.resize({height:b.size.height})):(0===b.size.width&&(b.size.width=t.el().offsetWidth-e(t.el(),"Left")-e(t.el(),"Right")),b.size.width-=n.offsetWidth,t.view._artifacts.c3.resize({width:b.size.width})))},onPaginated:function(){t.view._artifacts.c3.flush()}}))}else this.view._artifacts.c3=r.default.generate(h)}else{var w="No data to display",S=this.config.errorMapping[w]||w;this.config.showErrorMessages&&this.message(S)}},update:function(){this.render()},destroy:function(){this.view._artifacts.c3&&(this.view._artifacts.c3.destroy(),this.view._artifacts.c3=null)}}}),t}()};var r=A(n(10)),a=n(0),o=(n(5),n(15)),s=A(n(11)),u=A(n(34)),c=A(n(35)),l=A(n(36)),f=A(n(37)),d=n(38),h=A(n(39)),p=A(n(43)),g=A(n(44)),y=A(n(45)),v=A(n(46)),_=A(n(47)),m=A(n(48)),x=A(n(49)),b=A(n(50)),w=A(n(51)),S=A(n(52));function A(t){return t&&t.__esModule?t:{default:t}}function T(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=24192e5?function(t){var e=new Date(t);return i[e.getMonth()]+" "+e.getFullYear()}:n>=864e5?function(t){var e=new Date(t);return i[e.getMonth()]+" "+e.getDate()}:n>=36e5?"%I:%M %p":"%I:%M:%S %p"}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=Object.assign||function(t){for(var e=1;e"+n+"",i.chartPartId=e,i.setAttribute("class","legend-item"),g.append(i);var a=document.createElement("span");a.setAttribute("class","legend-item-color-sample"),a.style.backgroundColor=r.color(i.chartPartId),i.prepend(a);var o=document.createElement("div");i.addEventListener("mouseover",function(e){r.focus(i.chartPartId),u.tooltip.show&&i.chartPartId.length>u.label.textMaxLength&&(o.setAttribute("class","keen-c3-legend-label-overlay keen-c3-legend-position-"+u.position),o.innerHTML=(t.legend.tooltip.pointer?"
":"")+i.chartPartId,i.append(o))}),i.addEventListener("mouseout",function(t){r.revert(),o.remove()}),i.addEventListener("click",function(t){var e=1,n=c.hidden.indexOf(i.chartPartId);n<0?(c.hidden.push(i.chartPartId),e=.35):(c.hidden.splice(n,1),e=1),i.style.opacity=e,r.toggle(i.chartPartId)})}),t.onLegendRendered&&(t.onLegendRendered(),t.onLegendRendered=null)}.call(n,c.labels),c.total>c.limit&&function(){y.innerHTML="",p.innerHTML="",v.innerHTML="";var t=document.createElement("i"),e=document.createElement("i"),n=function(t){if("forward"===t){var e=c.offset+c.limit;return e=0?n:Math.floor(c.total/c.limit)*c.limit};e.addEventListener("click",function(){n("forward"),_(),m()}),t.addEventListener("click",function(){n("backward"),_(),m()}),"left"===u.position||"right"===u.position?(t.setAttribute("class","up"),e.setAttribute("class","down"),y.append(e),y.append(t)):(t.setAttribute("class","left"),e.setAttribute("class","right"),p.append(t),v.append(e))}.call(n),t.onPaginated&&t.onPaginated()}function m(){document.selection&&document.selection.empty?document.selection.empty():window.getSelection&&window.getSelection().removeAllRanges()}v.setAttribute("class","keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right"),"horizontal"===h&&d.append(v),_()};!function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);e.default=t}(n(2));var r,a=n(11),o=(r=a)&&r.__esModule?r:{default:r}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,r){for(var a=void 0,o=void 0,s=this.config.tooltip_format_name||function(t){return t},u=this.config.tooltip_format_title||e,c=this.config.tooltip_format_value||n,l=0;l"+(o||0===o?""+(0,i.escapeHtml)(o)+"":""));var f=s(t[l].name),d=c(t[l].value,t[l].ratio,t[l].id,t[l].index),h=this.levelColor?this.levelColor(t[l].value):r(t[l].id);d&&!isNaN(d)&&(a+="",-1===f.indexOf("__tooltip_ignore_name_field__")&&(a+=""+(0,i.escapeHtml)(f)+""),a+=""+(0,i.escapeHtml)(d)+"",a+="")}return a+""};var i=n(4)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return t.slice(1).map(function(t){return t.map(function(e,n){return"number"==typeof e&&1===n?e-t[n+1]:e})})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.calculateSumForPercents=function(t){var e=[];return t.slice(1).forEach(function(t,n){t.forEach(function(t){if("number"==typeof t){if(!e[n])return e[n]=t,e[n];e[n]+=t}return e[n]})}),e},e.calculatePercents=function(t,e){return t.slice(1).map(function(t,n){return t.map(function(t){return"number"==typeof t?t/e[n]*100:t})})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(4),r=o(n(16)),a=o(n(1));function o(t){return t&&t.__esModule?t:{default:t}}e.default={render:function(t){var e=document.createElement("div"),n=document.createElement("div"),o=document.createElement("span"),s=document.createElement("div"),u=document.createElement("div"),c=document.createElement("div");e.className=this.config.theme+" keen-dataviz-box",n.className=this.config.theme+"-message",s.className=this.config.theme+"-title",s.innerHTML=(0,i.escapeHtml)(this.config.title||""),u.className=this.config.theme+"-subtitle",u.innerHTML=(0,i.escapeHtml)(this.config.subtitle||""),c.className=this.config.theme+"-notes",c.innerHTML=(0,i.escapeHtml)(this.config.notes||""),o.innerHTML=(0,i.escapeHtml)(t)||"",n.appendChild(o),this.config.title&&this.config.showTitle&&e.appendChild(s),this.config.subtitle&&e.appendChild(u),e.appendChild(n),this.config.notes&&e.appendChild(c),this.config.ui&&this.config.ui.buttons&&this.config.ui.buttons.download&&this.config.ui.buttons.download.type&&(0,r.default)({element:this.el(),data:(0,i.escapeHtml)(t)||"",type:this.config.ui.buttons.download.type,label:this.config.ui.buttons.download.label}),this.config.utils&&this.config.utils.clickToCopyToClipboard&&(s.addEventListener("click",function(t){return(0,a.default)(t.target.innerText,t)}),c.addEventListener("click",function(t){return(0,a.default)(t.target.innerText,t)}),o.addEventListener("click",function(t){return(0,a.default)(t.target.innerText,t)})),this.el().innerHTML="",this.el().appendChild(e)},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.event,n=t.type,a=t.data;e.preventDefault();var o=n.toLowerCase();if(!["json","csv","jpg","jpeg","png"].includes(n))throw new Error("This type is not supported");if("png"===o)return void(0,i.default)({node:e.currentTarget.previousElementSibling});if("jpg"===o||"jpeg"===o)return void(0,i.default)({node:e.currentTarget.previousElementSibling,quality:1,bgcolor:"#fff"});"json"===o&&(0,r.default)({type:o,data:a});"csv"===o&&(0,r.default)({type:o,data:a})};var i=a(n(17)),r=a(n(18));function a(t){return t&&t.__esModule?t:{default:t}}},function(t,e,n){!function(e){"use strict";var n=function(){return{escape:function(t){return t.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1")},parseExtension:e,mimeType:function(t){var n=e(t).toLowerCase();return(i="application/font-woff",{woff:i,woff2:i,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml"})[n]||"";var i},dataAsUrl:function(t,e){return"data:"+e+";base64,"+t},isDataUrl:function(t){return-1!==t.search(/^(data:)/)},canvasToBlob:function(t){return t.toBlob?new Promise(function(e){t.toBlob(e)}):function(t){return new Promise(function(e){for(var n=window.atob(t.toDataURL().split(",")[1]),i=n.length,r=new Uint8Array(i),a=0;a'+t+""}).then(function(t){return''+t+""}).then(function(t){return"data:image/svg+xml;charset=utf-8,"+t})}(i,e.width||n.width(t),e.height||n.height(t))})}function c(t,e){return u(t,e).then(n.makeImage).then(n.delay(100)).then(function(i){var r=function(t){var i=document.createElement("canvas");if(i.width=e.width||n.width(t),i.height=e.height||n.height(t),e.bgcolor){var r=i.getContext("2d");r.fillStyle=e.bgcolor,r.fillRect(0,0,i.width,i.height)}return i}(t);return r.getContext("2d").drawImage(i,0,0),r})}function l(t,e,i){if(!i&&e&&!e(t))return Promise.resolve();return Promise.resolve(t).then(r).then(function(n){return a(t,n,e)}).then(function(e){return o(t,e)});function r(t){return t instanceof HTMLCanvasElement?n.makeImage(t.toDataURL()):t.cloneNode(!1)}function a(t,e,i){var r=t.childNodes;return 0===r.length?Promise.resolve(e):function(t,e,n){var i=Promise.resolve();return e.forEach(function(e){i=i.then(function(){return l(e,n)}).then(function(e){e&&t.appendChild(e)})}),i}(e,n.asArray(r),i).then(function(){return e});function a(t,e,n){var i=Promise.resolve();return e.forEach(function(e){i=i.then(function(){return l(e,n)}).then(function(e){e&&t.appendChild(e)})}),i}}function o(t,e){return e instanceof Element?Promise.resolve().then(function(){!function(t,e){t.cssText?e.cssText=t.cssText:function(t,e){n.asArray(t).forEach(function(n){e.setProperty(n,t.getPropertyValue(n),t.getPropertyPriority(n))})}(t,e)}(window.getComputedStyle(t),e.style)}).then(function(){[":before",":after"].forEach(function(i){!function(i){var r=window.getComputedStyle(t,i),a=r.getPropertyValue("content");if(""===a||"none"===a)return;var o=n.uid();e.className=e.className+" "+o;var s=document.createElement("style");s.appendChild(function(t,e,i){var r="."+t+":"+e,a=i.cssText?function(t){var e=t.getPropertyValue("content");return t.cssText+" content: "+e+";"}(i):function(t){return n.asArray(t).map(function(e){return e+": "+t.getPropertyValue(e)+(t.getPropertyPriority(e)?" !important":"")}).join("; ")+";"}(i);return document.createTextNode(r+"{"+a+"}")}(o,i,r)),e.appendChild(s)}(i)})}).then(function(){t instanceof HTMLTextAreaElement&&(e.innerHTML=t.value);t instanceof HTMLInputElement&&e.setAttribute("value",t.value)}).then(function(){if(!(e instanceof SVGElement))return;if(e.setAttribute("xmlns","http://www.w3.org/2000/svg"),!(e instanceof SVGRectElement))return;["width","height"].forEach(function(t){var n=e.getAttribute(t);n&&e.style.setProperty(t,n)})}).then(function(){return e}):e;function i(){function i(t,e){if(t.cssText)e.cssText=t.cssText;else i(t,e);function i(t,e){n.asArray(t).forEach(function(n){e.setProperty(n,t.getPropertyValue(n),t.getPropertyPriority(n))})}}i(window.getComputedStyle(t),e.style)}function r(){function i(i){var r=window.getComputedStyle(t,i),a=r.getPropertyValue("content");if(a===""||a==="none")return;var o=n.uid();e.className=e.className+" "+o;var s=document.createElement("style");function u(t,e,i){var r="."+t+":"+e,a=i.cssText?o(i):s(i);return document.createTextNode(r+"{"+a+"}");function o(t){var e=t.getPropertyValue("content");return t.cssText+" content: "+e+";"}function s(t){return n.asArray(t).map(e).join("; ")+";";function e(e){return e+": "+t.getPropertyValue(e)+(t.getPropertyPriority(e)?" !important":"")}}}s.appendChild(u(o,i,r)),e.appendChild(s)}[":before",":after"].forEach(function(t){i(t)})}function a(){if(t instanceof HTMLTextAreaElement)e.innerHTML=t.value;if(t instanceof HTMLInputElement)e.setAttribute("value",t.value)}function o(){if(!(e instanceof SVGElement))return;if(e.setAttribute("xmlns","http://www.w3.org/2000/svg"),!(e instanceof SVGRectElement))return;["width","height"].forEach(function(t){var n=e.getAttribute(t);if(!n)return;e.style.setProperty(t,n)})}}}function f(t){return r.resolveAll().then(function(e){var n=document.createElement("style");return t.appendChild(n),n.appendChild(document.createTextNode(e)),t})}function d(t){return a.inlineAll(t).then(function(){return t})}t.exports=s}()},function(t,e,n){(function(n){var i,r,a;r=[],void 0===(a="function"==typeof(i=function(){"use strict";function e(t,e,n){var i=new XMLHttpRequest;i.open("GET",t),i.responseType="blob",i.onload=function(){o(i.response,e,n)},i.onerror=function(){console.error("could not download file")},i.send()}function i(t){var e=new XMLHttpRequest;e.open("HEAD",t,!1);try{e.send()}catch(t){}return 200<=e.status&&299>=e.status}function r(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(n){var e=document.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(e)}}var a="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n&&n.global===n?n:void 0,o=a.saveAs||("object"!=typeof window||window!==a?function(){}:"download"in HTMLAnchorElement.prototype?function(t,n,o){var s=a.URL||a.webkitURL,u=document.createElement("a");n=n||t.name||"download",u.download=n,u.rel="noopener","string"==typeof t?(u.href=t,u.origin===location.origin?r(u):i(u.href)?e(t,n,o):r(u,u.target="_blank")):(u.href=s.createObjectURL(t),setTimeout(function(){s.revokeObjectURL(u.href)},4e4),setTimeout(function(){r(u)},0))}:"msSaveOrOpenBlob"in navigator?function(t,n,a){if(n=n||t.name||"download","string"!=typeof t)navigator.msSaveOrOpenBlob(function(t,e){return void 0===e?e={autoBom:!1}:"object"!=typeof e&&(console.warn("Deprecated: Expected third argument to be a object"),e={autoBom:!e}),e.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t}(t,a),n);else if(i(t))e(t,n,a);else{var o=document.createElement("a");o.href=t,o.target="_blank",setTimeout(function(){r(o)})}}:function(t,n,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof t)return e(t,n,i);var o="application/octet-stream"===t.type,s=/constructor/i.test(a.HTMLElement)||a.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent);if((u||o&&s)&&"object"==typeof FileReader){var c=new FileReader;c.onloadend=function(){var t=c.result;t=u?t:t.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=t:location=t,r=null},c.readAsDataURL(t)}else{var l=a.URL||a.webkitURL,f=l.createObjectURL(t);r?r.location=f:location.href=f,r=null,setTimeout(function(){l.revokeObjectURL(f)},4e4)}});a.saveAs=o.saveAs=o,t.exports=o})?i.apply(e,r):i)||(t.exports=a)}).call(this,n(7))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=n(3),a=n(4),o=n(1),s=(i=o)&&i.__esModule?i:{default:i};e.default={render:function(){var t=this.config.colors[0],e=this.config.theme,n=this.config.title,i=this.config.subtitle,o=this.config,u="-",c="",l="",f="",d="",h=void 0,p="",g="",y="",v="",_=this.config,m=_.results,x=_.previousResults,b=_.isExtraction,w=_.comparedProp;if(m&&x&&(p=x?" metric-comparison":"",v=x&&n?"-smaller":"",y=(g=m.result-x.result)>0?"-green":"-red",g=Math.abs(g),t=""),this.data()&&this.data()[1]&&this.data()[1][1]&&"number"==typeof this.data()[1][1]&&(u=this.data()[1][1]),b&&w){var S=function(t,e){var n=t.query,i=t.result,r=[];if("extraction"!==n.analysis_type)throw new Error("Analysis type is not an extraction!");return Array.isArray(i)&&i.forEach(function(t){var i=e.split(".").reduce(function(t,e){return t&&t[e]||null},t),a={query:n,result:i};r.push(a)}),r}(m,w);u=S[0].result,p=(c=S[1].result)?" metric-comparison":"",v=c&&n?"-smaller":"",y=(g=u-c)>0?"-green":"-red",g=Math.abs(g),t=""}if(h=u,void 0!==o.prettyNumber&&!0!==o.prettyNumber||isNaN(parseInt(u))||(h=(0,r.prettyNumber)(u),m&&x&&(g=(0,r.prettyNumber)(g))),o.prefix&&(f=''+o.prefix+""),o.suffix&&(d=''+o.suffix+""),l+='
',l+='
',m&&x&&(l+='
'+(0,a.escapeHtml)(g)+"
"),b&&w&&(u&&c?(l+='
'+(0,a.escapeHtml)(g)+"
",l+=""+c+""):l+="

No data to display

"),l+='
'+f+(0,a.escapeHtml)(h)+d+"
",n&&(l+='
'+(0,a.escapeHtml)(n)+"
"),i&&(l+='
'+(0,a.escapeHtml)(i)+"
"),l+="
",l+="
",this.el().innerHTML=l,this.config.onrendered&&this.config.onrendered(),this.config.utils&&this.config.utils.clickToCopyToClipboard){var A="."+e+"-metric-value"+v;if(document.querySelector(A).addEventListener("click",function(t){return(0,s.default)(t.target.innerText,t)}),m&&x){var T="."+e+"-metric"+y;document.querySelector(T).addEventListener("click",function(t){return(0,s.default)(t.target.innerText,t)})}}},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(i=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);i=!0);}catch(t){r=!0,a=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=Object.assign||function(t){for(var e=1;e';var T=!0,P=!1,C=void 0;try{for(var M,E=A.entries()[Symbol.iterator]();!(T=(M=E.next()).done);T=!0){var L=M.value,k=r(L,2),V=k[0],O=k[1];v&&O instanceof Date&&(O=v(O));var G=(0,o.escapeHtml)(O);p[V]?n+=""+y[p[V]](G)+"":n+=""+G+""}}catch(t){P=!0,C=t}finally{try{!T&&E.return&&E.return()}finally{if(P)throw C}}n+=""}}catch(t){x=!0,b=t}finally{try{!m&&S.return&&S.return()}finally{if(x)throw b}}if(l>1){n+='';var R=1,I=1===c?1:c-1,N=c===l?l:c+1;for(s.arrows&&(n+='«');R<=l;)n+=''+R+"",R++;s.arrows&&(n+='»'),n+=""}return n}e.default={render:function(){var t=this,e=this.dataset.matrix,n=this.el(),i=this.config.theme,r=this,a="";if(1===e.length&&0===e[0].length){var s="No data to display",f=this.config.errorMapping[s]||s;this.config.showErrorMessages&&this.message(f)}else{a+='
',a+='',a+="",a+="",a+=function(t,e){var n="",i=-1,r=t.config.table,a=r&&r.columns||e[0],s=!0,u=!1,c=void 0;try{for(var l,f=a[Symbol.iterator]();!(s=(l=f.next()).done);s=!0){var d=l.value,h=(0,o.escapeHtml)(d);n+='"}}catch(t){u=!0,c=t}finally{try{!s&&f.return&&f.return()}finally{if(u)throw c}}return n}(r,e),a+="",a+="",a+="",a+=l(r,e),a+="",a+="
'+h+"
",a+="
",n.querySelector("."+i+"-rendering").innerHTML=a,n.querySelectorAll("."+i+"-rendering th").forEach(function(a){a.addEventListener("click",function(a){var o=a.target.getAttribute("order")||"asc",s=a.target.getAttribute("fieldNumber");o="asc"===o?"desc":"asc",a.target.setAttribute("order",o);var u=t.dataset.matrix.shift();t.dataset.matrix.sort(function(t,e){var n="asc"===o?1:-1;if("string"==typeof t[s]){var i=t[s].toUpperCase(),r=e[s].toUpperCase();return ir?1*n:0}return(t[s]-e[s])*n}),t.dataset.matrix.unshift(u),n.querySelector("."+i+"-rendering tbody").innerHTML=l(r,e),d()})});var d=function t(){n.querySelectorAll(".btn").forEach(function(a){a.addEventListener("click",function(a){c=parseInt(a.target.getAttribute("data-page")),n.querySelector("."+i+"-rendering tbody").innerHTML=l(r,e),t()},!0)})};if(d(r,n,i),this.config.onrendered&&this.config.onrendered(),this.config.utils&&this.config.utils.clickToCopyToClipboard){var h="."+i+"-table-dataset";document.querySelector(h).addEventListener("click",function(t){var e=t.target,n=e.nodeName,i=e.innerText;"TD"===n&&(0,u.default)(i,t)})}}},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={render:function(){var t="";this.view._artifacts.spinner={};t+='
',t+='
',t+='
',t+="
",t+="
",this.el().innerHTML=t},update:function(){this.render()},destroy:function(){if(this.view._artifacts.spinner){this.view._artifacts.spinner.interval&&clearInterval(this.view._artifacts.spinner.interval),this.view._artifacts.spinner.radius=0;try{delete this.view._artifacts.spinner}catch(t){this.view._artifacts.spinner=void 0}}this.el().innerHTML=""}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nM/2?M/2-5:t.points[3].x+V,y:"right"===m?t.points[3].y:t.points[3].y+k/1.5}]}}),D=I.concat(N);if(C.attr("preserveAspectRatio","xMidYMid meet").attr("viewBox","0 0 "+(M+T+S)+" "+(E+w+A-30)).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+T+","+w+")").selectAll("polygon").data(D).enter().append("polygon").attr("points",function(t){return t.points.map(function(t){return[t.x,t.y].join(",")}).join(" ")}).style("fill",function(t,e){return e>I.length-1?u[t.label]?a.rgb(u[t.label]).darker(1.5):a.rgb(n[e-I.length]).darker(1.5):u[t.label]?u[t.label]:n[e]}).attr("class",function(t){return t.label}).attr("cursor","pointer"),v&&(C.selectAll("line").data(I).enter().append("line").attr("x1",10).attr("y1",function(t){return t.points[0].y+w-k/5}).attr("x2",function(t,e){return 0===e?t.points[1].x+T:t.points[1].x+T-V}).attr("y2",function(t){return t.points[0].y+w-k/5}).attr("class","chart-lines"),C.append("line").attr("x1",10).attr("y1",I[I.length-1].points[2].y+w+k-k/5).attr("x2",I[I.length-1].points[2].x+T-V).attr("y2",I[I.length-1].points[2].y+w+k-k/5).attr("class","chart-lines")),v&&C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","start").attr("x",20).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+5+k/4}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(o.textWrap,T).attr("cursor","pointer"),v||C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","end").attr("x",function(t){return t.points[0].x+(t.points[3].x-t.points[0].x)/2+130}).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+5}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(o.textWrap,T).attr("cursor","pointer"),p&&!_&&C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",M/2+T).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+8}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),_&&!p&&C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",M/2+T).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+8}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer"),p&&_&&(C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",M/2+T).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+18}).attr("class",function(t){return"text-second "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",M/2+T).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+3}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer")),x){var z=function(t){j.style("opacity",.5),H.style("opacity",.5);var e=/[^ ]*$/.exec(a.select(this).attr("class"))[0];C.selectAll("."+e).style("opacity",1)},F=function(t){j.style("opacity",1),H.style("opacity",1)},j=C.selectAll("polygon");j.on("mouseover",z).on("mouseout",F);var H=C.selectAll("text");H.on("mouseover",z).on("mouseout",F)}if(l&&l.clickToCopyToClipboard){C.selectAll("text").on("click",function(t){var e=t.percent,n=t.result;_?(0,c.default)(n,a.event):p&&(0,c.default)(e,a.event)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){a.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nL+A-40+w?L+A-40+w:t.points[2].y+(t.points[3].y-t.points[0].y)/2+k/4+w}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(o.textWrap,k).attr("cursor","pointer"),p&&!m&&M.selectAll("text.label").data(R).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+k/2+T}).attr("y",L/2+w+10).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),m&&!p&&M.selectAll("text.label").data(R).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+k/2+T}).attr("y",L/2+w+10).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer"),p&&m&&(M.selectAll("text.label").data(R).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+k/2+T}).attr("y",L/2+w+16).attr("class",function(t){return"text-second "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),M.selectAll("text.label").data(R).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+k/2+T}).attr("y",L/2+w-3).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer")),x){var I=function(t){D.style("opacity",.5),z.style("opacity",.5);var e=/[^ ]*$/.exec(a.select(this).attr("class"))[0];M.selectAll("."+e).style("opacity",1)},N=function(t){D.style("opacity",1),z.style("opacity",1)},D=M.selectAll("polygon");D.on("mouseover",I).on("mouseout",N);var z=M.selectAll("text");z.on("mouseover",I).on("mouseout",N)}if(l&&l.clickToCopyToClipboard){M.selectAll("text").on("click",function(t){var e=t.percent,n=t.result;m?(0,c.default)(n,a.event):p&&(0,c.default)(e,a.event)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){a.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nE/2?E/2-5:t.points[0].y+k}]}}),D=I.concat(N);if(C.attr("preserveAspectRatio","xMidYMid meet").attr("viewBox","0 0 "+(M+T+S)+" "+(E+w+A-30)).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+T+","+w+")").selectAll("polygon").data(D).enter().append("polygon").attr("points",function(t){return t.points.map(function(t){return[t.x,t.y].join(",")}).join(" ")}).style("fill",function(t,e){return e>I.length-1?u[t.label]?a.rgb(u[t.label]).darker(1.5):a.rgb(n[e-I.length]).darker(1.5):u[t.label]?u[t.label]:n[e]}).attr("class",function(t){return t.label}).attr("cursor","pointer"),v&&(C.selectAll("line").data(I).enter().append("line").attr("x1",function(t){return t.points[0].x+T-.8*k}).attr("y1",E+A).attr("x2",function(t){return t.points[0].x+T-.8*k}).attr("y2",function(t){return t.points[0].y+w}).attr("class","chart-lines"),C.append("line").attr("x1",M+T+k/4).attr("y1",E+A).attr("x2",I[I.length-1].points[3].x+T+k/4).attr("y2",I[I.length-1].points[3].y+w).attr("class","chart-lines")),v&&C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[0].x+T+.25*L}).attr("y",E+.4*A+w).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(o.textWrap,L).attr("cursor","pointer"),v||C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[0].x+T+.25*L}).attr("y",function(t){return t.points[2].y+L/4>E+A-40?E+A-40+w:t.points[2].y+L/40&&(n=new Date(t)),h[0][e]=n}),h[0][0]="x",(0,a.each)(this.data()[0],function(e,n){n>0&&h.push(t.dataset.selectColumn(n))});var p=i&&i.previous&&i.previous.result||0,g=(i&&i.current&&i.current.result||0)-p,y=0===p?"-":(0,o.prettyNumber)(Math.round(g/p*100)),v="keen-dataviz-metric-green",_="arrow-green";y<0&&(v="keen-dataviz-metric-red",_="arrow-red");var m=c&&u?'
'+u+"
":"",x=l?'
'+l+"
":"",b=document.querySelector(n);b.innerHTML='\n
\n
\n
\n '+m+"\n "+x+'\n
'+y+' %
\n
'+(0,o.prettyNumber)(g)+'
\n
\n
\n
\n
\n
\n
';var w=b.querySelector(".c3-chart");r.default.generate({bindto:w,color:{pattern:["#c3c4cc"]},title:u,legend:{show:!1},data:{x:"x",columns:h,type:"area-spline",selection:{draggable:!1,enabled:!0,multiple:!0}},point:{r:0,focus:{expand:{r:5,enabled:!0}},select:{r:5,enabled:!0}},axis:{y:{show:!1},x:{show:!1}},grid:{x:{show:!1},y:{show:!1}},padding:{left:0,right:0,top:0,bottom:-4},tooltip:f});if(d&&d.clickToCopyToClipboard){var S=document.querySelector(".current-count").innerText;document.querySelector(".keen-dataviz-metric-combo").addEventListener("click",function(t){return(0,s.default)(S,t)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){var t=this.config.container;document.querySelector(t).querySelector(".c3-chart").remove()}}]),t}();e.default=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(i=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);i=!0);}catch(t){r=!0,a=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(){function t(t,e){for(var n=0;nt?e.value:t},L),O=function(){var t=u[0],e=a.rgb("#00BBDE");return a.color(t)&&(e=a.rgb(t)),e},G=a.scaleLinear().domain([0,a.max(E,function(t){return t.value})]).range([0,1]),R=function(t){var e=G(t),n=O(),i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[255,255,255],n=t[3];return[Math.floor((1-n)*e[0]+n*t[0]+.5),Math.floor((1-n)*e[1]+n*t[1]+.5),Math.floor((1-n)*e[2]+n*t[2]+.5)]}([n.r,n.g,n.b,e]);return"rgb("+i[0]+", "+i[1]+", "+i[2]+")"},I=a.select(A).append("svg").attr("preserveAspectRatio","xMidYMid slice").attr("viewBox","0 0 "+w+" "+S).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+x+","+v+")");if(d){a.select(l).append("input").attr("type","range").attr("class","keen-dataviz-slider"),new o.default(".keen-dataviz-slider",{multiple:!0,min:k,max:V,value:[k,V],onChange:function(t){return function(t){var e=I.selectAll("rect"),n=i(t,2),r=n[0],o=n[1];e.each(function(t,e,n){a.select(n[e]).style("visibility",function(){return t.value>o||t.value\n ";h||(e='\n \n xAxis:\n '+t.x+'\n \n \n yAxis:\n '+t.y+"\n \n "+e+"\n "),X.html('\n \n '+e+"\n
\n ").style("left",a.event.clientX+10+"px").style("top",a.event.clientY+10+"px")}).on("mouseleave",function(){a.select(a.event.target).style("outline","none").style("transform","none"),X.style("opacity",0).style("display","none")}).on("click",function(t){return(0,s.default)(t.value)})}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){this.el().querySelector(".c3-chart").remove()}}]),t}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(i=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);i=!0);}catch(t){r=!0,a=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=Object.assign||function(t){for(var e=1;ea||t.properties.result\n \n '+t.properties.name+'\n \n \n '+e+"\n \n \n ").style("left",o.event.clientX+10+"px").style("top",o.event.clientY+10+"px")}).on("mouseout",function(t){T.select("#"+t.properties.name.split(" ").join("-").split(".").join("")).style("fill",function(t){return k(t.properties.result)}).style("stroke-width",y),V.style("opacity",0).style("display","none")}),g&&T.selectAll("."+L).style("stroke",v).style("stroke-width",y);var V=o.select(".c3-chart").append("div").style("opacity",0).attr("class","c3-tooltip-container").style("display","none").style("position","fixed");if(l&&l.clickToCopyToClipboard){T.selectAll("."+L).on("click",function(t){var e=t.properties.result;(0,c.default)(e,o.event)})}T.call(f),T.call(f).on("mousedown.zoom",null)})}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){o.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.element,n=t.data,i=document.createElement("dl");i.classList="keen-dataviz-execution-meta",Object.keys(n).length?Object.keys(n).forEach(function(t){var e=document.createElement("dt");e.innerText=t.replace(/_/g," "),e.addEventListener("click",function(t){return s(t)});var r=document.createElement("dd");r.innerText=n[t],r.addEventListener("click",function(t){return s(t)}),i.append(e),i.append(r)}):i.innerText="No execution metadata available";e.append(i)};var i,r=n(1),a=(i=r)&&i.__esModule?i:{default:i};function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"copied",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;setTimeout(function(){t.classList.remove(e)},n)}function s(t){var e=t.target,n=t.target.nodeName,i=void 0;"DD"===n&&(i=e.innerText,e.classList.contains("copied")||(e.classList.add("copied"),o(e))),"DT"===n&&(i=e.nextSibling.innerText,e.nextSibling.classList.contains("copied")||(e.nextSibling.classList.add("copied"),o(e.nextSibling))),(0,a.default)(i)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=o(n(55)),r=o(n(56)),a=o(n(57));function o(t){return t&&t.__esModule?t:{default:t}}e.default={autocollector:i.default,modern:r.default,dracula:a.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#5E77FF","#9C60FE","#F162FE","#FD65B7","#FD6768","#FDB86A","#F2FC6C","#A5FC6E","#71FB85","#73FBD0","#76DDFA","#76f4fa","#bb76fa","#fa76bf"]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#45B2E8","#D9540D","#2CAB72","#2C4BAB","#EDDD02","#E84545","#E845CE","#5FCEC9","#E89F45","#28E43F","#B765C0","#458AE8","#AB2C2C","#AB2C75","#27E5FF","#7168F2","#FF932B","#855D00","#ACE845","#1C91B4"]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#8be9fd","#50fa7b","#ffb86c","#ff79c6","#bd93f9","#ff5555","#f1fa8c"]}}])}); +t.exports=function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function e(t){var e=this;e.d3=window.d3?window.d3:n(2),e.api=t,e.config=e.getDefaultConfig(),e.data={},e.cache={},e.axes={}}function i(t){this.internal=new e(this),this.internal.loadConfig(t),this.internal.beforeInit(t),this.internal.init(),this.internal.afterInit(t),function t(e,n,i){Object.keys(e).forEach(function(r){n[r]=e[r].bind(i),Object.keys(e[r]).length>0&&t(e[r],n[r],i)})}(i.prototype,this,this)}function r(t,e){this.component=t,this.params=e||{},this.d3=t.d3,this.scale=this.d3.scaleLinear(),this.range,this.orient="bottom",this.innerTickSize=6,this.outerTickSize=this.params.withOuterTick?6:0,this.tickPadding=3,this.tickValues=null,this.tickFormat,this.tickArguments,this.tickOffset=0,this.tickCulling=!0,this.tickCentered,this.tickTextCharSize,this.tickTextRotate=this.params.tickTextRotate,this.tickLength,this.axis=this.generateAxis()}r.prototype.axisX=function(t,e,n){t.attr("transform",function(t){return"translate("+Math.ceil(e(t)+n)+", 0)"})},r.prototype.axisY=function(t,e){t.attr("transform",function(t){return"translate(0,"+Math.ceil(e(t))+")"})},r.prototype.scaleExtent=function(t){var e=t[0],n=t[t.length-1];return e0&&i[0]>0&&i.unshift(i[0]-(i[1]-i[0])),i},r.prototype.copyScale=function(){var t,e=this.scale.copy();return this.params.isCategory&&(t=this.scale.domain(),e.domain([t[0],t[1]-1])),e},r.prototype.textFormatted=function(t){var e=this.tickFormat?this.tickFormat(t):t;return void 0!==e?e:""},r.prototype.updateRange=function(){return this.range=this.scale.rangeExtent?this.scale.rangeExtent():this.scaleExtent(this.scale.range()),this.range},r.prototype.updateTickTextCharSize=function(t){var e=this;if(e.tickTextCharSize)return e.tickTextCharSize;var n={h:11.5,w:5.5};return t.select("text").text(function(t){return e.textFormatted(t)}).each(function(t){var i=this.getBoundingClientRect(),r=e.textFormatted(t),a=i.height,o=r?i.width/r.length:void 0;a&&o&&(n.h=a,n.w=o)}).text(""),e.tickTextCharSize=n,n},r.prototype.isVertical=function(){return"left"===this.orient||"right"===this.orient},r.prototype.tspanData=function(t,e,n){var i=this.params.tickMultiline?this.splitTickText(t,n):[].concat(this.textFormatted(t));return this.params.tickMultiline&&this.params.tickMultilineMax>0&&(i=this.ellipsify(i,this.params.tickMultilineMax)),i.map(function(t){return{index:e,splitted:t,length:i.length}})},r.prototype.splitTickText=function(t,e){var n,i,r,a=this,o=a.textFormatted(t),s=a.params.tickWidth;return"[object Array]"===Object.prototype.toString.call(o)?o:((!s||s<=0)&&(s=a.isVertical()?95:a.params.isCategory?Math.ceil(e(1)-e(0))-12:110),function t(e,o){i=void 0;for(var u=1;u=0;r--){var a=n[r].length;if(n[r]=n[r].substr(0,a-i).padEnd(a,"."),(i-=a)<=0)break}return n},r.prototype.updateTickLength=function(){this.tickLength=Math.max(this.innerTickSize,0)+this.tickPadding},r.prototype.lineY2=function(t){var e=this.scale(t)+(this.tickCentered?0:this.tickOffset);return this.range[0]0?1:-1):this.tickLength},r.prototype.textTransform=function(){var t=this.tickTextRotate;return t?"rotate("+t+")":""},r.prototype.textTextAnchor=function(){var t=this.tickTextRotate;return t?t>0?"start":"end":"middle"},r.prototype.tspanDx=function(){var t=this.tickTextRotate;return t?8*Math.sin(Math.PI*(t/180)):0},r.prototype.tspanDy=function(t,e){var n=this.tickTextCharSize.h;return 0===e&&(n=this.isVertical()?-((t.length-1)*(this.tickTextCharSize.h/2)-3):".71em"),n},r.prototype.generateAxis=function(){var t=this,e=t.d3,n=t.params;function i(r,a){var o;return r.each(function(){var r,s,u,c=i.g=e.select(this),l=this.__chart__||t.scale,f=this.__chart__=t.copyScale(),d=t.tickValues?t.tickValues:t.generateTicks(f),h=c.selectAll(".tick").data(d,f),p=h.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),g=h.exit().remove(),y=h.merge(p);n.isCategory?(t.tickOffset=Math.ceil((f(1)-f(0))/2),s=t.tickCentered?0:t.tickOffset,u=t.tickCentered?t.tickOffset:0):t.tickOffset=s=0,t.updateRange(),t.updateTickLength(),t.updateTickTextCharSize(c.select(".tick"));var v=y.select("line").merge(p.append("line")),_=y.select("text").merge(p.append("text")),m=y.selectAll("text").selectAll("tspan").data(function(e,n){return t.tspanData(e,n,f)}),x=m.enter().append("tspan"),b=x.merge(m).text(function(t){return t.splitted});m.exit().remove();var w=c.selectAll(".domain").data([0]),S=w.enter().append("path").merge(w).attr("class","domain");switch(t.orient){case"bottom":r=t.axisX,v.attr("x1",s).attr("x2",s).attr("y2",function(e,n){return t.lineY2(e,n)}),_.attr("x",0).attr("y",function(e,n){return t.textY(e,n)}).attr("transform",function(e,n){return t.textTransform(e,n)}).style("text-anchor",function(e,n){return t.textTextAnchor(e,n)}),b.attr("x",0).attr("dy",function(e,n){return t.tspanDy(e,n)}).attr("dx",function(e,n){return t.tspanDx(e,n)}),S.attr("d","M"+t.range[0]+","+t.outerTickSize+"V0H"+t.range[1]+"V"+t.outerTickSize);break;case"top":r=t.axisX,v.attr("x1",s).attr("x2",s).attr("y2",function(e,n){return-1*t.lineY2(e,n)}),_.attr("x",0).attr("y",function(e,i){return-1*t.textY(e,i)-(n.isCategory?2:t.tickLength-2)}).attr("transform",function(e,n){return t.textTransform(e,n)}).style("text-anchor",function(e,n){return t.textTextAnchor(e,n)}),b.attr("x",0).attr("dy",function(e,n){return t.tspanDy(e,n)}).attr("dx",function(e,n){return t.tspanDx(e,n)}),S.attr("d","M"+t.range[0]+","+-t.outerTickSize+"V0H"+t.range[1]+"V"+-t.outerTickSize);break;case"left":r=t.axisY,v.attr("x2",-t.innerTickSize).attr("y1",u).attr("y2",u),_.attr("x",-t.tickLength).attr("y",t.tickOffset).style("text-anchor","end"),b.attr("x",-t.tickLength).attr("dy",function(e,n){return t.tspanDy(e,n)}),S.attr("d","M"+-t.outerTickSize+","+t.range[0]+"H0V"+t.range[1]+"H"+-t.outerTickSize);break;case"right":r=t.axisY,v.attr("x2",t.innerTickSize).attr("y1",u).attr("y2",u),_.attr("x",t.tickLength).attr("y",t.tickOffset).style("text-anchor","start"),b.attr("x",t.tickLength).attr("dy",function(e,n){return t.tspanDy(e,n)}),S.attr("d","M"+t.outerTickSize+","+t.range[0]+"H0V"+t.range[1]+"H"+t.outerTickSize)}if(f.rangeBand){var A=f,T=A.rangeBand()/2;l=f=function(t){return A(t)+T}}else l.rangeBand?l=f:g.call(r,f,t.tickOffset);p.call(r,l,t.tickOffset),o=(a?y.transition(a):y).style("opacity",1).call(r,f,t.tickOffset)}),o}return i.scale=function(e){return arguments.length?(t.scale=e,i):t.scale},i.orient=function(e){return arguments.length?(t.orient=e in{top:1,right:1,bottom:1,left:1}?e+"":"bottom",i):t.orient},i.tickFormat=function(e){return arguments.length?(t.tickFormat=e,i):t.tickFormat},i.tickCentered=function(e){return arguments.length?(t.tickCentered=e,i):t.tickCentered},i.tickOffset=function(){return t.tickOffset},i.tickInterval=function(){var e,r;return n.isCategory?e=2*t.tickOffset:(r=i.g.select("path.domain").node().getTotalLength()-2*t.outerTickSize,e=r/i.g.selectAll("line").size()),e===1/0?0:e},i.ticks=function(){return arguments.length?(t.tickArguments=arguments,i):t.tickArguments},i.tickCulling=function(e){return arguments.length?(t.tickCulling=e,i):t.tickCulling},i.tickValues=function(e){if("function"==typeof e)t.tickValues=function(){return e(t.scale.domain())};else{if(!arguments.length)return t.tickValues;t.tickValues=e}return i},i};var a={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",dragZoom:"c3-drag-zoom",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",title:"c3-title",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcLabelLine:"c3-arc-label-line",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",colorScale:"c3-colorscale",stanfordElements:"c3-stanford-elements",stanfordLine:"c3-stanford-line",stanfordLines:"c3-stanford-lines",stanfordRegion:"c3-stanford-region",stanfordRegions:"c3-stanford-regions",stanfordText:"c3-stanford-text",stanfordTexts:"c3-stanford-texts",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"},o=function(t){return Math.ceil(t)+.5},s=function(t){return 10*Math.ceil(t/10)},u=function(t){return t[1]-t[0]},c=function(t,e,n){return d(t[e])?t[e]:n},l=function(t){var e=t.getBoundingClientRect(),n=[t.pathSegList.getItem(0),t.pathSegList.getItem(1)],i=n[0].x,r=Math.min(n[0].y,n[1].y);return{x:i,y:r,width:e.width,height:e.height}},f=function(t){return Array.isArray(t)},d=function(t){return void 0!==t},h=function(e){return null==e||g(e)&&0===e.length||"object"===t(e)&&0===Object.keys(e).length},p=function(t){return"function"==typeof t},g=function(t){return"string"==typeof t},y=function(t){return void 0===t},v=function(t){return t||0===t},_=function(t){return!h(t)},m=function(t){return"string"==typeof t?t.replace(//g,">"):t},x=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.owner=e,this.d3=e.d3,this.internal=r};x.prototype.init=function(){var t=this.owner,e=t.config,n=t.main;t.axes.x=n.append("g").attr("class",a.axis+" "+a.axisX).attr("clip-path",e.axis_x_inner?"":t.clipPathForXAxis).attr("transform",t.getTranslate("x")).style("visibility",e.axis_x_show?"visible":"hidden"),t.axes.x.append("text").attr("class",a.axisXLabel).attr("transform",e.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),t.axes.y=n.append("g").attr("class",a.axis+" "+a.axisY).attr("clip-path",e.axis_y_inner?"":t.clipPathForYAxis).attr("transform",t.getTranslate("y")).style("visibility",e.axis_y_show?"visible":"hidden"),t.axes.y.append("text").attr("class",a.axisYLabel).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),t.axes.y2=n.append("g").attr("class",a.axis+" "+a.axisY2).attr("transform",t.getTranslate("y2")).style("visibility",e.axis_y2_show?"visible":"hidden"),t.axes.y2.append("text").attr("class",a.axisY2Label).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},x.prototype.getXAxis=function(t,e,n,i,r,a,o){var s=this.owner,u=s.config,c={isCategory:s.isCategorized(),withOuterTick:r,tickMultiline:u.axis_x_tick_multiline,tickMultilineMax:u.axis_x_tick_multiline?Number(u.axis_x_tick_multilineMax):0,tickWidth:u.axis_x_tick_width,tickTextRotate:o?0:u.axis_x_tick_rotate,withoutTransition:a},l=new this.internal(this,c).axis.scale(t).orient(e);return s.isTimeSeries()&&i&&"function"!=typeof i&&(i=i.map(function(t){return s.parseDate(t)})),l.tickFormat(n).tickValues(i),s.isCategorized()&&(l.tickCentered(u.axis_x_tick_centered),h(u.axis_x_tick_culling)&&(u.axis_x_tick_culling=!1)),l},x.prototype.updateXAxisTickValues=function(t,e){var n,i=this.owner,r=i.config;return(r.axis_x_tick_fit||r.axis_x_tick_count)&&(n=this.generateTickValues(i.mapTargetsToUniqueXs(t),r.axis_x_tick_count,i.isTimeSeries())),e?e.tickValues(n):(i.xAxis.tickValues(n),i.subXAxis.tickValues(n)),n},x.prototype.getYAxis=function(t,e,n,i,r,a,o){var s=this.owner,u=s.config,c={withOuterTick:r,withoutTransition:a,tickTextRotate:o?0:u.axis_y_tick_rotate},l=new this.internal(this,c).axis.scale(t).orient(e).tickFormat(n);return s.isTimeSeriesY()?l.ticks(u.axis_y_tick_time_type,u.axis_y_tick_time_interval):l.tickValues(i),l},x.prototype.getId=function(t){var e=this.owner.config;return t in e.data_axes?e.data_axes[t]:"y"},x.prototype.getXAxisTickFormat=function(){var t=this.owner,e=t.config,n=t.isTimeSeries()?t.defaultAxisTimeFormat:t.isCategorized()?t.categoryName:function(t){return t};return e.axis_x_tick_format&&(p(e.axis_x_tick_format)?n=e.axis_x_tick_format:t.isTimeSeries()&&(n=function(n){return n?t.axisTimeFormat(e.axis_x_tick_format)(n):""})),p(n)?function(e){return n.call(t,e)}:n},x.prototype.getTickValues=function(t,e){return t||(e?e.tickValues():void 0)},x.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},x.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},x.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},x.prototype.getLabelOptionByAxisId=function(t){var e,n=this.owner,i=n.config;return"y"===t?e=i.axis_y_label:"y2"===t?e=i.axis_y2_label:"x"===t&&(e=i.axis_x_label),e},x.prototype.getLabelText=function(t){var e=this.getLabelOptionByAxisId(t);return g(e)?e:e?e.text:null},x.prototype.setLabelText=function(t,e){var n=this.owner,i=n.config,r=this.getLabelOptionByAxisId(t);g(r)?"y"===t?i.axis_y_label=e:"y2"===t?i.axis_y2_label=e:"x"===t&&(i.axis_x_label=e):r&&(r.text=e)},x.prototype.getLabelPosition=function(e,n){var i=this.getLabelOptionByAxisId(e),r=i&&"object"===t(i)&&i.position?i.position:n;return{isInner:r.indexOf("inner")>=0,isOuter:r.indexOf("outer")>=0,isLeft:r.indexOf("left")>=0,isCenter:r.indexOf("center")>=0,isRight:r.indexOf("right")>=0,isTop:r.indexOf("top")>=0,isMiddle:r.indexOf("middle")>=0,isBottom:r.indexOf("bottom")>=0}},x.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},x.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},x.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},x.prototype.getLabelPositionById=function(t){return"y2"===t?this.getY2AxisLabelPosition():"y"===t?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},x.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},x.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},x.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},x.prototype.xForAxisLabel=function(t,e){var n=this.owner;return t?e.isLeft?0:e.isCenter?n.width/2:n.width:e.isBottom?-n.height:e.isMiddle?-n.height/2:0},x.prototype.dxForAxisLabel=function(t,e){return t?e.isLeft?"0.5em":e.isRight?"-0.5em":"0":e.isTop?"-0.5em":e.isBottom?"0.5em":"0"},x.prototype.textAnchorForAxisLabel=function(t,e){return t?e.isLeft?"start":e.isCenter?"middle":"end":e.isBottom?"start":e.isMiddle?"middle":"end"},x.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},x.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},x.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},x.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},x.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},x.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},x.prototype.dyForXAxisLabel=function(){var t=this.owner,e=t.config,n=this.getXAxisLabelPosition();return e.axis_rotated?n.isInner?"1.2em":-25-(t.config.axis_x_inner?0:this.getMaxTickWidth("x")):n.isInner?"-0.5em":e.axis_x_height?e.axis_x_height-10:"3em"},x.prototype.dyForYAxisLabel=function(){var t=this.owner,e=this.getYAxisLabelPosition();return t.config.axis_rotated?e.isInner?"-0.5em":"3em":e.isInner?"1.2em":-10-(t.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},x.prototype.dyForY2AxisLabel=function(){var t=this.owner,e=this.getY2AxisLabelPosition();return t.config.axis_rotated?e.isInner?"1.2em":"-2.2em":e.isInner?"-0.5em":15+(t.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},x.prototype.textAnchorForXAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(!t.config.axis_rotated,this.getXAxisLabelPosition())},x.prototype.textAnchorForYAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getYAxisLabelPosition())},x.prototype.textAnchorForY2AxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getY2AxisLabelPosition())},x.prototype.getMaxTickWidth=function(t,e){var n,i,r,a,o=this.owner,s=o.config,u=0;return e&&o.currentMaxTickWidths[t]?o.currentMaxTickWidths[t]:(o.svg&&(n=o.filterTargetsToShow(o.data.targets),"y"===t?(i=o.y.copy().domain(o.getYDomain(n,"y")),r=this.getYAxis(i,o.yOrient,s.axis_y_tick_format,o.yAxisTickValues,!1,!0,!0)):"y2"===t?(i=o.y2.copy().domain(o.getYDomain(n,"y2")),r=this.getYAxis(i,o.y2Orient,s.axis_y2_tick_format,o.y2AxisTickValues,!1,!0,!0)):(i=o.x.copy().domain(o.getXDomain(n)),r=this.getXAxis(i,o.xOrient,o.xAxisTickFormat,o.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(n,r)),(a=o.d3.select("body").append("div").classed("c3",!0)).append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0).append("g").call(r).each(function(){o.d3.select(this).selectAll("text").each(function(){var t=this.getBoundingClientRect();u2){for(o=i-2,r=t[0],a=t[t.length-1],s=(a-r)/(o+1),l=[r],u=0;u=0&&N.select(this).style("display",e%k?"none":"block")})}else R.svg.selectAll("."+a.axisX+" .tick text").style("display","block");v=R.generateDrawArea?R.generateDrawArea(z,!1):void 0,_=R.generateDrawBar?R.generateDrawBar(F):void 0,m=R.generateDrawLine?R.generateDrawLine(j,!1):void 0,x=R.generateXYForText(z,F,j,!0),b=R.generateXYForText(z,F,j,!1),R.updateCircleY(),O=(R.config.axis_rotated?R.circleY:R.circleX).bind(R),G=(R.config.axis_rotated?R.circleX:R.circleY).bind(R),n&&(R.subY.domain(R.getYDomain(B,"y")),R.subY2.domain(R.getYDomain(B,"y2"))),R.updateXgridFocus(),I.select("text."+a.text+"."+a.empty).attr("x",R.width/2).attr("y",R.height/2).text(D.data_empty_label_text).transition().style("opacity",B.length?0:1),p&&R.redrawEventRect(),R.updateGrid(w),R.updateStanfordElements(w),R.updateRegion(w),R.updateBar(S),R.updateLine(S),R.updateArea(S),R.updateCircle(O,G),R.hasDataLabel()&&R.updateText(x,b,S),R.redrawTitle&&R.redrawTitle(),R.redrawArc&&R.redrawArc(w,S,u),R.redrawSubchart&&R.redrawSubchart(i,e,w,S,z,F,j),R.isStanfordGraphType()&&R.drawColorScale(),I.selectAll("."+a.selectedCircles).filter(R.isBarType.bind(R)).selectAll("circle").remove(),t.flow&&(C=R.generateFlow({targets:B,flow:t.flow,duration:t.flow.duration,drawBar:_,drawLine:m,drawArea:v,cx:O,cy:G,xv:X,xForText:x,yForText:b})),R.isTabVisible()&&(w?(M=N.transition().duration(w),T=[],[R.redrawBar(_,!0,M),R.redrawLine(m,!0,M),R.redrawArea(v,!0,M),R.redrawCircle(O,G,!0,M),R.redrawText(x,b,t.flow,!0,M),R.redrawRegion(!0,M),R.redrawGrid(!0,M)].forEach(function(t){t.forEach(function(t){T.push(t)})}),P=R.generateWait(),T.forEach(function(t){P.add(t)}),P(function(){C&&C(),D.onrendered&&D.onrendered.call(R)})):(R.redrawBar(_),R.redrawLine(m),R.redrawArea(v),R.redrawCircle(O,G),R.redrawText(x,b,t.flow),R.redrawRegion(),R.redrawGrid(),C&&C(),D.onrendered&&D.onrendered.call(R))),R.mapToIds(R.data.targets).forEach(function(t){R.withoutFadeIn[t]=!0})},e.prototype.updateAndRedraw=function(t){var e,n=this,i=n.config;(t=t||{}).withTransition=c(t,"withTransition",!0),t.withTransform=c(t,"withTransform",!1),t.withLegend=c(t,"withLegend",!1),t.withUpdateXDomain=c(t,"withUpdateXDomain",!0),t.withUpdateOrgXDomain=c(t,"withUpdateOrgXDomain",!0),t.withTransitionForExit=!1,t.withTransitionForTransform=c(t,"withTransitionForTransform",t.withTransition),n.updateSizes(),t.withLegend&&i.legend_show||(e=n.axis.generateTransitions(t.withTransitionForAxis?i.transition_duration:0),n.updateScales(),n.updateSvgSize(),n.transformAll(t.withTransitionForTransform,e)),n.redraw(t,e)},e.prototype.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},e.prototype.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},e.prototype.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},e.prototype.isCustomX=function(){var t=this.config;return!this.isTimeSeries()&&(t.data_x||_(t.data_xs))},e.prototype.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},e.prototype.getTranslate=function(t){var e,n,i=this,r=i.config;return"main"===t?(e=o(i.margin.left),n=o(i.margin.top)):"context"===t?(e=o(i.margin2.left),n=o(i.margin2.top)):"legend"===t?(e=i.margin3.left,n=i.margin3.top):"x"===t?(e=0,n=r.axis_rotated?0:i.height):"y"===t?(e=0,n=r.axis_rotated?i.height:0):"y2"===t?(e=r.axis_rotated?0:i.width,n=r.axis_rotated?1:0):"subx"===t?(e=0,n=r.axis_rotated?0:i.height2):"arc"===t&&(e=i.arcWidth/2,n=i.arcHeight/2-(i.hasType("gauge")?6:0)),"translate("+e+","+n+")"},e.prototype.initialOpacity=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?1:0},e.prototype.initialOpacityForCircle=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?this.opacityForCircle(t):0},e.prototype.opacityForCircle=function(t){var e=(p(this.config.point_show)?this.config.point_show(t):this.config.point_show)||this.isStanfordType(t)?1:0;return v(t.value)?this.isScatterType(t)?.5:e:0},e.prototype.opacityForText=function(){return this.hasDataLabel()?1:0},e.prototype.xx=function(t){return t?this.x(t.x):null},e.prototype.xvCustom=function(t,e){var n=this,i=e?t[e]:t.value;return n.isTimeSeries()?i=n.parseDate(t.value):n.isCategorized()&&"string"==typeof t.value&&(i=n.config.axis_x_categories.indexOf(t.value)),Math.ceil(n.x(i))},e.prototype.yvCustom=function(t,e){var n=t.axis&&"y2"===t.axis?this.y2:this.y,i=e?t[e]:t.value;return Math.ceil(n(i))},e.prototype.xv=function(t){var e=this,n=t.value;return e.isTimeSeries()?n=e.parseDate(t.value):e.isCategorized()&&"string"==typeof t.value&&(n=e.config.axis_x_categories.indexOf(t.value)),Math.ceil(e.x(n))},e.prototype.yv=function(t){var e=t.axis&&"y2"===t.axis?this.y2:this.y;return Math.ceil(e(t.value))},e.prototype.subxx=function(t){return t?this.subX(t.x):null},e.prototype.transformMain=function(t,e){var n,i,r,o=this;e&&e.axisX?n=e.axisX:(n=o.main.select("."+a.axisX),t&&(n=n.transition())),e&&e.axisY?i=e.axisY:(i=o.main.select("."+a.axisY),t&&(i=i.transition())),e&&e.axisY2?r=e.axisY2:(r=o.main.select("."+a.axisY2),t&&(r=r.transition())),(t?o.main.transition():o.main).attr("transform",o.getTranslate("main")),n.attr("transform",o.getTranslate("x")),i.attr("transform",o.getTranslate("y")),r.attr("transform",o.getTranslate("y2")),o.main.select("."+a.chartArcs).attr("transform",o.getTranslate("arc"))},e.prototype.transformAll=function(t,e){var n=this;n.transformMain(t,e),n.config.subchart_show&&n.transformContext(t,e),n.legend&&n.transformLegend(t)},e.prototype.updateSvgSize=function(){var t=this,e=t.svg.select(".c3-brush .overlay");t.svg.attr("width",t.currentWidth).attr("height",t.currentHeight),t.svg.selectAll(["#"+t.clipId,"#"+t.clipIdForGrid]).select("rect").attr("width",t.width).attr("height",t.height),t.svg.select("#"+t.clipIdForXAxis).select("rect").attr("x",t.getXAxisClipX.bind(t)).attr("y",t.getXAxisClipY.bind(t)).attr("width",t.getXAxisClipWidth.bind(t)).attr("height",t.getXAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForYAxis).select("rect").attr("x",t.getYAxisClipX.bind(t)).attr("y",t.getYAxisClipY.bind(t)).attr("width",t.getYAxisClipWidth.bind(t)).attr("height",t.getYAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForSubchart).select("rect").attr("width",t.width).attr("height",e.size()?e.attr("height"):0),t.selectChart.style("max-height",t.currentHeight+"px")},e.prototype.updateDimension=function(t){var e=this;t||(e.config.axis_rotated?(e.axes.x.call(e.xAxis),e.axes.subx.call(e.subXAxis)):(e.axes.y.call(e.yAxis),e.axes.y2.call(e.y2Axis))),e.updateSizes(),e.updateScales(),e.updateSvgSize(),e.transformAll(!1)},e.prototype.observeInserted=function(t){var e,n=this;"undefined"!=typeof MutationObserver?(e=new MutationObserver(function(i){i.forEach(function(i){"childList"===i.type&&i.previousSibling&&(e.disconnect(),n.intervalForObserveInserted=window.setInterval(function(){t.node().parentNode&&(window.clearInterval(n.intervalForObserveInserted),n.updateDimension(),n.brush&&n.brush.update(),n.config.oninit.call(n),n.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),t.transition().style("opacity",1))},10))})})).observe(t.node(),{attributes:!0,childList:!0,characterData:!0}):window.console.error("MutationObserver not defined.")},e.prototype.bindResize=function(){var t=this,e=t.config;if(t.resizeFunction=t.generateResize(),t.resizeFunction.add(function(){e.onresize.call(t)}),e.resize_auto&&t.resizeFunction.add(function(){void 0!==t.resizeTimeout&&window.clearTimeout(t.resizeTimeout),t.resizeTimeout=window.setTimeout(function(){delete t.resizeTimeout,t.updateAndRedraw({withUpdateXDomain:!1,withUpdateOrgXDomain:!1,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),t.brush&&t.brush.update()},100)}),t.resizeFunction.add(function(){e.onresized.call(t)}),t.resizeIfElementDisplayed=function(){null!=t.api&&t.api.element.offsetParent&&t.resizeFunction()},window.attachEvent)window.attachEvent("onresize",t.resizeIfElementDisplayed);else if(window.addEventListener)window.addEventListener("resize",t.resizeIfElementDisplayed,!1);else{var n=window.onresize;n?n.add&&n.remove||(n=t.generateResize()).add(window.onresize):n=t.generateResize(),n.add(t.resizeFunction),window.onresize=function(){t.api.element.offsetParent&&n()}}},e.prototype.bindWindowFocus=function(){var t=this;this.windowFocusHandler||(this.windowFocusHandler=function(){t.redraw()},window.addEventListener("focus",this.windowFocusHandler))},e.prototype.unbindWindowFocus=function(){window.removeEventListener("focus",this.windowFocusHandler),delete this.windowFocusHandler},e.prototype.generateResize=function(){var t=[];function e(){t.forEach(function(t){t()})}return e.add=function(e){t.push(e)},e.remove=function(e){for(var n=0;ne.getTotalLength())break;n--}while(n>0);return n})),"SVGPathSegList"in window||(window.SVGPathSegList=function(t){this._pathElement=t,this._list=this._parsePath(this._pathElement.getAttribute("d")),this._mutationObserverConfig={attributes:!0,attributeFilter:["d"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},window.SVGPathSegList.prototype.classname="SVGPathSegList",Object.defineProperty(window.SVGPathSegList.prototype,"numberOfItems",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"pathSegList",{get:function(){return this._pathSegList||(this._pathSegList=new window.SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"normalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"animatedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"animatedNormalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),window.SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},window.SVGPathSegList.prototype._updateListFromPathMutations=function(t){if(this._pathElement){var e=!1;t.forEach(function(t){"d"==t.attributeName&&(e=!0)}),e&&(this._list=this._parsePath(this._pathElement.getAttribute("d")))}},window.SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute("d",window.SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},window.SVGPathSegList.prototype.segmentChanged=function(t){this._writeListToPath()},window.SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach(function(t){t._owningPathSegList=null}),this._list=[],this._writeListToPath()},window.SVGPathSegList.prototype.initialize=function(t){return this._checkPathSynchronizedToList(),this._list=[t],t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList.prototype._checkValidIndex=function(t){if(isNaN(t)||t<0||t>=this.numberOfItems)throw"INDEX_SIZE_ERR"},window.SVGPathSegList.prototype.getItem=function(t){return this._checkPathSynchronizedToList(),this._checkValidIndex(t),this._list[t]},window.SVGPathSegList.prototype.insertItemBefore=function(t,e){return this._checkPathSynchronizedToList(),e>this.numberOfItems&&(e=this.numberOfItems),t._owningPathSegList&&(t=t.clone()),this._list.splice(e,0,t),t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList.prototype.replaceItem=function(t,e){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._checkValidIndex(e),this._list[e]=t,t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList.prototype.removeItem=function(t){this._checkPathSynchronizedToList(),this._checkValidIndex(t);var e=this._list[t];return this._list.splice(t,1),this._writeListToPath(),e},window.SVGPathSegList.prototype.appendItem=function(t){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._list.push(t),t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList._pathSegArrayAsString=function(t){var e="",n=!0;return t.forEach(function(t){n?(n=!1,e+=t._asPathString()):e+=" "+t._asPathString()}),e},window.SVGPathSegList.prototype._parsePath=function(t){if(!t||0==t.length)return[];var e=this,n=function(){this.pathSegList=[]};n.prototype.appendSegment=function(t){this.pathSegList.push(t)};var i=function(t){this._string=t,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=window.SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};i.prototype._isCurrentSpace=function(){var t=this._string[this._currentIndex];return t<=" "&&(" "==t||"\n"==t||"\t"==t||"\r"==t||"\f"==t)},i.prototype._skipOptionalSpaces=function(){for(;this._currentIndex="0"&&t<="9")&&e!=window.SVGPathSeg.PATHSEG_CLOSEPATH?e==window.SVGPathSeg.PATHSEG_MOVETO_ABS?window.SVGPathSeg.PATHSEG_LINETO_ABS:e==window.SVGPathSeg.PATHSEG_MOVETO_REL?window.SVGPathSeg.PATHSEG_LINETO_REL:e:window.SVGPathSeg.PATHSEG_UNKNOWN},i.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var t=this.peekSegmentType();return t==window.SVGPathSeg.PATHSEG_MOVETO_ABS||t==window.SVGPathSeg.PATHSEG_MOVETO_REL},i.prototype._parseNumber=function(){var t=0,e=0,n=1,i=0,r=1,a=1,o=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex"9")&&"."!=this._string.charAt(this._currentIndex))){for(var s=this._currentIndex;this._currentIndex="0"&&this._string.charAt(this._currentIndex)<="9";)this._currentIndex++;if(this._currentIndex!=s)for(var u=this._currentIndex-1,c=1;u>=s;)e+=c*(this._string.charAt(u--)-"0"),c*=10;if(this._currentIndex=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex="0"&&this._string.charAt(this._currentIndex)<="9";)n*=10,i+=(this._string.charAt(this._currentIndex)-"0")/n,this._currentIndex+=1}if(this._currentIndex!=o&&this._currentIndex+1=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex="0"&&this._string.charAt(this._currentIndex)<="9";)t*=10,t+=this._string.charAt(this._currentIndex)-"0",this._currentIndex++}var l=e+i;if(l*=r,t&&(l*=Math.pow(10,a*t)),o!=this._currentIndex)return this._skipOptionalSpacesOrDelimiter(),l}},i.prototype._parseArcFlag=function(){if(!(this._currentIndex>=this._endIndex)){var t=!1,e=this._string.charAt(this._currentIndex++);if("0"==e)t=!1;else{if("1"!=e)return;t=!0}return this._skipOptionalSpacesOrDelimiter(),t}},i.prototype.parseSegment=function(){var t=this._string[this._currentIndex],n=this._pathSegTypeFromChar(t);if(n==window.SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==window.SVGPathSeg.PATHSEG_UNKNOWN)return null;if((n=this._nextCommandHelper(t,this._previousCommand))==window.SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;switch(this._previousCommand=n,n){case window.SVGPathSeg.PATHSEG_MOVETO_REL:return new window.SVGPathSegMovetoRel(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_MOVETO_ABS:return new window.SVGPathSegMovetoAbs(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_REL:return new window.SVGPathSegLinetoRel(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_ABS:return new window.SVGPathSegLinetoAbs(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new window.SVGPathSegLinetoHorizontalRel(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new window.SVGPathSegLinetoHorizontalAbs(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new window.SVGPathSegLinetoVerticalRel(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new window.SVGPathSegLinetoVerticalAbs(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new window.SVGPathSegClosePath(e);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegCurvetoCubicRel(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:return i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoCubicAbs(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:return i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoCubicSmoothRel(e,i.x,i.y,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:return i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoCubicSmoothAbs(e,i.x,i.y,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:return i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoQuadraticRel(e,i.x,i.y,i.x1,i.y1);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:return i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoQuadraticAbs(e,i.x,i.y,i.x1,i.y1);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new window.SVGPathSegCurvetoQuadraticSmoothRel(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new window.SVGPathSegCurvetoQuadraticSmoothAbs(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_ARC_REL:return i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegArcRel(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);case window.SVGPathSeg.PATHSEG_ARC_ABS:return i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegArcAbs(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);default:throw"Unknown path seg type."}};var r=new n,a=new i(t);if(!a.initialCommandIsMoveTo())return[];for(;a.hasMoreData();){var o=a.parseSegment();if(!o)return[];r.appendSegment(o)}return r.pathSegList}),String.prototype.padEnd||(String.prototype.padEnd=function(t,e){return t>>=0,e=String(void 0!==e?e:" "),this.length>t?String(this):((t-=this.length)>e.length&&(e+=e.repeat(t/e.length)),String(this)+e.slice(0,t))}),i.prototype.axis=function(){},i.prototype.axis.labels=function(t){var e=this.internal;arguments.length&&(Object.keys(t).forEach(function(n){e.axis.setLabelText(n,t[n])}),e.axis.updateLabels())},i.prototype.axis.max=function(e){var n=this.internal,i=n.config;if(!arguments.length)return{x:i.axis_x_max,y:i.axis_y_max,y2:i.axis_y2_max};"object"===t(e)?(v(e.x)&&(i.axis_x_max=e.x),v(e.y)&&(i.axis_y_max=e.y),v(e.y2)&&(i.axis_y2_max=e.y2)):i.axis_y_max=i.axis_y2_max=e,n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})},i.prototype.axis.min=function(e){var n=this.internal,i=n.config;if(!arguments.length)return{x:i.axis_x_min,y:i.axis_y_min,y2:i.axis_y2_min};"object"===t(e)?(v(e.x)&&(i.axis_x_min=e.x),v(e.y)&&(i.axis_y_min=e.y),v(e.y2)&&(i.axis_y2_min=e.y2)):i.axis_y_min=i.axis_y2_min=e,n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})},i.prototype.axis.range=function(t){if(!arguments.length)return{max:this.axis.max(),min:this.axis.min()};d(t.max)&&this.axis.max(t.max),d(t.min)&&this.axis.min(t.min)},i.prototype.category=function(t,e){var n=this.internal,i=n.config;return arguments.length>1&&(i.axis_x_categories[t]=e,n.redraw()),i.axis_x_categories[t]},i.prototype.categories=function(t){var e=this.internal,n=e.config;return arguments.length?(n.axis_x_categories=t,e.redraw(),n.axis_x_categories):n.axis_x_categories},i.prototype.resize=function(t){var e=this.internal,n=e.config;n.size_width=t?t.width:null,n.size_height=t?t.height:null,this.flush()},i.prototype.flush=function(){var t=this.internal;t.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},i.prototype.destroy=function(){var t=this.internal;if(window.clearInterval(t.intervalForObserveInserted),void 0!==t.resizeTimeout&&window.clearTimeout(t.resizeTimeout),window.detachEvent)window.detachEvent("onresize",t.resizeIfElementDisplayed);else if(window.removeEventListener)window.removeEventListener("resize",t.resizeIfElementDisplayed);else{var e=window.onresize;e&&e.add&&e.remove&&e.remove(t.resizeFunction)}return t.resizeFunction.remove(),t.unbindWindowFocus(),t.selectChart.classed("c3",!1).html(""),Object.keys(t).forEach(function(e){t[e]=null}),null},i.prototype.color=function(t){var e=this.internal;return e.color(t)},i.prototype.data=function(t){var e=this.internal.data.targets;return void 0===t?e:e.filter(function(e){return[].concat(t).indexOf(e.id)>=0})},i.prototype.data.shown=function(t){return this.internal.filterTargetsToShow(this.data(t))},i.prototype.data.values=function(t){var e,n=null;return t&&(e=this.data(t),n=e[0]?e[0].values.map(function(t){return t.value}):null),n},i.prototype.data.names=function(t){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",t)},i.prototype.data.colors=function(t){return this.internal.updateDataAttributes("colors",t)},i.prototype.data.axes=function(t){return this.internal.updateDataAttributes("axes",t)},i.prototype.flow=function(t){var e,n,i,r,a,o,s,u=this.internal,c=[],l=u.getMaxDataCount(),f=0,h=0;if(t.json)n=u.convertJsonToData(t.json,t.keys);else if(t.rows)n=u.convertRowsToData(t.rows);else{if(!t.columns)return;n=u.convertColumnsToData(t.columns)}e=u.convertDataToTargets(n,!0),u.data.targets.forEach(function(t){var n,i,r=!1;for(n=0;n1?r.values[r.values.length-1].x-a.x:a.x-u.getXDomain(u.data.targets)[0]:1,i=[a.x-o,a.x],u.updateXDomain(null,!0,!0,!1,i)),u.updateTargets(u.data.targets),u.redraw({flow:{index:a.index,length:f,duration:v(t.duration)?t.duration:u.config.transition_duration,done:t.done,orgDataCount:l},withLegend:!0,withTransition:l>1,withTrimXDomain:!1,withUpdateXAxis:!0})},e.prototype.generateFlow=function(t){var e=this,n=e.config,i=e.d3;return function(){var r,o,s,c,l,f,d,h,p,g,y,v=t.targets,_=t.flow,m=t.drawBar,x=t.drawLine,b=t.drawArea,w=t.cx,S=t.cy,A=t.xv,T=t.xForText,P=t.yForText,C=t.duration,M=1,E=_.index,L=_.length,k=e.getValueOnIndex(e.data.targets[0].values,E),V=e.getValueOnIndex(e.data.targets[0].values,E+L),O=e.x.domain(),G=_.duration||C,R=_.done||function(){},I=e.generateWait();e.flowing=!0,e.data.targets.forEach(function(t){t.values.splice(0,L)}),s=e.updateXDomain(v,!0,!0),e.updateXGrid&&e.updateXGrid(!0),c=e.xgrid||i.selectAll([]),l=e.xgridLines||i.selectAll([]),f=e.mainRegion||i.selectAll([]),d=e.mainText||i.selectAll([]),h=e.mainBar||i.selectAll([]),p=e.mainLine||i.selectAll([]),g=e.mainArea||i.selectAll([]),y=e.mainCircle||i.selectAll([]),_.orgDataCount?r=1===_.orgDataCount||(k&&k.x)===(V&&V.x)?e.x(O[0])-e.x(s[0]):e.isTimeSeries()?e.x(O[0])-e.x(s[0]):e.x(k.x)-e.x(V.x):1!==e.data.targets[0].values.length?r=e.x(O[0])-e.x(s[0]):e.isTimeSeries()?(k=e.getValueOnIndex(e.data.targets[0].values,0),V=e.getValueOnIndex(e.data.targets[0].values,e.data.targets[0].values.length-1),r=e.x(k.x)-e.x(V.x)):r=u(s)/2,M=u(O)/u(s),o="translate("+r+",0) scale("+M+",1)",e.hideXGridFocus();var N=i.transition().ease(i.easeLinear).duration(G);I.add(e.xAxis(e.axes.x,N)),I.add(h.transition(N).attr("transform",o)),I.add(p.transition(N).attr("transform",o)),I.add(g.transition(N).attr("transform",o)),I.add(y.transition(N).attr("transform",o)),I.add(d.transition(N).attr("transform",o)),I.add(f.filter(e.isRegionOnX).transition(N).attr("transform",o)),I.add(c.transition(N).attr("transform",o)),I.add(l.transition(N).attr("transform",o)),I(function(){var t,i=[],r=[];if(L){for(t=0;t=0&&(e=!0)}),!e)}),o.regions},i.prototype.selected=function(t){var e=this.internal,n=e.d3;return e.main.selectAll("."+a.shapes+e.getTargetSelectorSuffix(t)).selectAll("."+a.shape).filter(function(){return n.select(this).classed(a.SELECTED)}).nodes().map(function(t){var e=t.__data__;return e.data?e.data:e})},i.prototype.select=function(t,e,n){var i=this.internal,r=i.d3,o=i.config;o.data_selection_enabled&&i.main.selectAll("."+a.shapes).selectAll("."+a.shape).each(function(s,u){var c=r.select(this),l=s.data?s.data.id:s.id,f=i.getToggle(this,s).bind(i),h=o.data_selection_grouped||!t||t.indexOf(l)>=0,p=!e||e.indexOf(u)>=0,g=c.classed(a.SELECTED);c.classed(a.line)||c.classed(a.area)||(h&&p?o.data_selection_isselectable(s)&&!g&&f(!0,c.classed(a.SELECTED,!0),s,u):d(n)&&n&&g&&f(!1,c.classed(a.SELECTED,!1),s,u))})},i.prototype.unselect=function(t,e){var n=this.internal,i=n.d3,r=n.config;r.data_selection_enabled&&n.main.selectAll("."+a.shapes).selectAll("."+a.shape).each(function(o,s){var u=i.select(this),c=o.data?o.data.id:o.id,l=n.getToggle(this,o).bind(n),f=r.data_selection_grouped||!t||t.indexOf(c)>=0,d=!e||e.indexOf(s)>=0,h=u.classed(a.SELECTED);u.classed(a.line)||u.classed(a.area)||f&&d&&r.data_selection_isselectable(o)&&h&&l(!1,u.classed(a.SELECTED,!1),o,s)})},i.prototype.show=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.removeHiddenTargetIds(t),(n=i.svg.selectAll(i.selectorTargets(t))).transition().style("display","initial","important").style("opacity",1,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",1)}),e.withLegend&&i.showLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},i.prototype.hide=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.addHiddenTargetIds(t),(n=i.svg.selectAll(i.selectorTargets(t))).transition().style("opacity",0,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",0),n.style("display","none")}),e.withLegend&&i.hideLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},i.prototype.toggle=function(t,e){var n=this,i=this.internal;i.mapToTargetIds(t).forEach(function(t){i.isTargetToShow(t)?n.hide(t,e):n.show(t,e)})},i.prototype.tooltip=function(){},i.prototype.tooltip.show=function(t){var e,n,i=this.internal,r={};t.mouse?r=t.mouse:(t.data?n=t.data:void 0!==t.x&&(e=t.id?i.data.targets.filter(function(e){return e.id===t.id}):i.data.targets,n=i.filterByX(e,t.x).slice(0,1)[0]),r=n?i.getMousePosition(n):null),i.dispatchEvent("mousemove",r),i.config.tooltip_onshow.call(i,n)},i.prototype.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0),this.internal.config.tooltip_onhide.call(this)},i.prototype.transform=function(t,e){var n=this.internal,i=["pie","donut"].indexOf(t)>=0?{withTransform:!0}:null;n.transformTo(e,t,i)},e.prototype.transformTo=function(t,e,n){var i=this,r=!i.hasArcType(),a=n||{withTransitionForAxis:r};a.withTransitionForTransform=!1,i.transiting=!1,i.setTargetType(t,e),i.updateTargets(i.data.targets),i.updateAndRedraw(a)},i.prototype.x=function(t){var e=this.internal;return arguments.length&&(e.updateTargetX(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},i.prototype.xs=function(t){var e=this.internal;return arguments.length&&(e.updateTargetXs(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},i.prototype.zoom=function(t){var e=this.internal;return t?(e.isTimeSeries()&&(t=t.map(function(t){return e.parseDate(t)})),e.config.subchart_show?e.brush.selectionAsValue(t,!0):(e.updateXDomain(null,!0,!1,!1,t),e.redraw({withY:e.config.zoom_rescale,withSubchart:!1})),e.config.zoom_onzoom.call(this,e.x.orgDomain()),t):e.x.domain()},i.prototype.zoom.enable=function(t){var e=this.internal;e.config.zoom_enabled=t,e.updateAndRedraw()},i.prototype.unzoom=function(){var t=this.internal;t.config.subchart_show?t.brush.clear():(t.updateXDomain(null,!0,!1,!1,t.subX.domain()),t.redraw({withY:t.config.zoom_rescale,withSubchart:!1}))},i.prototype.zoom.max=function(t){var e=this.internal,n=e.config,i=e.d3;if(0!==t&&!t)return n.zoom_x_max;n.zoom_x_max=i.max([e.orgXDomain[1],t])},i.prototype.zoom.min=function(t){var e=this.internal,n=e.config,i=e.d3;if(0!==t&&!t)return n.zoom_x_min;n.zoom_x_min=i.min([e.orgXDomain[0],t])},i.prototype.zoom.range=function(t){if(!arguments.length)return{max:this.domain.max(),min:this.domain.min()};d(t.max)&&this.domain.max(t.max),d(t.min)&&this.domain.min(t.min)},e.prototype.initPie=function(){var t=this,e=t.d3;t.pie=e.pie().value(function(t){return t.values.reduce(function(t,e){return t+e.value},0)});var n=t.getOrderFunction();if(n&&(t.isOrderAsc()||t.isOrderDesc())){var i=n;n=function(t,e){return-1*i(t,e)}}t.pie.sort(n||null)},e.prototype.updateRadius=function(){var t=this,e=t.config,n=e.gauge_width||e.donut_width,i=t.filterTargetsToShow(t.data.targets).length*t.config.gauge_arcs_minWidth;t.radiusExpanded=Math.min(t.arcWidth,t.arcHeight)/2*(t.hasType("gauge")?.85:1),t.radius=.95*t.radiusExpanded,t.innerRadiusRatio=n?(t.radius-n)/t.radius:.6,t.innerRadius=t.hasType("donut")||t.hasType("gauge")?t.radius*t.innerRadiusRatio:0,t.gaugeArcWidth=n||(i<=t.radius-t.innerRadius?t.radius-t.innerRadius:i<=t.radius?i:t.radius)},e.prototype.updateArc=function(){var t=this;t.svgArc=t.getSvgArc(),t.svgArcExpanded=t.getSvgArcExpanded(),t.svgArcExpandedSub=t.getSvgArcExpanded(.98)},e.prototype.updateAngle=function(t){var e,n,i,r,a=this,o=a.config,s=!1,u=0;return o?(a.pie(a.filterTargetsToShow(a.data.targets)).forEach(function(e){s||e.data.id!==t.data.id||(s=!0,(t=e).index=u),u++}),isNaN(t.startAngle)&&(t.startAngle=0),isNaN(t.endAngle)&&(t.endAngle=t.startAngle),a.isGaugeType(t.data)&&(e=o.gauge_min,n=o.gauge_max,i=Math.PI*(o.gauge_fullCircle?2:1)/(n-e),r=t.value.375?1.175-36/o.radius:.8)*o.radius/r:0,c="translate("+n*a+","+i*a+")";else if(u&&l&&o.filterTargetsToShow(o.data.targets).length>1){var f=Math.sin(u.endAngle-Math.PI/2);n=Math.cos(u.endAngle-Math.PI/2)*(o.radiusExpanded+25),i=f*(o.radiusExpanded+15-Math.abs(10*f))+3,c="translate("+n+","+i+")"}return c},e.prototype.getArcRatio=function(t){var e=this.config,n=Math.PI*(this.hasType("gauge")&&!e.gauge_fullCircle?1:2);return t?(t.endAngle-t.startAngle)/n:null},e.prototype.convertToArcData=function(t){return this.addName({id:t.data.id,value:t.value,ratio:this.getArcRatio(t),index:t.index})},e.prototype.textForArcLabel=function(t){var e,n,i,r,a,o=this;return o.shouldShowArcLabel()?(e=o.updateAngle(t),n=e?e.value:null,i=o.getArcRatio(e),r=t.data.id,o.hasType("gauge")||o.meetsArcLabelThreshold(i)?(a=o.getArcLabelFormat())?a(n,i,r):o.defaultArcValueFormat(n,i):""):""},e.prototype.textForGaugeMinMax=function(t,e){var n=this.getGaugeLabelExtents();return n?n(t,e):t},e.prototype.expandArc=function(t){var e,n=this;n.transiting?e=window.setInterval(function(){n.transiting||(window.clearInterval(e),n.legend.selectAll(".c3-legend-item-focused").size()>0&&n.expandArc(t))},10):(t=n.mapToTargetIds(t),n.svg.selectAll(n.selectorTargets(t,"."+a.chartArc)).each(function(t){n.shouldExpand(t.data.id)&&n.d3.select(this).selectAll("path").transition().duration(n.expandDuration(t.data.id)).attr("d",n.svgArcExpanded).transition().duration(2*n.expandDuration(t.data.id)).attr("d",n.svgArcExpandedSub).each(function(t){n.isDonutType(t.data)})}))},e.prototype.unexpandArc=function(t){var e=this;e.transiting||(t=e.mapToTargetIds(t),e.svg.selectAll(e.selectorTargets(t,"."+a.chartArc)).selectAll("path").transition().duration(function(t){return e.expandDuration(t.data.id)}).attr("d",e.svgArc),e.svg.selectAll("."+a.arc))},e.prototype.expandDuration=function(t){var e=this.config;return this.isDonutType(t)?e.donut_expand_duration:this.isGaugeType(t)?e.gauge_expand_duration:this.isPieType(t)?e.pie_expand_duration:50},e.prototype.shouldExpand=function(t){var e=this.config;return this.isDonutType(t)&&e.donut_expand||this.isGaugeType(t)&&e.gauge_expand||this.isPieType(t)&&e.pie_expand},e.prototype.shouldShowArcLabel=function(){var t=this.config,e=!0;return this.hasType("donut")?e=t.donut_label_show:this.hasType("pie")&&(e=t.pie_label_show),e},e.prototype.meetsArcLabelThreshold=function(t){var e=this.config,n=this.hasType("donut")?e.donut_label_threshold:e.pie_label_threshold;return t>=n},e.prototype.getArcLabelFormat=function(){var t=this.config,e=t.pie_label_format;return this.hasType("gauge")?e=t.gauge_label_format:this.hasType("donut")&&(e=t.donut_label_format),e},e.prototype.getGaugeLabelExtents=function(){var t=this.config;return t.gauge_label_extents},e.prototype.getArcTitle=function(){return this.hasType("donut")?this.config.donut_title:""},e.prototype.updateTargetsForArc=function(t){var e,n,i=this,r=i.main,o=i.classChartArc.bind(i),s=i.classArcs.bind(i),u=i.classFocus.bind(i);e=r.select("."+a.chartArcs).selectAll("."+a.chartArc).data(i.pie(t)).attr("class",function(t){return o(t)+u(t.data)}),(n=e.enter().append("g").attr("class",o)).append("g").attr("class",s),n.append("text").attr("dy",i.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},e.prototype.initArc=function(){var t=this;t.arcs=t.main.select("."+a.chart).append("g").attr("class",a.chartArcs).attr("transform",t.getTranslate("arc")),t.arcs.append("text").attr("class",a.chartArcsTitle).style("text-anchor","middle").text(t.getArcTitle())},e.prototype.redrawArc=function(t,e,n){var i,r,o,s,u=this,c=u.d3,l=u.config,f=u.main,d=u.hasType("gauge");if(i=f.selectAll("."+a.arcs).selectAll("."+a.arc).data(u.arcData.bind(u)),r=i.enter().append("path").attr("class",u.classArc.bind(u)).style("fill",function(t){return u.color(t.data)}).style("cursor",function(t){return l.interaction_enabled&&l.data_selection_isselectable(t)?"pointer":null}).each(function(t){u.isGaugeType(t.data)&&(t.startAngle=t.endAngle=l.gauge_startingAngle),this._current=t}).merge(i),d&&(o=f.selectAll("."+a.arcs).selectAll("."+a.arcLabelLine).data(u.arcData.bind(u)),s=o.enter().append("rect").attr("class",function(t){return a.arcLabelLine+" "+a.target+" "+a.target+"-"+t.data.id}).merge(o),1===u.filterTargetsToShow(u.data.targets).length?s.style("display","none"):s.style("fill",function(t){return u.levelColor?u.levelColor(t.data.values[0].value):u.color(t.data)}).style("display",l.gauge_labelLine_show?"":"none").each(function(t){var e=0,n=0,i=0,r="";if(u.hiddenTargetIds.indexOf(t.data.id)<0){var a=u.updateAngle(t),o=u.gaugeArcWidth/u.filterTargetsToShow(u.data.targets).length*(a.index+1),s=a.endAngle-Math.PI/2,l=u.radius-o,f=s-(0===l?0:1/l);e=u.radiusExpanded-u.radius+o,n=Math.cos(f)*l,i=Math.sin(f)*l,r="rotate("+180*s/Math.PI+", "+n+", "+i+")"}c.select(this).attr("x",n).attr("y",i).attr("width",e).attr("height",2).attr("transform",r).style("stroke-dasharray","0, "+(e+2)+", 0")})),r.attr("transform",function(t){return!u.isGaugeType(t.data)&&n?"scale(0)":""}).on("mouseover",l.interaction_enabled?function(t){var e,n;u.transiting||(e=u.updateAngle(t))&&(n=u.convertToArcData(e),u.expandArc(e.data.id),u.api.focus(e.data.id),u.toggleFocusLegend(e.data.id,!0),u.config.data_onmouseover(n,this))}:null).on("mousemove",l.interaction_enabled?function(t){var e,n,i=u.updateAngle(t);i&&(e=u.convertToArcData(i),n=[e],u.showTooltip(n,this))}:null).on("mouseout",l.interaction_enabled?function(t){var e,n;u.transiting||(e=u.updateAngle(t))&&(n=u.convertToArcData(e),u.unexpandArc(e.data.id),u.api.revert(),u.revertLegend(),u.hideTooltip(),u.config.data_onmouseout(n,this))}:null).on("click",l.interaction_enabled?function(t,e){var n,i=u.updateAngle(t);i&&(n=u.convertToArcData(i),u.toggleShape&&u.toggleShape(this,n,e),u.config.data_onclick.call(u.api,n,this))}:null).each(function(){u.transiting=!0}).transition().duration(t).attrTween("d",function(t){var e,n=u.updateAngle(t);return n?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),e=c.interpolate(this._current,n),this._current=e(0),function(n){var i=e(n);return i.data=t.data,u.getArc(i,!0)}):function(){return"M 0 0"}}).attr("transform",n?"scale(1)":"").style("fill",function(t){return u.levelColor?u.levelColor(t.data.values[0].value):u.color(t.data.id)}).call(u.endall,function(){u.transiting=!1}),i.exit().transition().duration(e).style("opacity",0).remove(),f.selectAll("."+a.chartArc).select("text").style("opacity",0).attr("class",function(t){return u.isGaugeType(t.data)?a.gaugeValue:""}).text(u.textForArcLabel.bind(u)).attr("transform",u.transformForArcLabel.bind(u)).style("font-size",function(t){return u.isGaugeType(t.data)&&1===u.filterTargetsToShow(u.data.targets).length?Math.round(u.radius/5)+"px":""}).transition().duration(t).style("opacity",function(t){return u.isTargetToShow(t.data.id)&&u.isArcType(t.data)?1:0}),f.select("."+a.chartArcsTitle).style("opacity",u.hasType("donut")||d?1:0),d){var h=0,p=u.arcs.select("g."+a.chartArcsBackground).selectAll("path."+a.chartArcsBackground).data(u.data.targets);p.enter().append("path").attr("class",function(t,e){return a.chartArcsBackground+" "+a.chartArcsBackground+"-"+e}).merge(p).attr("d",function(t){if(u.hiddenTargetIds.indexOf(t.id)>=0)return"M 0 0";var e={data:[{value:l.gauge_max}],startAngle:l.gauge_startingAngle,endAngle:-1*l.gauge_startingAngle*(l.gauge_fullCircle?Math.PI:1),index:h++};return u.getArc(e,!0,!0)}),p.exit().remove(),u.arcs.select("."+a.chartArcsGaugeUnit).attr("dy",".75em").text(l.gauge_label_show?l.gauge_units:""),u.arcs.select("."+a.chartArcsGaugeMin).attr("dx",-1*(u.innerRadius+(u.radius-u.innerRadius)/(l.gauge_fullCircle?1:2))+"px").attr("dy","1.2em").text(l.gauge_label_show?u.textForGaugeMinMax(l.gauge_min,!1):""),u.arcs.select("."+a.chartArcsGaugeMax).attr("dx",u.innerRadius+(u.radius-u.innerRadius)/(l.gauge_fullCircle?1:2)+"px").attr("dy","1.2em").text(l.gauge_label_show?u.textForGaugeMinMax(l.gauge_max,!0):"")}},e.prototype.initGauge=function(){var t=this.arcs;this.hasType("gauge")&&(t.append("g").attr("class",a.chartArcsBackground),t.append("text").attr("class",a.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",a.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",a.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},e.prototype.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},e.prototype.hasCaches=function(t){for(var e=0;e=0?a.focused:"")},e.prototype.classDefocused=function(t){return" "+(this.defocusedTargetIds.indexOf(t.id)>=0?a.defocused:"")},e.prototype.classChartText=function(t){return a.chartText+this.classTarget(t.id)},e.prototype.classChartLine=function(t){return a.chartLine+this.classTarget(t.id)},e.prototype.classChartBar=function(t){return a.chartBar+this.classTarget(t.id)},e.prototype.classChartArc=function(t){return a.chartArc+this.classTarget(t.data.id)},e.prototype.getTargetSelectorSuffix=function(t){return this.generateTargetClass(t).replace(/([?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\])/g,"\\$1")},e.prototype.selectorTarget=function(t,e){return(e||"")+"."+a.target+this.getTargetSelectorSuffix(t)},e.prototype.selectorTargets=function(t,e){var n=this;return(t=t||[]).length?t.map(function(t){return n.selectorTarget(t,e)}):null},e.prototype.selectorLegend=function(t){return"."+a.legendItem+this.getTargetSelectorSuffix(t)},e.prototype.selectorLegends=function(t){var e=this;return t&&t.length?t.map(function(t){return e.selectorLegend(t)}):null},e.prototype.getClipPath=function(t){var e=window.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(e?"":document.URL.split("#")[0])+"#"+t+")"},e.prototype.appendClip=function(t,e){return t.append("clipPath").attr("id",e).append("rect")},e.prototype.getAxisClipX=function(t){var e=Math.max(30,this.margin.left);return t?-(1+e):-(e-1)},e.prototype.getAxisClipY=function(t){return t?-20:-this.margin.top},e.prototype.getXAxisClipX=function(){return this.getAxisClipX(!this.config.axis_rotated)},e.prototype.getXAxisClipY=function(){return this.getAxisClipY(!this.config.axis_rotated)},e.prototype.getYAxisClipX=function(){return this.config.axis_y_inner?-1:this.getAxisClipX(this.config.axis_rotated)},e.prototype.getYAxisClipY=function(){return this.getAxisClipY(this.config.axis_rotated)},e.prototype.getAxisClipWidth=function(t){var e=Math.max(30,this.margin.left),n=Math.max(30,this.margin.right);return t?this.width+2+e+n:this.margin.left+20},e.prototype.getAxisClipHeight=function(t){return(t?this.margin.bottom:this.margin.top+this.height)+20},e.prototype.getXAxisClipWidth=function(){return this.getAxisClipWidth(!this.config.axis_rotated)},e.prototype.getXAxisClipHeight=function(){return this.getAxisClipHeight(!this.config.axis_rotated)},e.prototype.getYAxisClipWidth=function(){return this.getAxisClipWidth(this.config.axis_rotated)+(this.config.axis_y_inner?20:0)},e.prototype.getYAxisClipHeight=function(){return this.getAxisClipHeight(this.config.axis_rotated)},e.prototype.generateColor=function(){var t=this.config,e=this.d3,n=t.data_colors,i=_(t.color_pattern)?t.color_pattern:e.schemeCategory10,r=t.data_color,a=[];return function(t){var e,o=t.id||t.data&&t.data.id||t;return n[o]instanceof Function?e=n[o](t):n[o]?e=n[o]:(a.indexOf(o)<0&&a.push(o),e=i[a.indexOf(o)%i.length],n[o]=e),r instanceof Function?r(e,t):e}},e.prototype.generateLevelColor=function(){var t=this.config,e=t.color_pattern,n=t.color_threshold,i="value"===n.unit,r=n.values&&n.values.length?n.values:[],a=n.max||100;return _(n)&&_(e)?function(t){var n,o=e[e.length-1];for(n=0;n=0?s.data.xs[n]=(e&&s.data.xs[n]?s.data.xs[n]:[]).concat(t.map(function(t){return t[i]}).filter(v).map(function(t,e){return s.generateTargetX(t,n,e)})):u.data_x?s.data.xs[n]=s.getOtherTargetXs():_(u.data_xs)&&(s.data.xs[n]=s.getXValuesOfXKey(i,s.data.targets)):s.data.xs[n]=t.map(function(t,e){return e})}),i.forEach(function(t){if(!s.data.xs[t])throw new Error('x is not defined for id = "'+t+'".')}),(n=i.map(function(e,n){var i=u.data_idConverter(e);return{id:i,id_org:e,values:t.map(function(t,r){var a,c,l=s.getXKey(e),f=t[l],d=null===t[e]||isNaN(t[e])?null:+t[e];return s.isCustomX()&&s.isCategorized()&&!y(f)?(0===n&&0===r&&(u.axis_x_categories=[]),-1===(a=u.axis_x_categories.indexOf(f))&&(a=u.axis_x_categories.length,u.axis_x_categories.push(f))):a=s.generateTargetX(f,e,r),(y(t[e])||s.data.xs[e].length<=r)&&(a=void 0),c={x:a,value:d,id:i},s.isStanfordGraphType()&&(c.epochs=t[o]),c}).filter(function(t){return d(t.x)})}})).forEach(function(t){var e;u.data_xSort&&(t.values=t.values.sort(function(t,e){var n=t.x||0===t.x?t.x:1/0,i=e.x||0===e.x?e.x:1/0;return n-i})),e=0,t.values.forEach(function(t){t.index=e++}),s.data.xs[t.id].sort(function(t,e){return t-e})}),s.hasNegativeValue=s.hasNegativeValueInTargets(n),s.hasPositiveValue=s.hasPositiveValueInTargets(n),u.data_type&&s.setTargetType(s.mapToIds(n).filter(function(t){return!(t in u.data_types)}),u.data_type),n.forEach(function(t){s.addCache(t.id_org,t)}),n},e.prototype.isEpochs=function(t){var e=this.config;return e.data_epochs&&t===e.data_epochs},e.prototype.isX=function(t){var e,n,i,r=this.config;return r.data_x&&t===r.data_x||_(r.data_xs)&&(e=r.data_xs,n=t,i=!1,Object.keys(e).forEach(function(t){e[t]===n&&(i=!0)}),i)},e.prototype.isNotX=function(t){return!this.isX(t)},e.prototype.isNotXAndNotEpochs=function(t){return!this.isX(t)&&!this.isEpochs(t)},e.prototype.getXKey=function(t){var e=this.config;return e.data_x?e.data_x:_(e.data_xs)?e.data_xs[t]:null},e.prototype.getXValuesOfXKey=function(t,e){var n,i=this,r=e&&_(e)?i.mapToIds(e):[];return r.forEach(function(e){i.getXKey(e)===t&&(n=i.data.xs[e])}),n},e.prototype.getXValue=function(t,e){return t in this.data.xs&&this.data.xs[t]&&v(this.data.xs[t][e])?this.data.xs[t][e]:e},e.prototype.getOtherTargetXs=function(){var t=Object.keys(this.data.xs);return t.length?this.data.xs[t[0]]:null},e.prototype.getOtherTargetX=function(t){var e=this.getOtherTargetXs();return e&&te?1:t>=e?0:NaN})},e.prototype.addHiddenTargetIds=function(t){t=t instanceof Array?t:new Array(t);for(var e=0;e0})},e.prototype.isOrderDesc=function(){var t=this.config;return"string"==typeof t.data_order&&"desc"===t.data_order.toLowerCase()},e.prototype.isOrderAsc=function(){var t=this.config;return"string"==typeof t.data_order&&"asc"===t.data_order.toLowerCase()},e.prototype.getOrderFunction=function(){var t=this.config,e=this.isOrderAsc(),n=this.isOrderDesc();if(e||n){var i=function(t,e){return t+Math.abs(e.value)};return function(t,n){var r=t.values.reduce(i,0),a=n.values.reduce(i,0);return e?a-r:r-a}}if(p(t.data_order))return t.data_order;if(f(t.data_order)){var r=t.data_order;return function(t,e){return r.indexOf(t.id)-r.indexOf(e.id)}}},e.prototype.orderTargets=function(t){var e=this.getOrderFunction();return e&&t.sort(e),t},e.prototype.filterByX=function(t,e){return this.d3.merge(t.map(function(t){return t.values})).filter(function(t){return t.x-e==0})},e.prototype.filterRemoveNull=function(t){return t.filter(function(t){return v(t.value)})},e.prototype.filterByXDomain=function(t,e){return t.map(function(t){return{id:t.id,id_org:t.id_org,values:t.values.filter(function(t){return e[0]<=t.x&&t.x<=e[1]})}})},e.prototype.hasDataLabel=function(){var e=this.config;return!("boolean"!=typeof e.data_labels||!e.data_labels)||!("object"!==t(e.data_labels)||!_(e.data_labels))},e.prototype.getDataLabelLength=function(t,e,n){var i=this,r=[0,0];return i.selectChart.select("svg").selectAll(".dummy").data([t,e]).enter().append("text").text(function(t){return i.dataLabelFormat(t.id)(t)}).each(function(t,e){r[e]=1.3*this.getBoundingClientRect()[n]}).remove(),r},e.prototype.isNoneArc=function(t){return this.hasTarget(this.data.targets,t.id)},e.prototype.isArc=function(t){return"data"in t&&this.hasTarget(this.data.targets,t.data.id)},e.prototype.findClosestFromTargets=function(t,e){var n,i=this;return n=t.map(function(t){return i.findClosest(t.values,e)}),i.findClosest(n,e)},e.prototype.findClosest=function(t,e){var n,i=this,r=i.config.point_sensitivity;return t.filter(function(t){return t&&i.isBarType(t.id)}).forEach(function(t){var e=i.main.select("."+a.bars+i.getTargetSelectorSuffix(t.id)+" ."+a.bar+"-"+t.index).node();!n&&i.isWithinBar(i.d3.mouse(e),e)&&(n=t)}),t.filter(function(t){return t&&!i.isBarType(t.id)}).forEach(function(t){var a=i.config.tooltip_horizontal?i.horizontalDistance(t,e):i.dist(t,e);a0)for(o=s.hasNegativeValueInTargets(t),e=0;e=0})).length)for(i=r[0],o&&l[i]&&l[i].forEach(function(t,e){l[i][e]=t<0?t:0}),n=1;n0||(l[i][e]+=+t)});return s.d3.min(Object.keys(l).map(function(t){return s.d3.min(l[t])}))},e.prototype.getYDomainMax=function(t){var e,n,i,r,a,o,s=this,u=s.config,c=s.mapToIds(t),l=s.getValuesAsIdKeyed(t);if(u.data_groups.length>0)for(o=s.hasPositiveValueInTargets(t),e=0;e=0})).length)for(i=r[0],o&&l[i]&&l[i].forEach(function(t,e){l[i][e]=t>0?t:0}),n=1;n=0&&S>=0,h=w<=0&&S<=0,(v(x)&&d||v(b)&&h)&&(T=!1),T&&(d&&(w=0),h&&(S=0)),r=Math.abs(S-w),a=o=.1*r,void 0!==A&&(s=Math.max(Math.abs(w),Math.abs(S)),S=A+s,w=A-s),C?(c=p.getDataLabelLength(w,S,"width"),l=u(p.y.range()),f=[c[0]/l,c[1]/l],a+=r*(f[1]/(1-f[0]-f[1])),o+=r*(f[0]/(1-f[0]-f[1]))):M&&(c=p.getDataLabelLength(w,S,"height"),a+=p.axis.convertPixelsToAxisPadding(c[1],r),o+=p.axis.convertPixelsToAxisPadding(c[0],r)),"y"===e&&_(g.axis_y_padding)&&(a=p.axis.getPadding(g.axis_y_padding,"top",a,r),o=p.axis.getPadding(g.axis_y_padding,"bottom",o,r)),"y2"===e&&_(g.axis_y2_padding)&&(a=p.axis.getPadding(g.axis_y2_padding,"top",a,r),o=p.axis.getPadding(g.axis_y2_padding,"bottom",o,r)),T&&(d&&(o=w),h&&(a=-S)),i=[w-o,S+a],P?i.reverse():i)},e.prototype.getXDomainMin=function(t){var e=this,n=e.config;return d(n.axis_x_min)?e.isTimeSeries()?this.parseDate(n.axis_x_min):n.axis_x_min:e.d3.min(t,function(t){return e.d3.min(t.values,function(t){return t.x})})},e.prototype.getXDomainMax=function(t){var e=this,n=e.config;return d(n.axis_x_max)?e.isTimeSeries()?this.parseDate(n.axis_x_max):n.axis_x_max:e.d3.max(t,function(t){return e.d3.max(t.values,function(t){return t.x})})},e.prototype.getXDomainPadding=function(e){var n,i,r,a,o=this.config,s=e[1]-e[0];return this.isCategorized()?i=0:this.hasType("bar")?(n=this.getMaxDataCount(),i=n>1?s/(n-1)/2:.5):i=.01*s,"object"===t(o.axis_x_padding)&&_(o.axis_x_padding)?(r=v(o.axis_x_padding.left)?o.axis_x_padding.left:i,a=v(o.axis_x_padding.right)?o.axis_x_padding.right:i):r=a="number"==typeof o.axis_x_padding?o.axis_x_padding:i,{left:r,right:a}},e.prototype.getXDomain=function(t){var e=this,n=[e.getXDomainMin(t),e.getXDomainMax(t)],i=n[0],r=n[1],a=e.getXDomainPadding(n),o=0,s=0;return i-r!=0||e.isCategorized()||(e.isTimeSeries()?(i=new Date(.5*i.getTime()),r=new Date(1.5*r.getTime())):(i=0===i?1:.5*i,r=0===r?-1:1.5*r)),(i||0===i)&&(o=e.isTimeSeries()?new Date(i.getTime()-a.left):i-a.left),(r||0===r)&&(s=e.isTimeSeries()?new Date(r.getTime()+a.right):r+a.right),[o,s]},e.prototype.updateXDomain=function(t,e,n,i,r){var a=this,o=a.config;return n&&(a.x.domain(r||a.d3.extent(a.getXDomain(t))),a.orgXDomain=a.x.domain(),o.zoom_enabled&&a.zoom.update(),a.subX.domain(a.x.domain()),a.brush&&a.brush.updateScale(a.subX)),e&&a.x.domain(r||(!a.brush||a.brush.empty()?a.orgXDomain:a.brush.selectionAsValue())),i&&a.x.domain(a.trimXDomain(a.x.orgDomain())),a.x.domain()},e.prototype.trimXDomain=function(t){var e=this.getZoomDomain(),n=e[0],i=e[1];return t[0]<=n&&(t[1]=+t[1]+(n-t[0]),t[0]=n),i<=t[1]&&(t[0]=+t[0]-(t[1]-i),t[1]=i),t},e.prototype.drag=function(t){var e,n,i,r,o,s,u,c,f=this,d=f.config,h=f.main,p=f.d3;f.hasArcType()||d.data_selection_enabled&&d.data_selection_multiple&&(e=f.dragStart[0],n=f.dragStart[1],i=t[0],r=t[1],o=Math.min(e,i),s=Math.max(e,i),u=d.data_selection_grouped?f.margin.top:Math.min(n,r),c=d.data_selection_grouped?f.height:Math.max(n,r),h.select("."+a.dragarea).attr("x",o).attr("y",u).attr("width",s-o).attr("height",c-u),h.selectAll("."+a.shapes).selectAll("."+a.shape).filter(function(t){return d.data_selection_isselectable(t)}).each(function(t,e){var n,i,r,d,h,g,y=p.select(this),v=y.classed(a.SELECTED),_=y.classed(a.INCLUDED),m=!1;if(y.classed(a.circle))n=1*y.attr("cx"),i=1*y.attr("cy"),h=f.togglePoint,m=ou&&(s=s.filter(function(t){return(""+t).indexOf(".")<0}));return s},e.prototype.getGridFilterToRemove=function(t){return t?function(e){var n=!1;return[].concat(t).forEach(function(t){("value"in t&&e.value===t.value||"class"in t&&e.class===t.class)&&(n=!0)}),n}:function(){return!0}},e.prototype.removeGridLines=function(t,e){var n=this.config,i=this.getGridFilterToRemove(t),r=function(t){return!i(t)},o=e?a.xgridLines:a.ygridLines,s=e?a.xgridLine:a.ygridLine;this.main.select("."+o).selectAll("."+s).filter(i).transition().duration(n.transition_duration).style("opacity",0).remove(),e?n.grid_x_lines=n.grid_x_lines.filter(r):n.grid_y_lines=n.grid_y_lines.filter(r)},e.prototype.initEventRect=function(){var t=this,e=t.config;t.main.select("."+a.chart).append("g").attr("class",a.eventRects).style("fill-opacity",0),t.eventRect=t.main.select("."+a.eventRects).append("rect").attr("class",a.eventRect),e.zoom_enabled&&t.zoom&&(t.eventRect.call(t.zoom).on("dblclick.zoom",null),e.zoom_initialRange&&t.eventRect.transition().duration(0).call(t.zoom.transform,t.zoomTransform(e.zoom_initialRange)))},e.prototype.redrawEventRect=function(){var t,e,n=this,i=n.d3,r=n.config;function o(){n.svg.select("."+a.eventRect).style("cursor",null),n.hideXGridFocus(),n.hideTooltip(),n.unexpandCircles(),n.unexpandBars()}t=n.width,e=n.height,n.main.select("."+a.eventRects).style("cursor",r.zoom_enabled?r.axis_rotated?"ns-resize":"ew-resize":null),n.eventRect.attr("x",0).attr("y",0).attr("width",t).attr("height",e).on("mouseout",r.interaction_enabled?function(){r&&(n.hasArcType()||o())}:null).on("mousemove",r.interaction_enabled?function(){var t,e,s,u,c;n.dragging||n.hasArcType(t)||(t=n.filterTargetsToShow(n.data.targets),e=i.mouse(this),s=n.findClosestFromTargets(t,e),!n.mouseover||s&&s.id===n.mouseover.id||(r.data_onmouseout.call(n.api,n.mouseover),n.mouseover=void 0),s?(u=n.isScatterOrStanfordType(s)||!r.tooltip_grouped?[s]:n.filterByX(t,s.x),c=u.map(function(t){return n.addName(t)}),n.showTooltip(c,this),r.point_focus_expand_enabled&&(n.unexpandCircles(),c.forEach(function(t){n.expandCircles(t.index,t.id,!1)})),n.expandBars(s.index,s.id,!0),n.showXGridFocus(c),(n.isBarType(s.id)||n.dist(s,e)=0}).classed(a.legendItemFocused,e).transition().duration(100).style("opacity",function(){var t=e?n.opacityForLegend:n.opacityForUnfocusedLegend;return t.call(n,n.d3.select(this))})},e.prototype.revertLegend=function(){var t=this,e=t.d3;t.legend.selectAll("."+a.legendItem).classed(a.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return t.opacityForLegend(e.select(this))})},e.prototype.showLegend=function(t){var e=this,n=e.config;n.legend_show||(n.legend_show=!0,e.legend.style("visibility","visible"),e.legendHasRendered||e.updateLegendWithDefaults()),e.removeHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("visibility","visible").transition().style("opacity",function(){return e.opacityForLegend(e.d3.select(this))})},e.prototype.hideLegend=function(t){var e=this,n=e.config;n.legend_show&&h(t)&&(n.legend_show=!1,e.legend.style("visibility","hidden")),e.addHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("opacity",0).style("visibility","hidden")},e.prototype.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},e.prototype.updateLegend=function(t,e,n){var i,r,o,s,u,l,f,h,p,g,y,v,_,m,x,b,w=this,S=w.config,A=4,T=10,P=0,C=0,M=10,E=S.legend_item_tile_width+5,L=0,k={},V={},O={},G=[0],R={},I=0;function N(e,n,i){var r,o,s=0===i,u=i===t.length-1,c=function(t,e){return w.legendItemTextBox[e]||(w.legendItemTextBox[e]=w.getTextRect(t.textContent,a.legendItem,t)),w.legendItemTextBox[e]}(e,n),l=c.width+E+(!u||w.isLegendRight||w.isLegendInset?T:0)+S.legend_padding,f=c.height+A,d=w.isLegendRight||w.isLegendInset?f:l,h=w.isLegendRight||w.isLegendInset?w.getLegendHeight():w.getLegendWidth();function p(t,e){e||(r=(h-L-d)/2)=P)&&(P=l),(!C||f>=C)&&(C=f),o=w.isLegendRight||w.isLegendInset?C:P,S.legend_equally?(Object.keys(V).forEach(function(t){V[t]=P}),Object.keys(O).forEach(function(t){O[t]=C}),(r=(h-o*t.length)/2)0&&0===b.size()&&(b=w.legend.insert("g","."+a.legendItem).attr("class",a.legendBackground).append("rect")),_=w.legend.selectAll("text").data(t).text(function(t){return d(S.data_names[t])?S.data_names[t]:t}).each(function(t,e){N(this,t,e)}),(y?_.transition():_).attr("x",r).attr("y",u),m=w.legend.selectAll("rect."+a.legendItemEvent).data(t),(y?m.transition():m).attr("width",function(t){return V[t]}).attr("height",function(t){return O[t]}).attr("x",o).attr("y",l),x=w.legend.selectAll("line."+a.legendItemTile).data(t),(y?x.transition():x).style("stroke",w.levelColor?function(t){return w.levelColor(w.cache[t].values[0].value)}:w.color).attr("x1",f).attr("y1",p).attr("x2",h).attr("y2",p),b&&(y?b.transition():b).attr("height",w.getLegendHeight()-12).attr("width",P*(I+1)+10),w.legend.selectAll("."+a.legendItem).classed(a.legendItemHidden,function(t){return!w.isTargetToShow(t)}),w.updateLegendItemWidth(P),w.updateLegendItemHeight(C),w.updateLegendStep(I),w.updateSizes(),w.updateScales(),w.updateSvgSize(),w.transformAll(v,n),w.legendHasRendered=!0},e.prototype.initRegion=function(){this.region=this.main.append("g").attr("clip-path",this.clipPath).attr("class",a.regions)},e.prototype.updateRegion=function(t){var e=this,n=e.config;e.region.style("visibility",e.hasArcType()?"hidden":"visible");var i=e.main.select("."+a.regions).selectAll("."+a.region).data(n.regions),r=i.enter().append("rect").attr("x",e.regionX.bind(e)).attr("y",e.regionY.bind(e)).attr("width",e.regionWidth.bind(e)).attr("height",e.regionHeight.bind(e)).style("fill-opacity",0);e.mainRegion=r.merge(i).attr("class",e.classRegion.bind(e)),i.exit().transition().duration(t).style("opacity",0).remove()},e.prototype.redrawRegion=function(t,e){var n=this,i=n.mainRegion;return[(t?i.transition(e):i).attr("x",n.regionX.bind(n)).attr("y",n.regionY.bind(n)).attr("width",n.regionWidth.bind(n)).attr("height",n.regionHeight.bind(n)).style("fill-opacity",function(t){return v(t.opacity)?t.opacity:.1})]},e.prototype.regionX=function(t){var e=this,n=e.config,i="y"===t.axis?e.y:e.y2;return"y"===t.axis||"y2"===t.axis?n.axis_rotated&&"start"in t?i(t.start):0:n.axis_rotated?0:"start"in t?e.x(e.isTimeSeries()?e.parseDate(t.start):t.start):0},e.prototype.regionY=function(t){var e=this,n=e.config,i="y"===t.axis?e.y:e.y2;return"y"===t.axis||"y2"===t.axis?n.axis_rotated?0:"end"in t?i(t.end):0:n.axis_rotated&&"start"in t?e.x(e.isTimeSeries()?e.parseDate(t.start):t.start):0},e.prototype.regionWidth=function(t){var e,n=this,i=n.config,r=n.regionX(t),a="y"===t.axis?n.y:n.y2;return(e="y"===t.axis||"y2"===t.axis?i.axis_rotated&&"end"in t?a(t.end):n.width:i.axis_rotated?n.width:"end"in t?n.x(n.isTimeSeries()?n.parseDate(t.end):t.end):n.width)n.bar_width_max?n.bar_width_max:i},e.prototype.getBars=function(t,e){return(e?this.main.selectAll("."+a.bars+this.getTargetSelectorSuffix(e)):this.main).selectAll("."+a.bar+(v(t)?"-"+t:""))},e.prototype.expandBars=function(t,e,n){n&&this.unexpandBars(),this.getBars(t,e).classed(a.EXPANDED,!0)},e.prototype.unexpandBars=function(t){this.getBars(t).classed(a.EXPANDED,!1)},e.prototype.generateDrawBar=function(t,e){var n=this.config,i=this.generateGetBarPoints(t,e);return function(t,e){var r=i(t,e),a=n.axis_rotated?1:0,o=n.axis_rotated?0:1,s="M "+r[0][a]+","+r[0][o]+" L"+r[1][a]+","+r[1][o]+" L"+r[2][a]+","+r[2][o]+" L"+r[3][a]+","+r[3][o]+" z";return s}},e.prototype.generateGetBarPoints=function(t,e){var n=this,i=e?n.subXAxis:n.xAxis,r=t.__max__+1,a=n.getBarW(i,r),o=n.getShapeX(a,r,t,!!e),s=n.getShapeY(!!e),u=n.getShapeOffset(n.isBarType,t,!!e),c=a*(n.config.bar_space/2),l=e?n.getSubYScale:n.getYScale;return function(t,e){var i=l.call(n,t.id)(0),r=u(t,e)||i,f=o(t),d=s(t);return n.config.axis_rotated&&(0=0&&(c+=s(r[o].value)-u))}),c}},e.prototype.isWithinShape=function(t,e){var n,i=this,r=i.d3.select(t);return i.isTargetToShow(e.id)?"circle"===t.nodeName?n=i.isStepType(e)?i.isWithinStep(t,i.getYScale(e.id)(e.value)):i.isWithinCircle(t,1.5*i.pointSelectR(e)):"path"===t.nodeName&&(n=!r.classed(a.bar)||i.isWithinBar(i.d3.mouse(t),t)):n=!1,n},e.prototype.getInterpolate=function(t){var e=this,n=e.d3,i={linear:n.curveLinear,"linear-closed":n.curveLinearClosed,basis:n.curveBasis,"basis-open":n.curveBasisOpen,"basis-closed":n.curveBasisClosed,bundle:n.curveBundle,cardinal:n.curveCardinal,"cardinal-open":n.curveCardinalOpen,"cardinal-closed":n.curveCardinalClosed,monotone:n.curveMonotoneX,step:n.curveStep,"step-before":n.curveStepBefore,"step-after":n.curveStepAfter};return e.isSplineType(t)?i[e.config.spline_interpolation_type]||i.cardinal:e.isStepType(t)?i[e.config.line_step_type]:i.linear},e.prototype.initLine=function(){this.main.select("."+a.chart).append("g").attr("class",a.chartLines)},e.prototype.updateTargetsForLine=function(t){var e,n,i=this,r=i.config,o=i.classChartLine.bind(i),s=i.classLines.bind(i),u=i.classAreas.bind(i),c=i.classCircles.bind(i),l=i.classFocus.bind(i);e=i.main.select("."+a.chartLines).selectAll("."+a.chartLine).data(t).attr("class",function(t){return o(t)+l(t)}),(n=e.enter().append("g").attr("class",o).style("opacity",0).style("pointer-events","none")).append("g").attr("class",s),n.append("g").attr("class",u),n.append("g").attr("class",function(t){return i.generateClass(a.selectedCircles,t.id)}),n.append("g").attr("class",c).style("cursor",function(t){return r.data_selection_isselectable(t)?"pointer":null}),t.forEach(function(t){i.main.selectAll("."+a.selectedCircles+i.getTargetSelectorSuffix(t.id)).selectAll("."+a.selectedCircle).each(function(e){e.value=t.values[e.index].value})})},e.prototype.updateLine=function(t){var e=this,n=e.main.selectAll("."+a.lines).selectAll("."+a.line).data(e.lineData.bind(e)),i=n.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color);e.mainLine=i.merge(n).style("opacity",e.initialOpacity.bind(e)).style("shape-rendering",function(t){return e.isStepType(t)?"crispEdges":""}).attr("transform",null),n.exit().transition().duration(t).style("opacity",0)},e.prototype.redrawLine=function(t,e,n){return[(e?this.mainLine.transition(n):this.mainLine).attr("d",t).style("stroke",this.color).style("opacity",1)]},e.prototype.generateDrawLine=function(t,e){var n=this,i=n.config,r=n.d3.line(),a=n.generateGetLinePoints(t,e),o=e?n.getSubYScale:n.getYScale,s=function(t){return(e?n.subxx:n.xx).call(n,t)},u=function(t,e){return i.data_groups.length>0?a(t,e)[0][1]:o.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x(u).y(s):r.x(s).y(u),i.line_connectNull||(r=r.defined(function(t){return null!=t.value})),function(t){var a,s=i.line_connectNull?n.filterRemoveNull(t.values):t.values,u=e?n.subX:n.x,c=o.call(n,t.id),l=0,f=0;return n.isLineType(t)?i.data_regions[t.id]?a=n.lineWithRegions(s,u,c,i.data_regions[t.id]):(n.isStepType(t)&&(s=n.convertValuesToStep(s)),a=r.curve(n.getInterpolate(t))(s)):(s[0]&&(l=u(s[0].x),f=c(s[0].value)),a=i.axis_rotated?"M "+f+" "+l:"M "+l+" "+f),a||"M 0 0"}},e.prototype.generateGetLinePoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,a=n.getShapeX(0,r,t,!!e),o=n.getShapeY(!!e),s=n.getShapeOffset(n.isLineType,t,!!e),u=e?n.getSubYScale:n.getYScale;return function(t,e){var r=u.call(n,t.id)(0),c=s(t,e)||r,l=a(t),f=o(t);return i.axis_rotated&&(00?a(t,e)[0][1]:o.call(n,t.id)(n.getAreaBaseValue(t.id))},c=function(t,e){return i.data_groups.length>0?a(t,e)[1][1]:o.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x0(u).x1(c).y(s):r.x(s).y0(i.area_above?0:u).y1(c),i.line_connectNull||(r=r.defined(function(t){return null!==t.value})),function(t){var e,a=i.line_connectNull?n.filterRemoveNull(t.values):t.values,o=0,s=0;return n.isAreaType(t)?(n.isStepType(t)&&(a=n.convertValuesToStep(a)),e=r.curve(n.getInterpolate(t))(a)):(a[0]&&(o=n.x(a[0].x),s=n.getYScale(t.id)(a[0].value)),e=i.axis_rotated?"M "+s+" "+o:"M "+o+" "+s),e||"M 0 0"}},e.prototype.getAreaBaseValue=function(){return 0},e.prototype.generateGetAreaPoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,a=n.getShapeX(0,r,t,!!e),o=n.getShapeY(!!e),s=n.getShapeOffset(n.isAreaType,t,!!e),u=e?n.getSubYScale:n.getYScale;return function(t,e){var r=u.call(n,t.id)(0),c=s(t,e)||r,l=a(t),f=o(t);return i.axis_rotated&&(00?(t=n.getShapeIndices(n.isLineType),e=n.generateGetLinePoints(t),n.circleY=function(t,n){return e(t,n)[0][1]}):n.circleY=function(t){return n.getYScale(t.id)(t.value)}},e.prototype.getCircles=function(t,e){return(e?this.main.selectAll("."+a.circles+this.getTargetSelectorSuffix(e)):this.main).selectAll("."+a.circle+(v(t)?"-"+t:""))},e.prototype.expandCircles=function(t,e,n){var i=this.pointExpandedR.bind(this);n&&this.unexpandCircles(),this.getCircles(t,e).classed(a.EXPANDED,!0).attr("r",i)},e.prototype.unexpandCircles=function(t){var e=this,n=e.pointR.bind(e);e.getCircles(t).filter(function(){return e.d3.select(this).classed(a.EXPANDED)}).classed(a.EXPANDED,!1).attr("r",n)},e.prototype.pointR=function(t){var e=this.config;return this.isStepType(t)?0:p(e.point_r)?e.point_r(t):e.point_r},e.prototype.pointExpandedR=function(t){var e=this.config;return e.point_focus_expand_enabled?p(e.point_focus_expand_r)?e.point_focus_expand_r(t):e.point_focus_expand_r?e.point_focus_expand_r:1.75*this.pointR(t):this.pointR(t)},e.prototype.pointSelectR=function(t){var e=this.config;return p(e.point_select_r)?e.point_select_r(t):e.point_select_r?e.point_select_r:4*this.pointR(t)},e.prototype.isWithinCircle=function(t,e){var n=this.d3,i=n.mouse(t),r=n.select(t),a=+r.attr("cx"),o=+r.attr("cy");return Math.sqrt(Math.pow(a-i[0],2)+Math.pow(o-i[1],2))0?e:320/(this.hasType("gauge")&&!t.gauge_fullCircle?2:1)},e.prototype.getCurrentPaddingTop=function(){var t=this.config,e=v(t.padding_top)?t.padding_top:0;return this.title&&this.title.node()&&(e+=this.getTitlePadding()),e},e.prototype.getCurrentPaddingBottom=function(){var t=this.config;return v(t.padding_bottom)?t.padding_bottom:0},e.prototype.getCurrentPaddingLeft=function(t){var e=this.config;return v(e.padding_left)?e.padding_left:e.axis_rotated?!e.axis_x_show||e.axis_x_inner?1:Math.max(s(this.getAxisWidthByAxisId("x",t)),40):!e.axis_y_show||e.axis_y_inner?this.axis.getYAxisLabelPosition().isOuter?30:1:s(this.getAxisWidthByAxisId("y",t))},e.prototype.getCurrentPaddingRight=function(){var t=this,e=t.config,n=0,i=t.isLegendRight?t.getLegendWidth()+20:0;return n=v(e.padding_right)?e.padding_right+1:e.axis_rotated?10+i:!e.axis_y2_show||e.axis_y2_inner?2+i+(t.axis.getY2AxisLabelPosition().isOuter?20:0):s(t.getAxisWidthByAxisId("y2"))+i,t.colorScale&&t.colorScale.node()&&(n+=t.getColorScalePadding()),n},e.prototype.getParentRectValue=function(t){for(var e,n=this.selectChart.node();n&&"BODY"!==n.tagName;){try{e=n.getBoundingClientRect()[t]}catch(i){"width"===t&&(e=n.offsetWidth)}if(e)break;n=n.parentNode}return e},e.prototype.getParentWidth=function(){return this.getParentRectValue("width")},e.prototype.getParentHeight=function(){var t=this.selectChart.style("height");return t.indexOf("px")>0?+t.replace("px",""):0},e.prototype.getSvgLeft=function(t){var e=this,n=e.config,i=n.axis_rotated||!n.axis_rotated&&!n.axis_y_inner,r=n.axis_rotated?a.axisX:a.axisY,o=e.main.select("."+r).node(),s=o&&i?o.getBoundingClientRect():{right:0},u=e.selectChart.node().getBoundingClientRect(),c=e.hasArcType(),l=s.right-u.left-(c?0:e.getCurrentPaddingLeft(t));return l>0?l:0},e.prototype.getAxisWidthByAxisId=function(t,e){var n=this.axis.getLabelPositionById(t);return this.axis.getMaxTickWidth(t,e)+(n.isInner?20:40)},e.prototype.getHorizontalAxisHeight=function(t){var e=this,n=e.config,i=30;return"x"!==t||n.axis_x_show?"x"===t&&n.axis_x_height?n.axis_x_height:"y"!==t||n.axis_y_show?"y2"!==t||n.axis_y2_show?("x"===t&&!n.axis_rotated&&n.axis_x_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-Math.abs(n.axis_x_tick_rotate))/180)),"y"===t&&n.axis_rotated&&n.axis_y_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-Math.abs(n.axis_y_tick_rotate))/180)),i+(e.axis.getLabelPositionById(t).isInner?0:10)+("y2"===t?-10:0)):e.rotated_padding_top:!n.legend_show||e.isLegendRight||e.isLegendInset?1:10:8},e.prototype.initBrush=function(t){var e=this,n=e.d3;return e.brush=(e.config.axis_rotated?n.brushY():n.brushX()).on("brush",function(){var t=n.event.sourceEvent;t&&"zoom"===t.type||e.redrawForBrush()}).on("end",function(){var t=n.event.sourceEvent;t&&"zoom"===t.type||e.brush.empty()&&t&&"end"!==t.type&&e.brush.clear()}),e.brush.updateExtent=function(){var t,n=this.scale.range();return t=e.config.axis_rotated?[[0,n[0]],[e.width2,n[1]]]:[[n[0],0],[n[1],e.height2]],this.extent(t),this},e.brush.updateScale=function(t){return this.scale=t,this},e.brush.update=function(t){this.updateScale(t||e.subX).updateExtent(),e.context.select("."+a.brush).call(this)},e.brush.clear=function(){e.context.select("."+a.brush).call(e.brush.move,null)},e.brush.selection=function(){return n.brushSelection(e.context.select("."+a.brush).node())},e.brush.selectionAsValue=function(t,n){var i,r;return t?(e.context&&(i=[this.scale(t[0]),this.scale(t[1])],r=e.context.select("."+a.brush),n&&(r=r.transition()),e.brush.move(r,i)),[]):(i=e.brush.selection()||[0,0],[this.scale.invert(i[0]),this.scale.invert(i[1])])},e.brush.empty=function(){var t=e.brush.selection();return!t||t[0]===t[1]},e.brush.updateScale(t)},e.prototype.initSubchart=function(){var t=this,e=t.config,n=t.context=t.svg.append("g").attr("transform",t.getTranslate("context")),i=e.subchart_show?"visible":"hidden";n.style("visibility",i),n.append("g").attr("clip-path",t.clipPathForSubchart).attr("class",a.chart),n.select("."+a.chart).append("g").attr("class",a.chartBars),n.select("."+a.chart).append("g").attr("class",a.chartLines),n.append("g").attr("clip-path",t.clipPath).attr("class",a.brush),t.axes.subx=n.append("g").attr("class",a.axisX).attr("transform",t.getTranslate("subx")).attr("clip-path",e.axis_rotated?"":t.clipPathForXAxis)},e.prototype.initSubchartBrush=function(){this.initBrush(this.subX).updateExtent(),this.context.select("."+a.brush).call(this.brush)},e.prototype.updateTargetsForSubchart=function(t){var e,n,i,r,o=this,s=o.context,u=o.config,c=o.classChartBar.bind(o),l=o.classBars.bind(o),f=o.classChartLine.bind(o),d=o.classLines.bind(o),h=o.classAreas.bind(o);u.subchart_show&&(r=s.select("."+a.chartBars).selectAll("."+a.chartBar).data(t),(i=r.enter().append("g").style("opacity",0)).merge(r).attr("class",c),i.append("g").attr("class",l),n=s.select("."+a.chartLines).selectAll("."+a.chartLine).data(t),(e=n.enter().append("g").style("opacity",0)).merge(n).attr("class",f),e.append("g").attr("class",d),e.append("g").attr("class",h),s.selectAll("."+a.brush+" rect").attr(u.axis_rotated?"width":"height",u.axis_rotated?o.width2:o.height2))},e.prototype.updateBarForSubchart=function(t){var e=this,n=e.context.selectAll("."+a.bars).selectAll("."+a.bar).data(e.barData.bind(e)),i=n.enter().append("path").attr("class",e.classBar.bind(e)).style("stroke","none").style("fill",e.color);n.exit().transition().duration(t).style("opacity",0).remove(),e.contextBar=i.merge(n).style("opacity",e.initialOpacity.bind(e))},e.prototype.redrawBarForSubchart=function(t,e,n){(e?this.contextBar.transition(Math.random().toString()).duration(n):this.contextBar).attr("d",t).style("opacity",1)},e.prototype.updateLineForSubchart=function(t){var e=this,n=e.context.selectAll("."+a.lines).selectAll("."+a.line).data(e.lineData.bind(e)),i=n.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color);n.exit().transition().duration(t).style("opacity",0).remove(),e.contextLine=i.merge(n).style("opacity",e.initialOpacity.bind(e))},e.prototype.redrawLineForSubchart=function(t,e,n){(e?this.contextLine.transition(Math.random().toString()).duration(n):this.contextLine).attr("d",t).style("opacity",1)},e.prototype.updateAreaForSubchart=function(t){var e=this,n=e.d3,i=e.context.selectAll("."+a.areas).selectAll("."+a.area).data(e.lineData.bind(e)),r=i.enter().append("path").attr("class",e.classArea.bind(e)).style("fill",e.color).style("opacity",function(){return e.orgAreaOpacity=+n.select(this).style("opacity"),0});i.exit().transition().duration(t).style("opacity",0).remove(),e.contextArea=r.merge(i).style("opacity",0)},e.prototype.redrawAreaForSubchart=function(t,e,n){(e?this.contextArea.transition(Math.random().toString()).duration(n):this.contextArea).attr("d",t).style("fill",this.color).style("opacity",this.orgAreaOpacity)},e.prototype.redrawSubchart=function(t,e,n,i,r,a,o){var s,u,c,l=this,f=l.d3,d=l.config;l.context.style("visibility",d.subchart_show?"visible":"hidden"),d.subchart_show&&(f.event&&"zoom"===f.event.type&&l.brush.selectionAsValue(l.x.orgDomain()),t&&(l.brush.empty()||l.brush.selectionAsValue(l.x.orgDomain()),s=l.generateDrawArea(r,!0),u=l.generateDrawBar(a,!0),c=l.generateDrawLine(o,!0),l.updateBarForSubchart(n),l.updateLineForSubchart(n),l.updateAreaForSubchart(n),l.redrawBarForSubchart(u,n,n),l.redrawLineForSubchart(c,n,n),l.redrawAreaForSubchart(s,n,n)))},e.prototype.redrawForBrush=function(){var t,e=this,n=e.x,i=e.d3;e.redraw({withTransition:!1,withY:e.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withEventRect:!1,withDimension:!1}),t=i.event.selection||e.brush.scale.range(),e.main.select("."+a.eventRect).call(e.zoom.transform,i.zoomIdentity.scale(e.width/(t[1]-t[0])).translate(-t[0],0)),e.config.subchart_onbrush.call(e.api,n.orgDomain())},e.prototype.transformContext=function(t,e){var n;e&&e.axisSubX?n=e.axisSubX:(n=this.context.select("."+a.axisX),t&&(n=n.transition())),this.context.attr("transform",this.getTranslate("context")),n.attr("transform",this.getTranslate("subx"))},e.prototype.getDefaultSelection=function(){var t=this,e=t.config,n=p(e.axis_x_selection)?e.axis_x_selection(t.getXDomain(t.data.targets)):e.axis_x_selection;return t.isTimeSeries()&&(n=[t.parseDate(n[0]),t.parseDate(n[1])]),n},e.prototype.initText=function(){this.main.select("."+a.chart).append("g").attr("class",a.chartTexts),this.mainText=this.d3.selectAll([])},e.prototype.updateTargetsForText=function(t){var e=this,n=e.classChartText.bind(e),i=e.classTexts.bind(e),r=e.classFocus.bind(e),o=e.main.select("."+a.chartTexts).selectAll("."+a.chartText).data(t),s=o.enter().append("g").attr("class",n).style("opacity",0).style("pointer-events","none");s.append("g").attr("class",i),s.merge(o).attr("class",function(t){return n(t)+r(t)})},e.prototype.updateText=function(t,e,n){var i=this,r=i.config,o=i.barOrLineData.bind(i),s=i.classText.bind(i),u=i.main.selectAll("."+a.texts).selectAll("."+a.text).data(o),c=u.enter().append("text").attr("class",s).attr("text-anchor",function(t){return r.axis_rotated?t.value<0?"end":"start":"middle"}).style("stroke","none").attr("x",t).attr("y",e).style("fill",function(t){return i.color(t)}).style("fill-opacity",0);i.mainText=c.merge(u).text(function(t,e,n){return i.dataLabelFormat(t.id)(t.value,t.id,e,n)}),u.exit().transition().duration(n).style("fill-opacity",0).remove()},e.prototype.redrawText=function(t,e,n,i,r){return[(i?this.mainText.transition(r):this.mainText).attr("x",t).attr("y",e).style("fill",this.color).style("fill-opacity",n?0:this.opacityForText.bind(this))]},e.prototype.getTextRect=function(t,e,n){var i,r=this.d3.select("body").append("div").classed("c3",!0),a=r.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),o=this.d3.select(n).style("font");return a.selectAll(".dummy").data([t]).enter().append("text").classed(e||"",!0).style("font",o).text(t).each(function(){i=this.getBoundingClientRect()}),r.remove(),i},e.prototype.generateXYForText=function(t,e,n,i){var r=this,a=r.generateGetAreaPoints(t,!1),o=r.generateGetBarPoints(e,!1),s=r.generateGetLinePoints(n,!1),u=i?r.getXForText:r.getYForText;return function(t,e){var n=r.isAreaType(t)?a:r.isBarType(t)?o:s;return u.call(r,n(t,e),t,this)}},e.prototype.getXForText=function(t,e,n){var i,r,a=this,o=n.getBoundingClientRect();return a.config.axis_rotated?(r=a.isBarType(e)?4:6,i=t[2][1]+r*(e.value<0?-1:1)):i=a.hasType("bar")?(t[2][0]+t[0][0])/2:t[0][0],null===e.value&&(i>a.width?i=a.width-o.width:i<0&&(i=4)),i},e.prototype.getYForText=function(t,e,n){var i,r=this,a=n.getBoundingClientRect();return r.config.axis_rotated?i=(t[0][0]+t[2][0]+.6*a.height)/2:(i=t[2][1],e.value<0||0===e.value&&!r.hasPositiveValue?(i+=a.height,r.isBarType(e)&&r.isSafari()?i-=3:!r.isBarType(e)&&r.isChrome()&&(i+=3)):i+=r.isBarType(e)?-3:-6),null!==e.value||r.config.axis_rotated||(ithis.height&&(i=this.height-4)),i},e.prototype.initTitle=function(){this.title=this.svg.append("text").text(this.config.title_text).attr("class",this.CLASS.title)},e.prototype.redrawTitle=function(){var t=this;t.title.attr("x",t.xForTitle.bind(t)).attr("y",t.yForTitle.bind(t))},e.prototype.xForTitle=function(){var t=this,e=t.config,n=e.title_position||"left";return n.indexOf("right")>=0?t.currentWidth-t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).width-e.title_padding.right:n.indexOf("center")>=0?(t.currentWidth-t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).width)/2:e.title_padding.left},e.prototype.yForTitle=function(){var t=this;return t.config.title_padding.top+t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).height},e.prototype.getTitlePadding=function(){return this.yForTitle()+this.config.title_padding.bottom},e.prototype.drawColorScale=function(){var t,e,n,i,r,o,s,u=this,c=u.d3,l=u.config,f=u.data.targets[0];if((t=isNaN(l.stanford_scaleWidth)?20:l.stanford_scaleWidth)<0)throw Error("Colorscale's barheight and barwidth must be greater than 0.");s=u.height-l.stanford_padding.bottom-l.stanford_padding.top,n=c.range(l.stanford_padding.bottom,s,5),o=c.scaleSequential(f.colors).domain([n[n.length-1],n[0]]),u.colorScale&&u.colorScale.remove(),u.colorScale=u.svg.append("g").attr("width",50).attr("height",s).attr("class",a.colorScale),u.colorScale.append("g").attr("transform","translate(0, ".concat(l.stanford_padding.top,")")).selectAll("bars").data(n).enter().append("rect").attr("y",function(t,e){return 5*e}).attr("x",0).attr("width",t).attr("height",5).attr("fill",function(t){return o(t)}),r=c.scaleLog().domain([f.minEpochs,f.maxEpochs]).range([n[0]+l.stanford_padding.top+n[n.length-1]+5-1,n[0]+l.stanford_padding.top]),i=c.axisRight(r),"pow10"===l.stanford_scaleFormat?i.tickValues([1,10,100,1e3,1e4,1e5,1e6,1e7]):p(l.stanford_scaleFormat)?i.tickFormat(l.stanford_scaleFormat):i.tickFormat(c.format("d")),p(l.stanford_scaleValues)&&i.tickValues(l.stanford_scaleValues(f.minEpochs,f.maxEpochs)),e=u.colorScale.append("g").attr("class","legend axis").attr("transform","translate(".concat(t,",0)")).call(i),"pow10"===l.stanford_scaleFormat&&e.selectAll(".tick text").text(null).filter(w).text(10).append("tspan").attr("dy","-.7em").text(function(t){return Math.round(Math.log(t)/Math.LN10)}),u.colorScale.attr("transform","translate(".concat(u.currentWidth-u.xForColorScale(),", 0)"))},e.prototype.xForColorScale=function(){return this.config.stanford_padding.right+this.colorScale.node().getBBox().width},e.prototype.getColorScalePadding=function(){return this.xForColorScale()+this.config.stanford_padding.left+20},e.prototype.isStanfordGraphType=function(){return"stanford"===this.config.data_type},e.prototype.initStanfordData=function(){var t,e,n,i=this.d3,r=this.config,a=this.data.targets[0];if(a.values.sort(T),t=a.values.map(function(t){return t.epochs}),n=isNaN(r.stanford_scaleMin)?i.min(t):r.stanford_scaleMin,e=isNaN(r.stanford_scaleMax)?i.max(t):r.stanford_scaleMax,n>e)throw Error("Number of minEpochs has to be smaller than maxEpochs");a.colors=p(r.stanford_colors)?r.stanford_colors:i.interpolateHslLong(i.hsl(250,1,.5),i.hsl(0,1,.5)),a.colorscale=i.scaleSequentialLog(a.colors).domain([n,e]),a.minEpochs=n,a.maxEpochs=e},e.prototype.getStanfordPointColor=function(t){var e=this.data.targets[0];return e.colorscale(t.epochs)},e.prototype.getCentroid=function(t){var e,n,i,r,a,o=S(t),s=0,u=0;for(e=0,n=t.length-1;e".concat(e?m(e):"x","").concat(t.x,"\n ").concat(n?m(n):"y","").concat(t.value,"\n ")},e.prototype.countEpochsInRegion=function(t){var e,n,i=this.data.targets[0];return e=i.values.reduce(function(t,e){return t+Number(e.epochs)},0),{value:n=i.values.reduce(function(e,n){return A(n,t)?e+Number(n.epochs):e},0),percentage:0!==n?(n/e*100).toFixed(1):0}};var S=function(t){var e,n,i,r,a=0;for(e=0,n=t.length-1;es!=r>s&&o<(a-n)*(s-i)/(r-i)+n&&(u=!u);return u},T=function(t,e){return t.epochse.epochs?1:0};return e.prototype.initStanfordElements=function(){var t=this;t.stanfordElements=t.main.select("."+a.chart).append("g").attr("class",a.stanfordElements),t.stanfordElements.append("g").attr("class",a.stanfordLines),t.stanfordElements.append("g").attr("class",a.stanfordTexts),t.stanfordElements.append("g").attr("class",a.stanfordRegions)},e.prototype.updateStanfordElements=function(t){var e,n,i,r,o,s,u=this,c=u.main,l=u.config,f=u.xvCustom.bind(u),d=u.yvCustom.bind(u),h=u.countEpochsInRegion.bind(u);(n=(e=c.select("."+a.stanfordLines).style("shape-rendering","geometricprecision").selectAll("."+a.stanfordLine).data(l.stanford_lines)).enter().append("g").attr("class",function(t){return a.stanfordLine+(t.class?" "+t.class:"")})).append("line").attr("x1",function(t){return l.axis_rotated?d(t,"value_y1"):f(t,"value_x1")}).attr("x2",function(t){return l.axis_rotated?d(t,"value_y2"):f(t,"value_x2")}).attr("y1",function(t){return l.axis_rotated?f(t,"value_x1"):d(t,"value_y1")}).attr("y2",function(t){return l.axis_rotated?f(t,"value_x2"):d(t,"value_y2")}).style("opacity",0),u.stanfordLines=n.merge(e),u.stanfordLines.select("line").transition().duration(t).attr("x1",function(t){return l.axis_rotated?d(t,"value_y1"):f(t,"value_x1")}).attr("x2",function(t){return l.axis_rotated?d(t,"value_y2"):f(t,"value_x2")}).attr("y1",function(t){return l.axis_rotated?f(t,"value_x1"):d(t,"value_y1")}).attr("y2",function(t){return l.axis_rotated?f(t,"value_x2"):d(t,"value_y2")}).style("opacity",1),e.exit().transition().duration(t).style("opacity",0).remove(),(s=(o=c.select("."+a.stanfordTexts).selectAll("."+a.stanfordText).data(l.stanford_texts)).enter().append("g").attr("class",function(t){return a.stanfordText+(t.class?" "+t.class:"")})).append("text").attr("x",function(t){return l.axis_rotated?d(t,"y"):f(t,"x")}).attr("y",function(t){return l.axis_rotated?f(t,"x"):d(t,"y")}).style("opacity",0),u.stanfordTexts=s.merge(o),u.stanfordTexts.select("text").transition().duration(t).attr("x",function(t){return l.axis_rotated?d(t,"y"):f(t,"x")}).attr("y",function(t){return l.axis_rotated?f(t,"x"):d(t,"y")}).text(function(t){return t.content}).style("opacity",1),o.exit().transition().duration(t).style("opacity",0).remove(),(r=(i=c.select("."+a.stanfordRegions).selectAll("."+a.stanfordRegion).data(l.stanford_regions)).enter().append("g").attr("class",function(t){return a.stanfordRegion+(t.class?" "+t.class:"")})).append("polygon").attr("points",function(t){return t.points.map(function(t){return[l.axis_rotated?d(t,"y"):f(t,"x"),l.axis_rotated?f(t,"x"):d(t,"y")].join(",")}).join(" ")}).style("opacity",0),r.append("text").attr("x",function(t){return u.getCentroid(t.points).x}).attr("y",function(t){return u.getCentroid(t.points).y}).style("opacity",0),u.stanfordRegions=r.merge(i),u.stanfordRegions.select("polygon").transition().duration(t).attr("points",function(t){return t.points.map(function(t){return[l.axis_rotated?d(t,"y"):f(t,"x"),l.axis_rotated?f(t,"x"):d(t,"y")].join(",")}).join(" ")}).style("opacity",function(t){return t.opacity?t.opacity:.2}),u.stanfordRegions.select("text").transition().duration(t).attr("x",function(t){return l.axis_rotated?d(u.getCentroid(t.points),"y"):f(u.getCentroid(t.points),"x")}).attr("y",function(t){return l.axis_rotated?f(u.getCentroid(t.points),"x"):d(u.getCentroid(t.points),"y")}).text(function(t){var e,n,i;return t.text?(u.isStanfordGraphType()&&(e=(i=h(t.points)).value,n=i.percentage),t.text(e,n)):""}).attr("text-anchor","middle").attr("dominant-baseline","middle").style("opacity",1),i.exit().transition().duration(t).style("opacity",0).remove()},e.prototype.initTooltip=function(){var t,e=this,n=e.config;if(e.tooltip=e.selectChart.style("position","relative").append("div").attr("class",a.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),n.tooltip_init_show){if(e.isTimeSeries()&&g(n.tooltip_init_x)){for(n.tooltip_init_x=e.parseDate(n.tooltip_init_x),t=0;t"+o),c=l.getStanfordPointColor(t[a]),u=m(f.data_epochs),s=t[a].epochs;else if(r||(o=m(d?d(t[a].x,t[a].index):t[a].x),r=""+(o||0===o?"":"")),void 0!==(s=m(p(t[a].value,t[a].ratio,t[a].id,t[a].index,t)))){if(null===t[a].name)continue;u=m(h(t[a].name,t[a].ratio,t[a].id,t[a].index)),c=l.levelColor?l.levelColor(t[a].value):i(t[a].id)}void 0!==s&&(r+="",r+="",r+="",r+="")}return r+"
"+o+"
"+u+""+s+"
"},e.prototype.tooltipPosition=function(t,e,n,i){var r,a,o,s,u,c=this,l=c.config,f=c.d3,d=c.hasArcType(),h=f.mouse(i);return d?(a=(c.width-(c.isLegendRight?c.getLegendWidth():0))/2+h[0],s=(c.hasType("gauge")?c.height:c.height/2)+h[1]+20):(r=c.getSvgLeft(!0),l.axis_rotated?(o=(a=r+h[0]+100)+e,u=c.currentWidth-c.getCurrentPaddingRight(),s=c.x(t[0].x)+20):(o=(a=r+c.getCurrentPaddingLeft(!0)+c.x(t[0].x)+20)+e,u=r+c.currentWidth-c.getCurrentPaddingRight(),s=h[1]+15),o>u&&(a-=o-u+20),s+n>c.currentHeight&&(s-=n+30)),s<0&&(s=0),{top:s,left:a}},e.prototype.showTooltip=function(t,n){var i,r,a,o=this,s=o.config,u=o.hasArcType(),c=t.filter(function(t){return t&&v(t.value)}),l=s.tooltip_position||e.prototype.tooltipPosition;0!==c.length&&s.tooltip_show&&(o.tooltip.html(s.tooltip_contents.call(o,t,o.axis.getXAxisTickFormat(),o.getYFormat(u),o.color)).style("display","block"),i=o.tooltip.property("offsetWidth"),r=o.tooltip.property("offsetHeight"),a=l.call(this,c,i,r,n),o.tooltip.style("top",a.top+"px").style("left",a.left+"px"))},e.prototype.hideTooltip=function(){this.tooltip.style("display","none")},e.prototype.setTargetType=function(t,e){var n=this,i=n.config;n.mapToTargetIds(t).forEach(function(t){n.withoutFadeIn[t]=e===i.data_types[t],i.data_types[t]=e}),t||(i.data_type=e)},e.prototype.hasType=function(t,e){var n=this.config.data_types,i=!1;return(e=e||this.data.targets)&&e.length?e.forEach(function(e){var r=n[e.id];(r&&r.indexOf(t)>=0||!r&&"line"===t)&&(i=!0)}):Object.keys(n).length?Object.keys(n).forEach(function(e){n[e]===t&&(i=!0)}):i=this.config.data_type===t,i},e.prototype.hasArcType=function(t){return this.hasType("pie",t)||this.hasType("donut",t)||this.hasType("gauge",t)},e.prototype.isLineType=function(t){var e=this.config,n=g(t)?t:t.id;return!e.data_types[n]||["line","spline","area","area-spline","step","area-step"].indexOf(e.data_types[n])>=0},e.prototype.isStepType=function(t){var e=g(t)?t:t.id;return["step","area-step"].indexOf(this.config.data_types[e])>=0},e.prototype.isSplineType=function(t){var e=g(t)?t:t.id;return["spline","area-spline"].indexOf(this.config.data_types[e])>=0},e.prototype.isAreaType=function(t){var e=g(t)?t:t.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[e])>=0},e.prototype.isBarType=function(t){var e=g(t)?t:t.id;return"bar"===this.config.data_types[e]},e.prototype.isScatterType=function(t){var e=g(t)?t:t.id;return"scatter"===this.config.data_types[e]},e.prototype.isStanfordType=function(t){var e=g(t)?t:t.id;return"stanford"===this.config.data_types[e]},e.prototype.isScatterOrStanfordType=function(t){return this.isScatterType(t)||this.isStanfordType(t)},e.prototype.isPieType=function(t){var e=g(t)?t:t.id;return"pie"===this.config.data_types[e]},e.prototype.isGaugeType=function(t){var e=g(t)?t:t.id;return"gauge"===this.config.data_types[e]},e.prototype.isDonutType=function(t){var e=g(t)?t:t.id;return"donut"===this.config.data_types[e]},e.prototype.isArcType=function(t){return this.isPieType(t)||this.isDonutType(t)||this.isGaugeType(t)},e.prototype.lineData=function(t){return this.isLineType(t)?[t]:[]},e.prototype.arcData=function(t){return this.isArcType(t.data)?[t]:[]},e.prototype.barData=function(t){return this.isBarType(t)?t.values:[]},e.prototype.lineOrScatterOrStanfordData=function(t){return this.isLineType(t)||this.isScatterType(t)||this.isStanfordType(t)?t.values:[]},e.prototype.barOrLineData=function(t){return this.isBarType(t)||this.isLineType(t)?t.values:[]},e.prototype.isSafari=function(){var t=window.navigator.userAgent;return t.indexOf("Safari")>=0&&t.indexOf("Chrome")<0},e.prototype.isChrome=function(){return window.navigator.userAgent.indexOf("Chrome")>=0},e.prototype.initZoom=function(){var t,e=this,n=e.d3,i=e.config;return e.zoom=n.zoom().on("start",function(){if("scroll"===i.zoom_type){var r=n.event.sourceEvent;r&&"brush"===r.type||(t=r,i.zoom_onzoomstart.call(e.api,r))}}).on("zoom",function(){if("scroll"===i.zoom_type){var t=n.event.sourceEvent;t&&"brush"===t.type||(e.redrawForZoom(),i.zoom_onzoom.call(e.api,e.x.orgDomain()))}}).on("end",function(){if("scroll"===i.zoom_type){var r=n.event.sourceEvent;r&&"brush"===r.type||r&&t.clientX===r.clientX&&t.clientY===r.clientY||i.zoom_onzoomend.call(e.api,e.x.orgDomain())}}),e.zoom.updateDomain=function(){return n.event&&n.event.transform&&e.x.domain(n.event.transform.rescaleX(e.subX).domain()),this},e.zoom.updateExtent=function(){return this.scaleExtent([1,1/0]).translateExtent([[0,0],[e.width,e.height]]).extent([[0,0],[e.width,e.height]]),this},e.zoom.update=function(){return this.updateExtent().updateDomain()},e.zoom.updateExtent()},e.prototype.zoomTransform=function(t){var e=[this.x(t[0]),this.x(t[1])];return this.d3.zoomIdentity.scale(this.width/(e[1]-e[0])).translate(-e[0],0)},e.prototype.initDragZoom=function(){var t=this,e=t.d3,n=t.config,i=t.context=t.svg,r=t.margin.left+20.5,o=t.margin.top+.5;if("drag"===n.zoom_type&&n.zoom_enabled){var s=function(e){return e&&e.map(function(e){return t.x.invert(e)})},u=t.dragZoomBrush=e.brushX().on("start",function(){t.api.unzoom(),t.svg.select("."+a.dragZoom).classed("disabled",!1),n.zoom_onzoomstart.call(t.api,e.event.sourceEvent)}).on("brush",function(){n.zoom_onzoom.call(t.api,s(e.event.selection))}).on("end",function(){if(null!=e.event.selection){var i=s(e.event.selection);n.zoom_disableDefaultBehavior||t.api.zoom(i),t.svg.select("."+a.dragZoom).classed("disabled",!0),n.zoom_onzoomend.call(t.api,i)}});i.append("g").classed(a.dragZoom,!0).attr("clip-path",t.clipPath).attr("transform","translate("+r+","+o+")").call(u)}},e.prototype.getZoomDomain=function(){var t=this.config,e=this.d3;return[e.min([this.orgXDomain[0],t.zoom_x_min]),e.max([this.orgXDomain[1],t.zoom_x_max])]},e.prototype.redrawForZoom=function(){var t=this,e=t.d3,n=t.config,i=t.zoom,r=t.x;n.zoom_enabled&&0!==t.filterTargetsToShow(t.data.targets).length&&(i.update(),n.zoom_disableDefaultBehavior||(t.isCategorized()&&r.orgDomain()[0]===t.orgXDomain[0]&&r.domain([t.orgXDomain[0]-1e-10,r.orgDomain()[1]]),t.redraw({withTransition:!1,withY:n.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),e.event.sourceEvent&&"mousemove"===e.event.sourceEvent.type&&(t.cancelClick=!0)))},b}()},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function r(t){return null!==t&&"function"==typeof t.getTime&&!isNaN(t.getTime())}function a(t){return/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?(([+-]\d\d:\d\d)|Z)?$/i.test(t)}e.testObject=r,e.testString=a,e.default=function(t){return"object"===(void 0===t?"undefined":i(t))?r(t):"string"==typeof t&&a(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Dataset=void 0;var i=p(n(8)),r=p(n(23)),a=p(n(24)),o=p(n(25)),s=p(n(26)),u=p(n(27)),c=p(n(28)),l=h(n(13)),f=n(5),d=h(n(29));function h(t){return t&&t.__esModule?t:{default:t}}function p(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}var g=e.Dataset=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this instanceof t==!1)return new t(e);this.matrix=[["Index"]],this.meta={type:void 0},this.config=e};g.prototype.data=function(t){return arguments.length?(this.matrix=t instanceof Array?t:null,this):this.matrix},g.prototype.set=function(t,e){if(arguments.length<2||t.length<2)throw Error("Incorrect arguments provided for #set method");var n="number"==typeof t[0]?t[0]:this.matrix[0].indexOf(t[0]),r="number"==typeof t[1]?t[1]:s.selectColumn.call(this,0).indexOf(t[1]),a=s.selectColumn.call(this,t[0]),o=s.selectRow.call(this,t[1]);return a.length<1&&(i.appendColumn.call(this,String(t[0])),n=this.matrix[0].length-1),o.length<1&&(i.appendRow.call(this,String(t[1])),r=this.matrix.length-1),this.matrix[r][n]=e,this},g.prototype.type=function(t){return arguments.length?(this.meta.type=t?String(t):void 0,this):this.meta.type},(0,f.extend)(g.prototype,i),(0,f.extend)(g.prototype,r),(0,f.extend)(g.prototype,a),(0,f.extend)(g.prototype,o),(0,f.extend)(g.prototype,s),(0,f.extend)(g.prototype,u),(0,f.extend)(g.prototype,c),(0,f.extend)(g.prototype,l.default),g.parser=(0,d.default)(g),e.default=g},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0);n(5);function r(t,e,n){var r=t.slice(e||0,n?n+1:t.length),a=0;return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||(a+=parseFloat(t))}),a/r.length}function a(t,e,n){var r=t.slice(e||0,n?n+1:t.length),a=[];return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||a.push(parseFloat(t))}),Math.max.apply(Math,a)}function o(t,e,n){var r=t.slice(e||0,n?n+1:t.length),a=[];return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||a.push(parseFloat(t))}),Math.min.apply(Math,a)}function s(t,e,n){var r=t.slice(e||0,n?n+1:t.length),a=0;return(0,i.each)(r,function(t,e){"number"!=typeof t||isNaN(parseFloat(t))||(a+=parseFloat(t))}),a}var u=function(t){return r(t,1)},c=u,l=function(t){return s(t,1)},f=l,d=function(t){return a(t,1)},h=d,p=function(t){return o(t,1)},g=p,y=function(t){return t[0]},v=y;e.default={average:r,maximum:a,minimum:o,sum:s,getColumnAverage:u,getRowAverage:c,getColumnSum:l,getRowSum:f,getColumnMaximum:d,getRowMaximum:h,getColumnMinimum:p,getRowMinimum:g,getColumnLabel:y,getRowIndex:v}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.flatten=function t(e){var n={};for(var r in e)if(e.hasOwnProperty(r))if("object"==i(e[r])&&null!==e[r]){var a=t(e[r]);for(var o in a)a.hasOwnProperty(o)&&(n[r+"."+o]=a[o])}else n[r]=e[r];return n}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stripHtmlTags=function(t){if("string"!=typeof t)return t;return t.replace(/(<([^>]+)>)/gi,"")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.extendDeep=function t(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},e=t.element,n=t.label,i=void 0===n?"Download":n,r=t.type,o=void 0===r?"json":r,s=t.data;if([].concat(function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1)throw Error("Please provide image quality between 0 and 1");a.default.toBlob(e,{quality:n,bgcolor:i}).then(function(t){(0,o.saveAs)(t,"chart.jpeg")})}n||a.default.toBlob(e).then(function(t){(0,o.saveAs)(t,"chart.png")})};var i,r=n(42),a=(i=r)&&i.__esModule?i:{default:i},o=n(43)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.type,n=t.data,i=["json","csv"],r=e.toLowerCase();if(!i.includes(e))throw new Error("This type is not supported");var a=i[0],o="";"json"===r&&(o="data:text/json;charset=utf-8, "+encodeURIComponent(JSON.stringify(n)));"csv"===r&&(o=function(t){var e="";return t.forEach(function(n,i){n.forEach(function(t,i){e+=String(t).replace(/,/g,""),n.length>i+1&&(e+=",")}),t.length>i+1&&(e+="\n")}),"data:text/csv;charset=utf-8,"+encodeURIComponent(e)}(n),a=r);var s=document.createElement("a");s.setAttribute("href",o),s.setAttribute("download","chart."+a),document.body.appendChild(s),s.click(),document.body.removeChild(s)}},function(t,e,n){(function(e){var n,i,r,a,o;void 0===e&&(this.window||this.global),t.exports=(n=function(t,e){var n=document.createElement(t);return e&&n.classList.add(e),n},i=function(t){return t&&"function"==typeof t},r=function(t,e,n){var i;return function(){if(n=n||this,!i)return t.apply(n,arguments),i=!0,setTimeout(function(){i=!1},e)}},(o=(a=function(t,e){this.plugins=["ruler"],"string"==typeof t&&(t=document.querySelector(t)),this.input=t,this.config=Object.assign({},{type:"single",tooltips:"always",updateThrottle:30,formatTooltip:function(t){return t},classes:{input:"rangeable-input",container:"rangeable-container",vertical:"rangeable-vertical",progress:"rangeable-progress",handle:"rangeable-handle",track:"rangeable-track",multiple:"rangeable-multiple",disabled:"rangeable-disabled",tooltips:"rangeable-tooltips",tooltip:"rangeable-tooltip",visible:"rangeable-tooltips--visible"}},e),this.mouseAxis={x:"clientX",y:"clientY"},this.trackSize={x:"width",y:"height"},this.trackPos={x:"left",y:"top"},this.lastPos=0,this.double="double"===this.config.type||Array.isArray(this.config.value),this.touch="ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version="0.1.6",this.init(),this.onInit()}).prototype).init=function(){if(!this.input.rangeable){var t,e={min:0,max:100,step:1,value:this.input.value};for(t in e)this.input[t]||(this.input[t]=e[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?"y":"x",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},o.render=function(){var t=this,e=this.config,i=e.classes,r=n("div",i.container),a=n("div",i.track),o=n("div",i.progress),s=n("div",i.handle),u=n("div",i.tooltip);if(this.input.tabIndex=-1,this.double){s=[n("div",i.handle),n("div",i.handle)],u=[];for(var c=0;3>c;c++)u[c]=n("div",i.tooltip);s.forEach(function(t,n){t.index=n,o.appendChild(t),t.appendChild(u[n]),t.tabIndex=1,e.controls&&e.controls[n]&&e.controls[n].locked&&!0===e.controls[n].locked&&(t.locked=!0)}),e.vertical&&o.appendChild(s[0]),o.appendChild(u[2]),r.classList.add(i.multiple)}else o.appendChild(s),s.appendChild(u),s.tabIndex=1,e.controls&&e.controls.locked&&!0===e.controls.locked&&(s.locked=!0);if(r.appendChild(a),e.vertical&&r.classList.add(i.vertical),e.size&&(r.style[this.trackSize[this.axis]]=isNaN(e.size)?e.size:e.size+"px"),e.tooltips&&(r.classList.add(i.tooltips),"string"==typeof e.tooltips&&"always"===e.tooltips&&r.classList.add(i.visible)),this.nodes={container:r,track:a,progress:o,handle:s,tooltip:u},this.double){this.nodes.buffer=[];var l=n("div","rangeable-buffers");this.input.values.forEach(function(i,r){var o=n("div","rangeable-buffer");l.appendChild(o),t.nodes.buffer.push(o),a.appendChild(l),e.controls&&(t.limits=[{},{}],void 0!==e.controls[r].min&&(t.limits[r].min=e.controls[r].min),void 0!==e.controls[r].max&&(t.limits[r].max=e.controls[r].max))})}else s=n("div","rangeable-buffer"),a.appendChild(s),this.nodes.buffer=s,a.appendChild(s),e.controls&&(this.limits={},void 0!==e.controls.min&&(this.limits.min=e.controls.min),void 0!==e.controls.max&&(this.limits.max=e.controls.max));this.setLimits(e.controls),a.appendChild(o),this.input.parentNode.insertBefore(r,this.input),r.insertBefore(this.input,a),this.input.classList.add(i.input),this.bind(),this.update()},o.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},o.setValueFromPosition=function(t){var e=this.getLimits(),n=parseFloat(this.input.step),i=this.touch?t.touches[0][this.mouseAxis[this.axis]]:t[this.mouseAxis[this.axis]],r=i-this.rects.container[this.trackPos[this.axis]],a=this.rects.container[this.trackSize[this.axis]];return("mousedown"!==t.type||!(!this.double&&this.nodes.handle.contains(t.target)||this.double&&(this.nodes.handle[0].contains(t.target)||this.nodes.handle[1].contains(t.target))))&&(t=(this.config.vertical?(a-r)/a*100:r/a*100)*(e.max-e.min)/100+e.min,t=Math.ceil(t/n)*n,i>=this.lastPos&&(t-=n),parseFloat(t)!==parseFloat(this.startValue)&&(n=!1,this.double&&(n=this.activeHandle.index),t=this.limit(t,n),void this.setValue(t,n)))},o.start=function(t){return t.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add("dragging"),this.recalculate(),this.activeHandle=this.getHandle(t),!!this.activeHandle&&(this.activeHandle.classList.add("active"),this.setValueFromPosition(t),void(this.touch?(document.addEventListener("touchmove",this.events.move,!1),document.addEventListener("touchend",this.events.stop,!1),document.addEventListener("touchcancel",this.events.stop,!1)):(document.addEventListener("mousemove",this.events.move,!1),document.addEventListener("mouseup",this.events.stop,!1))))},o.move=function(t){this.setValueFromPosition(t),this.lastPos=this.touch?t.touches[0][this.mouseAxis[this.axis]]:t[this.mouseAxis[this.axis]]},o.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove("dragging"),this.onEnd(),this.activeHandle.classList.remove("active"),this.activeHandle=!1,this.touch?(document.removeEventListener("touchmove",this.events.move),document.removeEventListener("touchend",this.events.stop),document.removeEventListener("touchcancel",this.events.stop)):(document.removeEventListener("mousemove",this.events.move),document.removeEventListener("mouseup",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event("change")),this.startValue=null},o.keydown=function(t){var e=this,n=function(n){switch(t.key){case"ArrowRight":case"ArrowUp":e.stepUp(n);break;case"ArrowLeft":case"ArrowDown":e.stepDown(n)}};this.double?this.nodes.handle.forEach(function(t){t===document.activeElement&&n(t.index)}):this.nodes.handle===document.activeElement&&n()},o.stepUp=function(t){var e=parseFloat(this.input.step),n=this.getValue();this.double&&void 0!==t&&(n=n[t]),e=this.limit(parseFloat(n)+e,t),this.setValue(e,t)},o.stepDown=function(t){var e=parseFloat(this.input.step),n=this.getValue();this.double&&void 0!==t&&(n=n[t]),e=this.limit(parseFloat(n)-e,t),this.setValue(e,t)},o.limit=function(t,e){var n=this.input,i=this.getLimits();return t=parseFloat(t),this.double&&void 0!==e?(!e&&t>n.values[1]?t=n.values[1]:0this.limits[1].max?t=this.limits[1].max:tthis.limits[0].max?t=this.limits[0].max:tthis.limits.max?t=this.limits.max:ti.max?t=i.max:ts.right||o.bottoms.bottom),n.container.classList.toggle("combined-tooltip",o),o&&(n.tooltip[2].textContent=a[0]===a[1]?r.call(this,a[0]):r.call(this,a[0])+" - "+r.call(this,a[1]))}}else this.input.value=t,n.tooltip.textContent=r.call(this,t);this.setPosition(t,e),i&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event("input")),this.nativeEvent=!1)},o.native=function(){this.nativeEvent=!0,this.setValue()},o.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},o.setLimits=function(t){var e=this;if(void 0===t)return!1;this.limits||(this.limits=t);var n=function(t,e){void 0!==e.min&&(t.min=e.min),void 0!==e.max&&(t.max=e.max)};this.double?t.forEach(function(t,i){n(e.limits[i],t)}):n(this.limits,t),this.update()},o.setPosition=function(t){if(this.double){t=this.getPosition(this.input.values[0]);var e=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?"bottom":"left"]=t+"px",t=e-t}else t=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=t+"px"},o.getPosition=function(t){void 0===t&&(t=this.input.value);var e=this.getLimits();return(t-e.min)/(e.max-e.min)*this.rects.container[this.trackSize[this.axis]]},o.getHandle=function(t){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var e=this.rects,n=Math.abs(t[this.mouseAxis[this.axis]]-e.handle[0][this.trackPos[this.axis]]);return e=Math.abs(t[this.mouseAxis[this.axis]]-e.handle[1][this.trackPos[this.axis]]),(t=t.target.closest("."+this.config.classes.handle))||(t=n>e?this.nodes.handle[1]:this.nodes.handle[0]),!t.locked&&t},o.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?"touchstart":"mousedown",this.events.start,!1),this.double?this.nodes.handle.forEach(function(t){return t.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},o.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?"touchstart":"mousedown",this.events.start),this.double?this.nodes.handle.forEach(function(t){return t.removeAttribute("tabindex")}):this.nodes.handle.removeAttribute("tabindex"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},o.bind=function(){var t=this;this.events={},"start move stop update reset native keydown".split(" ").forEach(function(e){t.events[e]=t[e].bind(t)}),this.events.scroll=r(this.events.update,this.config.updateThrottle),this.events.resize=r(this.events.update,this.config.updateThrottle),document.addEventListener("scroll",this.events.scroll,!1),window.addEventListener("resize",this.events.resize,!1),document.addEventListener("keydown",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?"touchstart":"mousedown",this.events.start,!1),this.input.addEventListener("input",this.events.native,!1),this.input.form&&this.input.form.addEventListener("reset",this.events.reset,!1)},o.unbind=function(){document.removeEventListener("scroll",this.events.scroll),window.removeEventListener("resize",this.events.resize),document.removeEventListener("keydown",this.events.keydown),this.nodes.container.removeEventListener(this.touch?"touchstart":"mousedown",this.events.start),this.input.removeEventListener("input",this.events.native),this.input.form&&this.input.form.removeEventListener("reset",this.events.reset),this.events=null},o.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},o.onInit=function(){i(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},o.onStart=function(){i(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},o.onChange=function(){i(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},o.onEnd=function(){i(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},a)}).call(this,n(7))},function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.Dataset=e.Dataviz=e.keenGlobals=e.extendKeenGlobalObject=void 0;var i=n(22);Object.defineProperty(e,"Dataviz",{enumerable:!0,get:function(){return i.Dataviz}}),Object.defineProperty(e,"Dataset",{enumerable:!0,get:function(){return i.Dataset}});var r=void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};(e.extendKeenGlobalObject=function(t){t.KeenDataviz=i.Dataviz,t.KeenDataset=i.Dataset,t.Keen=t.Keen||{},t.Keen.Dataset=i.Dataset,t.Keen.Dataviz=i.Dataviz})(r);e.keenGlobals=void 0;"undefined"!=typeof webpackKeenGlobals&&(e.keenGlobals=webpackKeenGlobals),e.default=i.Dataviz}).call(this,n(7))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Dataset=e.Dataviz=void 0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=Object.assign||function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};if(this instanceof t==!1)return new t(n);this.c3=s.default,this.d3=o;var i={showDeprecationWarnings:!0,showLoadingSpinner:!1,container:void 0,containerElement:void 0,title:void 0,showTitle:!0,subtitle:void 0,notes:void 0,theme:"keen-dataviz",colors:["#00bbde","#fe6672","#eeb058","#8a8ad6","#ff855c","#00cfbb","#5a9eed","#73d483","#c879bb","#0099b6","#d74d58","#cb9141","#6b6bb6","#d86945","#00aa99","#4281c9","#57b566","#ac5c9e","#27cceb","#ff818b","#f6bf71","#9b9be1","#ff9b79","#26dfcd","#73aff4","#87e096","#d88bcb"],colorMapping:{},ui:{executionMetadata:!0},utils:{clickToCopyToClipboard:!0},indexBy:"timeframe.start",labels:[],labelMapping:{},labelMappingRegExp:void 0,errorMapping:{},showErrorMessages:!0,library:"default",sortGroups:void 0,sortIntervals:void 0,results:void 0,type:void 0,stacked:!1,dateFormat:void 0,legend:{show:!0,position:"right",alignment:"top",label:{textMaxLength:12},pagination:{offset:0,limit:5},tooltip:{show:!0,pointer:!0},sort:void 0},axis:{},color:{},size:{},padding:{top:15},point:{focus:{expand:{enabled:!1}},r:2,show:!0,sensitivity:300},tooltip:{horizontal:!0,format:{}},transition:{},data:{order:null,selection:{enabled:!0,draggable:!0,multiple:!0},onselected:function(t,n){var i=e.view._artifacts.c3.selected().reduce(function(t,e){return t+e.value},0);(0,m.default)(i)}},grid:{y:{show:!0}},partialIntervalIndicator:{show:void 0,className:"partial-interval-indicator"},timezone:"UTC",table:{schema:"static"},renderOnVisible:!1,funnel:{lines:!0,resultValues:!0,percents:{show:!1,countingMethod:"absolute",decimals:0},marginBetweenElements:!1,hover:!0,effect3d:"both-sides",minimalSize:!1},react:!1,range:!1,sparkline:!1,choropleth:{map:"world",borders:{show:!0,size:.5,color:"#000"},showSlider:!1},heatmap:{}};this.config=r({},(0,p.extendDeep)(i,n)),n.palette&&(x.default[n.palette]||console.log("Colors pallete not found",n.palette),this.config.colors=x.default[n.palette].colors),this.config.type&&(this.config.type=M(this.config.type)),this.config.type&&this.config.type.includes("-range")&&(this.config.range=!0,this.config.type=this.config.type.replace("-range",""),this.config.legend.show=!1,this.config.stacking="normal",this.config.labels=["Max","Min"],this.config.colors=[this.config.colors[0],this.config.colors[0]]),this.config.stacking&&(this.config.stacked=!0),this.config.sparkline&&(this.config.legend.show=!1,this.config.axis={x:{show:!1},y:{show:!1}},this.config.grid={x:{show:!1},y:{show:!1}}),this.config.container&&this.el(this.config.container),void 0===n.legend||n.legend||(this.config.legend=r({},n,{show:!1})),n.color&&n.color.pattern&&(this.config.colors=n.color.pattern),this.config.legend&&this.config.legend.tooltip&&!1===this.config.legend.tooltip.show&&void 0===this.config.tooltip.show&&(this.config.tooltip={show:!1}),this.dataset=new a.Dataset(this.config),this.view={_prepared:!1,_rendered:!1,_artifacts:{}},t.visuals.push(this),this.config.showLoadingSpinner&&this.prepare(),this.config.results&&this.render(this.config.results),this.config.firstVisibilityState=document.visibilityState,this.config.utils.clickToCopyToClipboard||(this.config.data.onselected=function(){}),n.data&&n.data.onselected&&(this.config.data.onselected=function(t,i){if(n.data.onselected.bind(null,t,i)(),e.config.utils.clickToCopyToClipboard){var r=e.view._artifacts.c3.selected().reduce(function(t,e){return t+e.value},0);(0,m.default)(r)}})};function S(t){2!==t.data()[0].length||(0,f.default)(t.data()[1][0])?t.dataset.updateRow(0,function(e,n){return n>0&&t.config.labels[n-1]?(0,d.stripHtmlTags)(String(t.config.labels[n-1])):(0,d.stripHtmlTags)(e)}.bind(t)):t.dataset.updateColumn(0,function(e,n){return t.config.labels[n-1]?(0,d.stripHtmlTags)(String(t.config.labels[n-1])):(0,d.stripHtmlTags)(e)}.bind(t))}function A(t){var e=t.datavizInstance,n=t.value;if(e.config.labelMappingRegExp){var i=n;return e.config.labelMappingRegExp.forEach(function(t){t.length>1&&(t[0].test(n)&&(i=t[1]))}),(0,d.stripHtmlTags)(i)}return e.config.labelMapping[n]?(0,d.stripHtmlTags)(String(e.config.labelMapping[n])):(0,d.stripHtmlTags)(n)}function T(t){t.config.labelMappingDimension||(2!==t.data()[0].length||(0,f.default)(t.data()[1][0])?t.config.labelMappingDimension="column":t.config.labelMappingDimension="row"),"row"!==t.config.labelMappingDimension&&"both"!==t.config.labelMappingDimension||t.dataset.updateColumn(0,function(e){return A({datavizInstance:t,value:e})}.bind(t)),"column"!==t.config.labelMappingDimension&&"both"!==t.config.labelMappingDimension||t.dataset.updateRow(0,function(e){return A({datavizInstance:t,value:e})}.bind(t))}function P(t){t.config.sortGroups&&t.data().length>1&&((0,f.default)(t.data()[1][0])?t.dataset.sortColumns(t.config.sortGroups,t.dataset.getColumnSum):t.dataset.sortRows(t.config.sortGroups,t.dataset.getRowSum))}function C(t){t.config.sortIntervals&&t.dataset.sortRows(t.config.sortIntervals)}function M(t){return{areachart:"area",barchart:"horizontal-bar",columnchart:"bar",linechart:"line",piechart:"pie"}[t]||t}function E(t){"undefined"==typeof document&&"undefined"!=typeof window?(null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function t(){document.removeEventListener("DOMContentLoaded",t,!1),document.readyState="complete"},!1),document.readyState="loading"),function t(e){/in/.test(document.readyState)?setTimeout(function(){t(e)},9):e()}(t)):t()}w.libraries={default:{}},"undefined"!=typeof window&&(w.libraries.default=(0,h.default)(w)),w.visuals=[],w.register=function(t,e){w.libraries[t]=w.libraries[t]||{},(0,l.each)(e,function(e,n){w.libraries[t][n]=e})},w.find=function(t){if(!arguments.length)return w.visuals;var e=t.nodeName?t:document.querySelector(t),n=null;return(0,l.each)(w.visuals,function(t){if(e==t.config.container)return n=t,!1}),n},w.prototype.attributes=function(t){if(this.config.showDeprecationWarnings&&console.log(".attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })"),!arguments.length)return this.config;var e=this.config;return(0,l.each)(t,function(t,n){"chartType"===n&&(n="type"),e[n]=t}),this},w.prototype.call=function(t){return t.call(this),this},w.prototype.chartOptions=function(t){return this.config.showDeprecationWarnings&&console.log(".chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })"),arguments.length?(this.config=(0,p.extendDeep)(this.config,t),this):this.config},w.prototype.colors=function(t){return this.config.showDeprecationWarnings&&console.log(".colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })"),arguments.length?(this.config.colors=t instanceof Array?t:[],this):this.config.colors},w.prototype.colorMapping=function(t){this.config.showDeprecationWarnings&&console.log(".colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })");var e=this;return arguments.length?(null===t?this.config.colorMapping={}:"object"===(void 0===t?"undefined":i(t))&&(0,l.each)(t,function(t,n){e.config.colorMapping[n]=t||null}),this):this.config.colorMapping},w.prototype.data=c.default,w.prototype.dateFormat=function(t){return this.config.showDeprecationWarnings&&console.log(".dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })"),arguments.length?(this.config.dateFormat="string"==typeof t||"function"==typeof t?t:void 0,this):this.config.dateFormat},w.prototype.destroy=function(){var t=this.library(),e=this.config.type,n=this.el();return w.libraries[t]&&w.libraries[t][e]&&w.libraries[t][e].destroy.call(this),n&&(n.innerHTML=""),this.view._prepared=!1,this.view._rendered=!1,this.view._artifacts={},this},w.prototype.el=function(t){var e=this;return arguments.length?(E(function(){t&&null!==t?t.nodeName?e.config.containerElement=t:document.querySelector&&(e.config.containerElement=document.querySelector(t)):e.config.containerElement=void 0}),this):this.config.containerElement},w.prototype.height=function(t){return this.config.showDeprecationWarnings&&console.log(".height() is deprecated - use CSS classes"),this},w.prototype.indexBy=function(t){return this.config.showDeprecationWarnings&&console.log(".indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })"),arguments.length?(this.config.indexBy=t?String(t):"timeframe.start",this):this.config.indexBy},w.prototype.labels=function(t){return this.config.showDeprecationWarnings&&console.log(".labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })"),arguments.length?(this.config.labels=t instanceof Array?t:[],S(this),this):this.config.labels},w.prototype.labelMapping=function(t){return this.config.showDeprecationWarnings&&console.log(".labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })"),arguments.length?(null===t?this.config.labelMapping={}:"object"===(void 0===t?"undefined":i(t))&&(0,l.each)(t,function(t,e){this.config.labelMapping[e]=t||null}.bind(this)),T(this),this):this.config.labelMapping},w.prototype.library=function(t){return arguments.length?(this.config.library=t?String(t):null,this):this.config.library},w.prototype.message=function(){if(this.view._rendered&&this.destroy(),this.el()){this.el().innerHTML="";var t=w.libraries.default.message;t.render&&t.render.apply(this,arguments)}return this},w.prototype.notes=function(t){return this.config.showDeprecationWarnings&&console.log(".notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })"),arguments.length?(this.config.notes=t?String(t):null,this):this.config.notes},w.prototype.prepare=function(){var t=this;if(!this.el())throw this.config.container+" not found. A DOM parent element is required to mount the chart.";return E(function(){if(t.view._rendered&&t.destroy(),t.el()){t.el().innerHTML="";var e=w.libraries.default.spinner;e.render&&e.render.call(t),t.view._prepared=!0}}),this},w.prototype.render=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,n=this;if(e){var i=e[0]||e;if(i.query&&i.query.interval&&i.query.timeframe&&"string"==typeof i.query.timeframe&&i.query.timeframe.includes("this_")&&this.config.partialIntervalIndicator&&void 0===this.config.partialIntervalIndicator.show&&(this.config.partialIntervalIndicator.show=!0),Array.isArray(e)){var r=e.map(function(t){return t.query.timeframe});return r.forEach(function(t){if(r.find(function(e){return JSON.stringify(e)!==JSON.stringify(t)})){var e="Timeframes of the queries should be the same";throw console.error(e),e}}),n.data(e[0]).call(function(){var i=e[0];t.dataset.deleteColumn(1);var r=!0,o=!1,s=void 0;try{for(var u,c=e[Symbol.iterator]();!(r=(u=c.next()).done);r=!0){var l=u.value,f=i.query.event_collection+" "+i.query.analysis_type,d=a.Dataset.parser("interval")(l);n.dataset.appendColumn(f,d.selectColumn(1).slice(1))}}catch(t){o=!0,s=t}finally{try{!r&&c.return&&c.return()}finally{if(o)throw s}}}).render()}return n.data(e).render()}(this.config.labelMapping&&Object.keys(this.config.labelMapping).length>0||this.config.labelMappingRegExp&&this.config.labelMappingRegExp.length>0)&&T(n),this.config.labels&&Object.keys(this.config.labels).length>0&&S(n),this.config.sortGroups&&P(n),this.config.sortIntervals&&C(n);var o=w.libraries.default.spinner,s=this.config.library,u=this.config.type,c=this.el();if(!c||void 0===c){var l=this.config.container+" not found. A DOM parent element is required to mount the chart.";throw console.error(l),l}var f=n;return n.config.renderAsPromise&&(f=new Promise(function(e,i){var r=t.config.onrendered;n.config.onrendered=function(){r&&r(),e(n)}})),E(function(){var t=n.execution_metadata&&n.config.ui&&n.config.ui.executionMetadata,e=n.config.ui&&n.config.ui.buttons&&n.config.ui.buttons.download&&n.config.ui.buttons.download.type;if(n.view._prepared&&o.destroy&&o.destroy.apply(n,arguments),c.innerHTML="","undefined"===w.libraries[s]){var i="Incorrect library";throw n.message(i),i}if(void 0===w.libraries[s][u]){var r="Incorrect chart type",a=this.config.errorMapping[r]||r;throw n.message(a),r}if(function(t,e){var n="",i="",r="";"top"!==e.legend.position&&"bottom"!==e.legend.position||(i="c3-chart-100-percent");e.range&&(r="keen-dataviz-range");var a='
',o="horizontal",s="center";["left","center","right"].includes(e.legend.alignment)&&(s=e.legend.alignment);"left"!==e.legend.position&&"right"!==e.legend.position||(o="vertical",["top","middle","bottom"].includes(e.legend.alignment)&&(s=e.legend.alignment));e.legend&&e.legend.show&&(a="top"===e.legend.position||"left"===e.legend.position?'
'+a:a+'
');e.react||(n+='
');e.title&&e.showTitle&&(n+='
'+e.title+"
");e.subtitle&&(n+='
'+e.subtitle+"
");n+='
'+a+"
",e.notes&&(n+='
'+e.notes+"
");e.react||(n+="
");t.innerHTML=n}(c,n.config),e&&(0,v.default)({element:c,data:n.dataset.matrix,type:n.config.ui.buttons.download.type,label:n.config.ui.buttons.download.label}),t&&(0,_.default)({element:c,data:n.execution_metadata}),n.config.renderOnVisible&&"undefined"!=typeof IntersectionObserver){new IntersectionObserver(function(t,e){t.forEach(function(t){t.isIntersecting&&(n.view._rendered||(w.libraries[s][u].render.call(n),n.view._rendered=!0))})}).observe(c)}else{if("hidden"===n.config.firstVisibilityState&&"undefined"!=typeof document){var l=void 0,f=void 0;void 0!==document.hidden?(l="hidden",f="visibilitychange"):void 0!==document.msHidden?(l="msHidden",f="msvisibilitychange"):void 0!==document.webkitHidden&&(l="webkitHidden",f="webkitvisibilitychange");void 0===document.addEventListener&&void 0===l||document.addEventListener(f,function(){!document[l]&&n.view._artifacts.c3&&n.view._artifacts.c3.load(n.dataset.matrix)},{once:!0})}w.libraries[s][u].render.call(n),n.view._rendered=!0}}),f},w.prototype.sortGroups=function(t){return this.config.showDeprecationWarnings&&console.log(".sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })"),arguments.length?(this.config.sortGroups=t?String(t):null,P(this),this):this.config.sortGroups},w.prototype.sortIntervals=function(t){return this.config.showDeprecationWarnings&&console.log(".sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })"),arguments.length?(this.config.sortIntervals=t?String(t):null,C(this),this):this.config.sortIntervals},w.prototype.stacked=function(t){return this.config.showDeprecationWarnings&&console.log(".stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })"),arguments.length?(this.config.stacked=!!t,this):this.config.stacked},w.prototype.theme=function(t){return this.config.showDeprecationWarnings&&console.log(".theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })"),arguments.length?(this.config.theme=t?String(t):null,this):this.config.theme},w.prototype.title=function(t){return this.config.showDeprecationWarnings&&console.log(".title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })"),arguments.length?(this.config.title=t?String(t):null,this):this.config.title},w.prototype.type=function(t){return this.config.showDeprecationWarnings&&console.log(".type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })"),arguments.length?(this.config.type=t?M(t):null,this):this.config.type},w.prototype.update=function(){var t=this.config.library,e=this.config.type,n=this.el();return t&&e&&n&&w.libraries[t][e].update&&w.libraries[t][e].update.apply(this,arguments),this},w.prototype.width=function(t){return this.config.showDeprecationWarnings&&console.log(".width() is deprecated - use CSS classes"),this},w.prototype.exportImage=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.quality,n=void 0===e?0:e,i=t.bgcolor,r=void 0===i?"#fff":i;(0,g.default)({node:this.config.containerElement,quality:n,bgcolor:r})},w.prototype.exportData=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"json";(0,y.default)({data:this.dataset.matrix,type:t})},w.prototype.chartType=w.prototype.type,w.prototype.error=w.prototype.message,w.prototype.parseRawData=w.prototype.data,w.prototype.parseRequest=function(){return this},w.prototype.initialize=function(){return this},w.version=u.default.version,e.default=w},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.deleteColumn=function(t){var e=this,n="number"==typeof t?t:this.matrix[0].indexOf(t);n>-1&&(0,i.each)(e.matrix,function(t,i){e.matrix[i].splice(n,1)});return e},e.deleteRow=function(t){var e="number"==typeof t?t:this.selectColumn(0).indexOf(t);e>-1&&this.matrix.splice(e,1);return this};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.filterColumns=function(t){var e=this,n=[];return(0,i.each)(e.matrix,function(t,e){n.push([])}),(0,i.each)(e.matrix[0],function(r,a){var o=e.selectColumn(a);(0==a||t.call(e,o,a))&&(0,i.each)(o,function(t,e){n[e].push(t)})}),e.data(n),e},e.filterRows=function(t){var e=this,n=[];return(0,i.each)(e.matrix,function(i,r){(0==r||t.call(e,i,r))&&n.push(i)}),e.data(n),e};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.insertColumn=function(t,e,n){var i=this,a=void 0!==e?e:null;"function"==typeof n?(i.matrix[0].splice(t,0,a),(0,r.each)(i.matrix,function(e,r){var a;r>0&&(void 0===(a=n.call(i,e,r))&&(a=null),i.matrix[r].splice(t,0,a))})):(!n||n instanceof Array)&&((n=n||[]).length<=i.matrix.length-1?n=n.concat((0,o.default)(i.matrix.length-1-n.length)):(0,r.each)(n,function(t,e){i.matrix.length-10&&(r=i.selectColumn(e),void 0===(o=n.call(i,r,e))&&(o=null),a.push(o))}),i.matrix.splice(t,0,a)):(!n||n instanceof Array)&&((n=n||[]).length<=i.matrix[0].length-1?n=n.concat((0,o.default)(i.matrix[0].length-1-n.length)):(0,r.each)(n,function(t,e){i.matrix[0].length-1-1&&void 0!==this.matrix[0][n]&&(0,i.each)(this.matrix,function(t,i){e.push(t[n])});return e},e.selectRow=function(t){var e=[],n="number"==typeof t?t:this.selectColumn(0).indexOf(t);n>-1&&void 0!==this.matrix[n]&&(e=this.matrix[n]);return e};var i=n(0)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sortColumns=function(t,e){var n=this,i=this.matrix[0].slice(1),a=[],s=e||o.default.getColumnLabel;return(0,r.each)(i,function(t,e){a.push(n.selectColumn(e+1).slice(0))}),a.sort(function(e,i){var r=s.call(n,e)>s.call(n,i);return r?"asc"===t?1:-1:r?0:"asc"===t?-1:1}),(0,r.each)(a,function(t,e){n.deleteColumn(e+1).insertColumn(e+1,t[0],t.slice(1))}),n},e.sortRows=function(t,e){var n=this,i=this.matrix.slice(0,1),r=this.matrix.slice(1),a=e||o.default.getRowIndex;return r.sort(function(e,i){var r=a.call(n,e)>a.call(n,i);return r?"asc"===t?1:-1:r?0:"asc"===t?-1:1}),n.data(i.concat(r)),n};var i,r=n(0),a=n(13),o=(i=a)&&i.__esModule?i:{default:i}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.updateColumn=function(t,e){var n=this,i="number"==typeof t?t:this.matrix[0].indexOf(t);i>-1&&("function"==typeof e?(0,r.each)(n.data(),function(t,r){var a;r>0&&void 0!==(a=e.call(n,t[i],r,t))&&(n.matrix[r][i]=a)}):(!e||e instanceof Array)&&((e=e||[]).length<=n.data().length-1?e=e.concat((0,o.default)(n.data().length-1-e.length)):(0,r.each)(e,function(t,i){n.matrix.length-1-1&&("function"==typeof e?(0,r.each)(n.data()[i],function(t,r){var a=n.selectColumn(r),o=e.call(n,t,r,a);void 0!==o&&(n.matrix[i][r]=o)}):(!e||e instanceof Array)&&((e=e||[]).length<=n.matrix[0].length-1?e=e.concat((0,o.default)(n.matrix[0].length-1-e.length)):(0,r.each)(e,function(t,i){n.matrix[0].length-1 stats.json",analyze:"webpack-bundle-analyzer stats.json /dist",version:"npm run build && git add .",postversion:"git push && git push --tags && npm publish",test:"NODE_ENV=test jest","test:watch":"NODE_ENV=test jest --watch"},repository:{type:"git",url:"https://github.com/keen/keen-dataviz.js.git"},bugs:"https://github.com/keen/keen-dataviz.js/issues",author:"Keen.IO (https://keen.io/)",contributors:["Dustin Larimer (https://github.com/dustinlarimer)","Joanne Cheng (https://github.com/joannecheng)","Eric Anderson (https://github.com/aroc)","Joe Wegner (https://github.com/josephwegner)","Sara Falkoff (https://github.com/adamkasprowicz)","Dariusz Łacheta (https://github.com/dariuszlacheta)"],homepage:"https://keen.io",keywords:["d3","c3","Analytics","Stats","Statistics","Visualization","Visualizations","Data Visualization","Chart","Charts","Charting","Svg","Dataviz","Plots","Graphs","Funnels"],dependencies:{c3:"^0.7.2",d3:"^5.11.0","dom-to-image":"^2.6.0","file-saver":"^2.0.1","promise-polyfill":"^8.0.0",rangeable:"^0.1.6"},devDependencies:{autoprefixer:"^8.2.0","babel-loader":"^7.1.4","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0",concurrently:"^3.5.1",cssnano:"^3.10.0",eslint:"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.11.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0",jest:"^22.4.3","jest-environment-jsdom-c3":"^2.0.0",nock:"^9.2.6",postcss:"^6.0.21","postcss-cli":"^5.0.0","postcss-color-function":"^4.0.1","postcss-css-variables":"^0.8.1","postcss-cssnext":"^2.4.0","postcss-import":"^8.0.2","postcss-loader":"^2.1.3",precss:"^3.1.2","regenerator-runtime":"^0.11.1","replace-in-file":"^3.4.0","style-loader":"^0.20.3",webpack:"^4.29.0","webpack-bundle-analyzer":"^3.3.2","webpack-cli":"^3.2.1","webpack-dev-server":"^3.3.1","xhr-mock":"^2.3.2"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return arguments.length?t instanceof a.default?(this.dataset=t,this):function(t){var e,n,i,r,u,c,l,f,d=[];n=this.config.indexBy,i=t.metadata||{},u=void 0!==t.query?t.query:{},"funnel"===(u=(0,o.extend)({analysis_type:null,event_collection:null,filters:[],group_by:null,interval:null,timeframe:null,timezone:null},u)).analysis_type?r="funnel":"extraction"===u.analysis_type?r="extraction":"select_unique"===u.analysis_type?u.group_by||u.interval||(r="list"):u.analysis_type&&(u.group_by||u.interval?u.group_by&&!u.interval?u.group_by instanceof Array&&u.group_by.length>1?(r="double-grouped-metric",d.push(u.group_by)):r="grouped-metric":u.interval&&!u.group_by?(r="interval",d.push(n)):u.group_by&&u.interval&&(u.group_by instanceof Array&&u.group_by.length>1?(r="double-grouped-interval",d.push(u.group_by),d.push(n)):(r="grouped-interval",d.push(n))):r="metric");r||("number"==typeof t.result&&(r="metric"),t.result instanceof Array&&t.result.length>0&&(!t.result[0].timeframe||"number"!=typeof t.result[0].value&&null!=t.result[0].value||(r="interval",d.push(n)),"number"==typeof t.result[0].result&&(r="grouped-metric"),"heatmap"===this.config.type&&Object.keys(3===t.result[0]&&"number"==typeof t.result[0].result)&&(r="heatmap-axis"),t.result[0].value instanceof Array&&(r="grouped-interval",d.push(n)),"number"==typeof t.result[0]&&void 0!==t.steps&&(r="funnel",u.steps=t.steps),"string"!=typeof t.result[0]&&"number"!=typeof t.result[0]||void 0!==t.steps||(r="list"),r||(r="extraction")),r||(r="extraction"));void 0===this.config.title&&(l=i.display_name?i.display_name:function(t){var e,n=t.analysis_type?t.analysis_type.replace("_"," "):"";e=n.replace(/\b./g,function(t){return t.toUpperCase()}),t.event_collection&&(e+=" - "+t.event_collection);return e}(u),this.config.title=l);this.config.type||(f=i.visualization&&i.visualization.chart_type?i.visualization.chart_type:function(t){var e=void 0;switch(t){case"metric":e="metric";break;case"interval":e="area";break;case"grouped-metric":case"double-grouped-metric":e="bar";break;case"grouped-interval":case"double-grouped-interval":e="line";break;case"funnel":e="horizontal-bar";break;case"list":case"extraction":default:e="table"}return e}(r),this.config.type=f);c=a.default.parser.apply(this,[r].concat(d)),e=c((0,o.extend)(t,{query:u})),r.indexOf("interval")>-1&&e.updateColumn(0,function(t,e){return new Date(t)});e.updateRow(0,function(t,e){return(0,s.stripHtmlTags)(t)}),this.dataset=e,t.execution_metadata&&(this.execution_metadata=t.execution_metadata);return this}.call(this,t):this.dataset.data()};var i,r=n(12),a=(i=r)&&i.__esModule?i:{default:i},o=n(5),s=n(15)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=Object.assign||function(t){for(var e=1;e12?1e3:250;e=setTimeout(function(){(0,a.each)(t.visuals,function(t){var e=t.view._artifacts.c3;if(e){var n=e.element.parentNode.parentNode.offsetWidth,i=n;if(t.config.legend&&t.config.legend.show&&("left"===t.config.legend.position||"right"===t.config.legend.position)){var r=e.element.nextSibling?e.element.nextSibling.offsetWidth:0;i=n-(e.element.previousSibling?e.element.previousSibling.offsetWidth:0)-r}e.resize({width:i})}})},n)}),function(){var t={message:h.default,metric:p.default,table:g.default,spinner:y.default,funnel:new v.default,"funnel-3d":new _.default,"horizontal-funnel":new m.default,"horizontal-funnel-3d":new x.default,"metric-combo":new b.default,heatmap:new w.default,choropleth:new S.default},e=function(t,e){return parseInt(window.getComputedStyle(t)["padding"+e].replace("px",""))};return(0,a.each)(["area","area-spline","area-step","bar","donut","gauge","line","pie","step","spline","horizontal-area","horizontal-area-spline","horizontal-area-step","horizontal-bar","horizontal-line","horizontal-step","horizontal-spline"],function(n,h){t[n]={render:function(){var t=this,h=function(){var t={bindto:this.el().querySelector("."+this.config.theme+"-rendering .c3-chart"),color:{pattern:this.config.colors},data:{colors:i({},this.config.colorMapping),columns:[],type:this.config.type.replace("horizontal-","")}},n=this.el(),r=n.offsetHeight;if(r-=e(n,"Top")+e(n,"Bottom"),this.config.showTitle){var a=this.el().querySelector(".keen-dataviz-title");r-=a?a.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}if(this.config.subtitle){var s=this.el().querySelector(".keen-dataviz-subtitle");r-=s?s.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}if(this.config.notes){var u=this.el().querySelector(".keen-dataviz-notes");r-=u?u.offsetHeight:parseInt(window.getComputedStyle(this.el(),null)["font-size"].replace("px",""))}var c=this.el().querySelector(".c3-chart").offsetWidth-(e(n,"Left")+e(n,"Right"));c<0&&(c=0);var l={size:{width:c,height:r>0?r:void 0}};return(0,o.extendDeep)({},l,this.config,t)}.call(this),p=(0,d.calculateSumForPercents)(this.dataset.matrix);if("percent"!==h.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n||(this.dataset.matrix,this.dataset.matrix=[this.dataset.matrix[0]].concat(T((0,d.calculatePercents)(this.dataset.matrix,p))),h.sparkline||(h.axis={y:{padding:{top:0},tick:{format:function(t){return t+"%"}}}})),h.range&&(this.dataset.matrix=[this.dataset.matrix[0]].concat(T((0,f.default)(this.dataset.matrix)))),this.config.clearOnRender&&h.data.columns.length&&this.dataset&&this.dataset.meta){var g=(this.dataset.meta||{}).type,y=0;["interval"].includes(void 0===g?"":g)&&(y=1),h.data.columns.splice(y)}if(1!==this.data()[0].length&&1!==this.data().length){var v=!1;if("gauge"===n?(h.legend.show=!1,h.data.columns=[[this.config.title||this.data()[1][0],this.data()[1][1]]],v=!0):"pie"===n||"donut"===n?h.data.columns=this.data().slice(1):(n.indexOf("horizontal-")>-1&&(h.axis.rotated=n.indexOf("horizontal-")>-1),(0,s.default)(this.data()[1][0])?(h.axis.x=h.axis.x||{},h.axis.x.type="timeseries",h.axis.x.tick=h.axis.x.tick||{format:this.config.dateFormat||(0,u.default)(this.data()[1][0],this.data()[2]?this.data()[2][0]:this.data()[1][0]),culling:{max:5}},h.data.columns[0]=[],(0,a.each)(this.dataset.selectColumn(0),function(t,e){e>0&&(t=new Date(t)),h.data.columns[0][e]=t}),h.data.columns[0][0]="x",h.data.x="x",this.config.stacked&&this.data()[0].length>2&&(h.data.groups=[this.dataset.selectRow(0).slice(1)])):(h.axis.x=h.axis.x||{},h.axis.x.type="category",h.axis.x.categories=this.dataset.selectColumn(0).slice(1),this.config.stacked&&this.data()[0].length>2&&(h.data.groups=[this.dataset.selectRow(0).slice(1)])),2===this.data()[0].length&&(h.legend.show=!1,v=!0),(0,a.each)(this.data()[0],function(t,e){e>0&&h.data.columns.push(this.dataset.selectColumn(e))}.bind(this))),v){var _=this.el().querySelector(".keen-c3-legend");_&&(_.remove(),h.size.width=this.el().querySelector(".c3-chart").offsetWidth),h.legend.show=!1}if(h.partialIntervalIndicator&&h.partialIntervalIndicator.show&&["area","area-spline","area-step","line","spline","step"].indexOf(h.type)>-1){var m=h.data.columns&&h.data.columns[0];if(m&&m.length>1){var x={axis:"x",start:new Date(m[m.length-2]),class:h.partialIntervalIndicator.className};h.regions=[].concat(T(h.regions||[]),[x])}}if(h.tooltip&&!1===h.tooltip.show||!(!0===h.legend.show||h.legend&&h.legend.tooltip&&h.legend.tooltip.show)||(h.tooltip={contents:l.default,format:{title:this.config.tooltip.format.title,value:function(e,i,r,a){var o=function(t,e,n,i){var r=this.config.type;if(!this.view._artifacts.pagination||"gauge"===r)return t;var a=this.view._artifacts.pagination.labels;return a.indexOf(n)>-1?t:void 0}.call(t,e,i,r,a);return t.config.tooltip&&t.config.tooltip.format&&t.config.tooltip.format.value?(o=t.config.tooltip.format.value.call(t,o,i,r,a),"percent"!==h.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n||(o=parseFloat((o/100*p[a]).toFixed(2))),h.range&&"Max"===r&&(o+=t.dataset.matrix[a+1][2]),o):"percent"!==h.stacking||"bar"!==n&&"horizontal-bar"!==n&&"area"!==n&&"area-step"!==n&&"area-spline"!==n?(h.range&&"Max"===r&&(o+=t.dataset.matrix[a+1][2]),o):(o=(o/100*p[a]).toFixed(2),parseFloat(o))}}}),!0===h.legend.show){var b=i({},h);b.data.color=function(t,e){var n=this.config.type;if(this.view._artifacts.pagination&&"gauge"!==n){var i=this.view._artifacts.pagination.labels;return e.id&&i.indexOf(e.id)>-1||e&&!e.id&&i.indexOf(e)>-1?t:"donut"===n||"pie"===n?"rgba(0,0,0,.1)":"rgba(0,0,0,.07)"}return t}.bind(this),b.legend.hide=!0,this.view._artifacts.c3=r.default.generate(b),c.default.call(this,i({},h,{onLegendRendered:function(){var n=t.el().querySelector(".keen-c3-legend");n&&("top"===h.legend.position||"bottom"===h.legend.position?(b.size.height-=n.offsetHeight,t.view._artifacts.c3.resize({height:b.size.height})):(0===b.size.width&&(b.size.width=t.el().offsetWidth-e(t.el(),"Left")-e(t.el(),"Right")),b.size.width-=n.offsetWidth,t.view._artifacts.c3.resize({width:b.size.width})))},onPaginated:function(){t.view._artifacts.c3.flush()}}))}else this.view._artifacts.c3=r.default.generate(h)}else{var w="No data to display",S=this.config.errorMapping[w]||w;this.config.showErrorMessages&&this.message(S)}},update:function(){this.render()},destroy:function(){this.view._artifacts.c3&&(this.view._artifacts.c3.destroy(),this.view._artifacts.c3=null)}}}),t}()};var r=A(n(10)),a=n(0),o=(n(5),n(16)),s=A(n(11)),u=A(n(35)),c=A(n(36)),l=A(n(37)),f=A(n(38)),d=n(39),h=A(n(40)),p=A(n(44)),g=A(n(45)),y=A(n(46)),v=A(n(47)),_=A(n(48)),m=A(n(49)),x=A(n(50)),b=A(n(51)),w=A(n(52)),S=A(n(53));function A(t){return t&&t.__esModule?t:{default:t}}function T(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=24192e5?function(t){var e=new Date(t);return i[e.getMonth()]+" "+e.getFullYear()}:n>=864e5?function(t){var e=new Date(t);return i[e.getMonth()]+" "+e.getDate()}:n>=36e5?"%I:%M %p":"%I:%M:%S %p"}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=Object.assign||function(t){for(var e=1;e"+n+"",i.chartPartId=e,i.setAttribute("class","legend-item"),g.append(i);var a=document.createElement("span");a.setAttribute("class","legend-item-color-sample"),a.style.backgroundColor=r.color(i.chartPartId),i.prepend(a);var o=document.createElement("div");i.addEventListener("mouseover",function(e){r.focus(i.chartPartId),u.tooltip.show&&i.chartPartId.length>u.label.textMaxLength&&(o.setAttribute("class","keen-c3-legend-label-overlay keen-c3-legend-position-"+u.position),o.innerHTML=(t.legend.tooltip.pointer?"
":"")+i.chartPartId,i.append(o))}),i.addEventListener("mouseout",function(t){r.revert(),o.remove()}),i.addEventListener("click",function(t){var e=1,n=c.hidden.indexOf(i.chartPartId);n<0?(c.hidden.push(i.chartPartId),e=.35):(c.hidden.splice(n,1),e=1),i.style.opacity=e,r.toggle(i.chartPartId)})}),t.onLegendRendered&&(t.onLegendRendered(),t.onLegendRendered=null)}.call(n,c.labels),c.total>c.limit&&function(){y.innerHTML="",p.innerHTML="",v.innerHTML="";var t=document.createElement("i"),e=document.createElement("i"),n=function(t){if("forward"===t){var e=c.offset+c.limit;return e=0?n:Math.floor(c.total/c.limit)*c.limit};e.addEventListener("click",function(){n("forward"),_(),m()}),t.addEventListener("click",function(){n("backward"),_(),m()}),"left"===u.position||"right"===u.position?(t.setAttribute("class","up"),e.setAttribute("class","down"),y.append(e),y.append(t)):(t.setAttribute("class","left"),e.setAttribute("class","right"),p.append(t),v.append(e))}.call(n),t.onPaginated&&t.onPaginated()}function m(){document.selection&&document.selection.empty?document.selection.empty():window.getSelection&&window.getSelection().removeAllRanges()}v.setAttribute("class","keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right"),"horizontal"===h&&d.append(v),_()};!function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);e.default=t}(n(2));var r,a=n(11),o=(r=a)&&r.__esModule?r:{default:r}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,r){for(var a=void 0,o=void 0,s=this.config.tooltip_format_name||function(t){return t},u=this.config.tooltip_format_title||e,c=this.config.tooltip_format_value||n,l=0;l"+(o||0===o?""+(0,i.escapeHtml)(o)+"":""));var f=s(t[l].name),d=c(t[l].value,t[l].ratio,t[l].id,t[l].index),h=this.levelColor?this.levelColor(t[l].value):r(t[l].id);d&&!isNaN(d)&&(a+="",-1===f.indexOf("__tooltip_ignore_name_field__")&&(a+=""+(0,i.escapeHtml)(f)+""),a+=""+(0,i.escapeHtml)(d)+"",a+="")}return a+""};var i=n(4)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return t.slice(1).map(function(t){return t.map(function(e,n){return"number"==typeof e&&1===n?e-t[n+1]:e})})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.calculateSumForPercents=function(t){var e=[];return t.slice(1).forEach(function(t,n){t.forEach(function(t){if("number"==typeof t){if(!e[n])return e[n]=t,e[n];e[n]+=t}return e[n]})}),e},e.calculatePercents=function(t,e){return t.slice(1).map(function(t,n){return t.map(function(t){return"number"==typeof t?t/e[n]*100:t})})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(4),r=o(n(17)),a=o(n(1));function o(t){return t&&t.__esModule?t:{default:t}}e.default={render:function(t){var e=document.createElement("div"),n=document.createElement("div"),o=document.createElement("span"),s=document.createElement("div"),u=document.createElement("div"),c=document.createElement("div");e.className=this.config.theme+" keen-dataviz-box",n.className=this.config.theme+"-message",s.className=this.config.theme+"-title",s.innerHTML=(0,i.escapeHtml)(this.config.title||""),u.className=this.config.theme+"-subtitle",u.innerHTML=(0,i.escapeHtml)(this.config.subtitle||""),c.className=this.config.theme+"-notes",c.innerHTML=(0,i.escapeHtml)(this.config.notes||""),o.innerHTML=(0,i.escapeHtml)(t)||"",n.appendChild(o),this.config.title&&this.config.showTitle&&e.appendChild(s),this.config.subtitle&&e.appendChild(u),e.appendChild(n),this.config.notes&&e.appendChild(c),this.config.ui&&this.config.ui.buttons&&this.config.ui.buttons.download&&this.config.ui.buttons.download.type&&(0,r.default)({element:this.el(),data:(0,i.escapeHtml)(t)||"",type:this.config.ui.buttons.download.type,label:this.config.ui.buttons.download.label}),this.config.utils&&this.config.utils.clickToCopyToClipboard&&(s.addEventListener("click",function(t){return(0,a.default)(t.target.innerText,t)}),c.addEventListener("click",function(t){return(0,a.default)(t.target.innerText,t)}),o.addEventListener("click",function(t){return(0,a.default)(t.target.innerText,t)})),this.el().innerHTML="",this.el().appendChild(e)},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.event,n=t.type,a=t.data;e.preventDefault();var o=n.toLowerCase();if(!["json","csv","jpg","jpeg","png"].includes(n))throw new Error("This type is not supported");if("png"===o)return void(0,i.default)({node:e.currentTarget.previousElementSibling});if("jpg"===o||"jpeg"===o)return void(0,i.default)({node:e.currentTarget.previousElementSibling,quality:1,bgcolor:"#fff"});"json"===o&&(0,r.default)({type:o,data:a});"csv"===o&&(0,r.default)({type:o,data:a})};var i=a(n(18)),r=a(n(19));function a(t){return t&&t.__esModule?t:{default:t}}},function(t,e,n){!function(e){"use strict";var n=function(){return{escape:function(t){return t.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1")},parseExtension:e,mimeType:function(t){var n=e(t).toLowerCase();return(i="application/font-woff",{woff:i,woff2:i,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml"})[n]||"";var i},dataAsUrl:function(t,e){return"data:"+e+";base64,"+t},isDataUrl:function(t){return-1!==t.search(/^(data:)/)},canvasToBlob:function(t){return t.toBlob?new Promise(function(e){t.toBlob(e)}):function(t){return new Promise(function(e){for(var n=window.atob(t.toDataURL().split(",")[1]),i=n.length,r=new Uint8Array(i),a=0;a'+t+""}).then(function(t){return''+t+""}).then(function(t){return"data:image/svg+xml;charset=utf-8,"+t})}(i,e.width||n.width(t),e.height||n.height(t))})}function c(t,e){return u(t,e).then(n.makeImage).then(n.delay(100)).then(function(i){var r=function(t){var i=document.createElement("canvas");if(i.width=e.width||n.width(t),i.height=e.height||n.height(t),e.bgcolor){var r=i.getContext("2d");r.fillStyle=e.bgcolor,r.fillRect(0,0,i.width,i.height)}return i}(t);return r.getContext("2d").drawImage(i,0,0),r})}function l(t,e,i){if(!i&&e&&!e(t))return Promise.resolve();return Promise.resolve(t).then(r).then(function(n){return a(t,n,e)}).then(function(e){return o(t,e)});function r(t){return t instanceof HTMLCanvasElement?n.makeImage(t.toDataURL()):t.cloneNode(!1)}function a(t,e,i){var r=t.childNodes;return 0===r.length?Promise.resolve(e):function(t,e,n){var i=Promise.resolve();return e.forEach(function(e){i=i.then(function(){return l(e,n)}).then(function(e){e&&t.appendChild(e)})}),i}(e,n.asArray(r),i).then(function(){return e});function a(t,e,n){var i=Promise.resolve();return e.forEach(function(e){i=i.then(function(){return l(e,n)}).then(function(e){e&&t.appendChild(e)})}),i}}function o(t,e){return e instanceof Element?Promise.resolve().then(function(){!function(t,e){t.cssText?e.cssText=t.cssText:function(t,e){n.asArray(t).forEach(function(n){e.setProperty(n,t.getPropertyValue(n),t.getPropertyPriority(n))})}(t,e)}(window.getComputedStyle(t),e.style)}).then(function(){[":before",":after"].forEach(function(i){!function(i){var r=window.getComputedStyle(t,i),a=r.getPropertyValue("content");if(""===a||"none"===a)return;var o=n.uid();e.className=e.className+" "+o;var s=document.createElement("style");s.appendChild(function(t,e,i){var r="."+t+":"+e,a=i.cssText?function(t){var e=t.getPropertyValue("content");return t.cssText+" content: "+e+";"}(i):function(t){return n.asArray(t).map(function(e){return e+": "+t.getPropertyValue(e)+(t.getPropertyPriority(e)?" !important":"")}).join("; ")+";"}(i);return document.createTextNode(r+"{"+a+"}")}(o,i,r)),e.appendChild(s)}(i)})}).then(function(){t instanceof HTMLTextAreaElement&&(e.innerHTML=t.value);t instanceof HTMLInputElement&&e.setAttribute("value",t.value)}).then(function(){if(!(e instanceof SVGElement))return;if(e.setAttribute("xmlns","http://www.w3.org/2000/svg"),!(e instanceof SVGRectElement))return;["width","height"].forEach(function(t){var n=e.getAttribute(t);n&&e.style.setProperty(t,n)})}).then(function(){return e}):e;function i(){function i(t,e){if(t.cssText)e.cssText=t.cssText;else i(t,e);function i(t,e){n.asArray(t).forEach(function(n){e.setProperty(n,t.getPropertyValue(n),t.getPropertyPriority(n))})}}i(window.getComputedStyle(t),e.style)}function r(){function i(i){var r=window.getComputedStyle(t,i),a=r.getPropertyValue("content");if(a===""||a==="none")return;var o=n.uid();e.className=e.className+" "+o;var s=document.createElement("style");function u(t,e,i){var r="."+t+":"+e,a=i.cssText?o(i):s(i);return document.createTextNode(r+"{"+a+"}");function o(t){var e=t.getPropertyValue("content");return t.cssText+" content: "+e+";"}function s(t){return n.asArray(t).map(e).join("; ")+";";function e(e){return e+": "+t.getPropertyValue(e)+(t.getPropertyPriority(e)?" !important":"")}}}s.appendChild(u(o,i,r)),e.appendChild(s)}[":before",":after"].forEach(function(t){i(t)})}function a(){if(t instanceof HTMLTextAreaElement)e.innerHTML=t.value;if(t instanceof HTMLInputElement)e.setAttribute("value",t.value)}function o(){if(!(e instanceof SVGElement))return;if(e.setAttribute("xmlns","http://www.w3.org/2000/svg"),!(e instanceof SVGRectElement))return;["width","height"].forEach(function(t){var n=e.getAttribute(t);if(!n)return;e.style.setProperty(t,n)})}}}function f(t){return r.resolveAll().then(function(e){var n=document.createElement("style");return t.appendChild(n),n.appendChild(document.createTextNode(e)),t})}function d(t){return a.inlineAll(t).then(function(){return t})}t.exports=s}()},function(t,e,n){(function(n){var i,r,a;r=[],void 0===(a="function"==typeof(i=function(){"use strict";function e(t,e,n){var i=new XMLHttpRequest;i.open("GET",t),i.responseType="blob",i.onload=function(){o(i.response,e,n)},i.onerror=function(){console.error("could not download file")},i.send()}function i(t){var e=new XMLHttpRequest;e.open("HEAD",t,!1);try{e.send()}catch(t){}return 200<=e.status&&299>=e.status}function r(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(n){var e=document.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(e)}}var a="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n&&n.global===n?n:void 0,o=a.saveAs||("object"!=typeof window||window!==a?function(){}:"download"in HTMLAnchorElement.prototype?function(t,n,o){var s=a.URL||a.webkitURL,u=document.createElement("a");n=n||t.name||"download",u.download=n,u.rel="noopener","string"==typeof t?(u.href=t,u.origin===location.origin?r(u):i(u.href)?e(t,n,o):r(u,u.target="_blank")):(u.href=s.createObjectURL(t),setTimeout(function(){s.revokeObjectURL(u.href)},4e4),setTimeout(function(){r(u)},0))}:"msSaveOrOpenBlob"in navigator?function(t,n,a){if(n=n||t.name||"download","string"!=typeof t)navigator.msSaveOrOpenBlob(function(t,e){return void 0===e?e={autoBom:!1}:"object"!=typeof e&&(console.warn("Deprecated: Expected third argument to be a object"),e={autoBom:!e}),e.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t}(t,a),n);else if(i(t))e(t,n,a);else{var o=document.createElement("a");o.href=t,o.target="_blank",setTimeout(function(){r(o)})}}:function(t,n,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof t)return e(t,n,i);var o="application/octet-stream"===t.type,s=/constructor/i.test(a.HTMLElement)||a.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent);if((u||o&&s)&&"object"==typeof FileReader){var c=new FileReader;c.onloadend=function(){var t=c.result;t=u?t:t.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=t:location=t,r=null},c.readAsDataURL(t)}else{var l=a.URL||a.webkitURL,f=l.createObjectURL(t);r?r.location=f:location.href=f,r=null,setTimeout(function(){l.revokeObjectURL(f)},4e4)}});a.saveAs=o.saveAs=o,t.exports=o})?i.apply(e,r):i)||(t.exports=a)}).call(this,n(7))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=n(3),a=n(4),o=n(1),s=(i=o)&&i.__esModule?i:{default:i};e.default={render:function(){var t=this.config.colors[0],e=this.config.theme,n=this.config.title,i=this.config.subtitle,o=this.config,u="-",c="",l="",f="",d="",h=void 0,p="",g="",y="",v="",_=this.config,m=_.results,x=_.previousResults,b=_.isExtraction,w=_.comparedProp;if(m&&x&&(p=x?" metric-comparison":"",v=x&&n?"-smaller":"",y=(g=m.result-x.result)>0?"-green":"-red",g=Math.abs(g),t=""),this.data()&&this.data()[1]&&this.data()[1][1]&&"number"==typeof this.data()[1][1]&&(u=this.data()[1][1]),b&&w){var S=function(t,e){var n=t.query,i=t.result,r=[];if("extraction"!==n.analysis_type)throw new Error("Analysis type is not an extraction!");return Array.isArray(i)&&i.forEach(function(t){var i=e.split(".").reduce(function(t,e){return t&&t[e]||null},t),a={query:n,result:i};r.push(a)}),r}(m,w);u=S[0].result,p=(c=S[1].result)?" metric-comparison":"",v=c&&n?"-smaller":"",y=(g=u-c)>0?"-green":"-red",g=Math.abs(g),t=""}if(h=u,void 0!==o.prettyNumber&&!0!==o.prettyNumber||isNaN(parseInt(u))||(h=(0,r.prettyNumber)(u),m&&x&&(g=(0,r.prettyNumber)(g))),o.prefix&&(f=''+o.prefix+""),o.suffix&&(d=''+o.suffix+""),l+='
',l+='
',m&&x&&(l+='
'+(0,a.escapeHtml)(g)+"
"),b&&w&&(u&&c?(l+='
'+(0,a.escapeHtml)(g)+"
",l+=""+c+""):l+="

No data to display

"),l+='
'+f+(0,a.escapeHtml)(h)+d+"
",n&&(l+='
'+(0,a.escapeHtml)(n)+"
"),i&&(l+='
'+(0,a.escapeHtml)(i)+"
"),l+="
",l+="
",this.el().innerHTML=l,this.config.onrendered&&this.config.onrendered(),this.config.utils&&this.config.utils.clickToCopyToClipboard){var A="."+e+"-metric-value"+v;if(document.querySelector(A).addEventListener("click",function(t){return(0,s.default)(t.target.innerText,t)}),m&&x){var T="."+e+"-metric"+y;document.querySelector(T).addEventListener("click",function(t){return(0,s.default)(t.target.innerText,t)})}}},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(i=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);i=!0);}catch(t){r=!0,a=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=Object.assign||function(t){for(var e=1;e';var T=!0,P=!1,C=void 0;try{for(var M,E=A.entries()[Symbol.iterator]();!(T=(M=E.next()).done);T=!0){var L=M.value,k=r(L,2),V=k[0],O=k[1];v&&O instanceof Date&&(O=v(O));var G=(0,o.escapeHtml)(O);p[V]?n+=""+y[p[V]](G)+"":n+=""+G+""}}catch(t){P=!0,C=t}finally{try{!T&&E.return&&E.return()}finally{if(P)throw C}}n+=""}}catch(t){x=!0,b=t}finally{try{!m&&S.return&&S.return()}finally{if(x)throw b}}if(l>1){n+='';var R=1,I=1===c?1:c-1,N=c===l?l:c+1;for(s.arrows&&(n+='«');R<=l;)n+=''+R+"",R++;s.arrows&&(n+='»'),n+=""}return n}e.default={render:function(){var t=this,e=this.dataset.matrix,n=this.el(),i=this.config.theme,r=this,a="";if(1===e.length&&0===e[0].length){var s="No data to display",f=this.config.errorMapping[s]||s;this.config.showErrorMessages&&this.message(f)}else{a+='
',a+='',a+="",a+="",a+=function(t,e){var n="",i=-1,r=t.config.table,a=r&&r.columns||e[0],s=!0,u=!1,c=void 0;try{for(var l,f=a[Symbol.iterator]();!(s=(l=f.next()).done);s=!0){var d=l.value,h=(0,o.escapeHtml)(d);n+='"}}catch(t){u=!0,c=t}finally{try{!s&&f.return&&f.return()}finally{if(u)throw c}}return n}(r,e),a+="",a+="",a+="",a+=l(r,e),a+="",a+="
'+h+"
",a+="
",n.querySelector("."+i+"-rendering").innerHTML=a,n.querySelectorAll("."+i+"-rendering th").forEach(function(a){a.addEventListener("click",function(a){var o=a.target.getAttribute("order")||"asc",s=a.target.getAttribute("fieldNumber");o="asc"===o?"desc":"asc",a.target.setAttribute("order",o);var u=t.dataset.matrix.shift();t.dataset.matrix.sort(function(t,e){var n="asc"===o?1:-1;if("string"==typeof t[s]){var i=t[s].toUpperCase(),r=e[s].toUpperCase();return ir?1*n:0}return(t[s]-e[s])*n}),t.dataset.matrix.unshift(u),n.querySelector("."+i+"-rendering tbody").innerHTML=l(r,e),d()})});var d=function t(){n.querySelectorAll(".btn").forEach(function(a){a.addEventListener("click",function(a){c=parseInt(a.target.getAttribute("data-page")),n.querySelector("."+i+"-rendering tbody").innerHTML=l(r,e),t()},!0)})};if(d(r,n,i),this.config.onrendered&&this.config.onrendered(),this.config.utils&&this.config.utils.clickToCopyToClipboard){var h="."+i+"-table-dataset";document.querySelector(h).addEventListener("click",function(t){var e=t.target,n=e.nodeName,i=e.innerText;"TD"===n&&(0,u.default)(i,t)})}}},update:function(){this.render()},destroy:function(){}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={render:function(){var t="";this.view._artifacts.spinner={};t+='
',t+='
',t+='
',t+="
",t+="
",this.el().innerHTML=t},update:function(){this.render()},destroy:function(){if(this.view._artifacts.spinner){this.view._artifacts.spinner.interval&&clearInterval(this.view._artifacts.spinner.interval),this.view._artifacts.spinner.radius=0;try{delete this.view._artifacts.spinner}catch(t){this.view._artifacts.spinner=void 0}}this.el().innerHTML=""}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nM/2?M/2-5:t.points[3].x+V,y:"right"===m?t.points[3].y:t.points[3].y+k/1.5}]}}),D=I.concat(N);if(C.attr("preserveAspectRatio","xMidYMid meet").attr("viewBox","0 0 "+(M+T+S)+" "+(E+w+A-30)).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+T+","+w+")").selectAll("polygon").data(D).enter().append("polygon").attr("points",function(t){return t.points.map(function(t){return[t.x,t.y].join(",")}).join(" ")}).style("fill",function(t,e){return e>I.length-1?u[t.label]?a.rgb(u[t.label]).darker(1.5):a.rgb(n[e-I.length]).darker(1.5):u[t.label]?u[t.label]:n[e]}).attr("class",function(t){return t.label}).attr("cursor","pointer"),v&&(C.selectAll("line").data(I).enter().append("line").attr("x1",10).attr("y1",function(t){return t.points[0].y+w-k/5}).attr("x2",function(t,e){return 0===e?t.points[1].x+T:t.points[1].x+T-V}).attr("y2",function(t){return t.points[0].y+w-k/5}).attr("class","chart-lines"),C.append("line").attr("x1",10).attr("y1",I[I.length-1].points[2].y+w+k-k/5).attr("x2",I[I.length-1].points[2].x+T-V).attr("y2",I[I.length-1].points[2].y+w+k-k/5).attr("class","chart-lines")),v&&C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","start").attr("x",20).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+5+k/4}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(o.textWrap,T).attr("cursor","pointer"),v||C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","end").attr("x",function(t){return t.points[0].x+(t.points[3].x-t.points[0].x)/2+130}).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+5}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(o.textWrap,T).attr("cursor","pointer"),p&&!_&&C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",M/2+T).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+8}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),_&&!p&&C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",M/2+T).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+8}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer"),p&&_&&(C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",M/2+T).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+18}).attr("class",function(t){return"text-second "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",M/2+T).attr("y",function(t){return(t.points[2].y-t.points[1].y)/2+t.points[1].y+w+3}).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer")),x){var z=function(t){j.style("opacity",.5),H.style("opacity",.5);var e=/[^ ]*$/.exec(a.select(this).attr("class"))[0];C.selectAll("."+e).style("opacity",1)},F=function(t){j.style("opacity",1),H.style("opacity",1)},j=C.selectAll("polygon");j.on("mouseover",z).on("mouseout",F);var H=C.selectAll("text");H.on("mouseover",z).on("mouseout",F)}if(l&&l.clickToCopyToClipboard){C.selectAll("text").on("click",function(t){var e=t.percent,n=t.result;_?(0,c.default)(n,a.event):p&&(0,c.default)(e,a.event)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){a.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nL+A-40+w?L+A-40+w:t.points[2].y+(t.points[3].y-t.points[0].y)/2+k/4+w}).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(o.textWrap,k).attr("cursor","pointer"),p&&!m&&M.selectAll("text.label").data(R).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+k/2+T}).attr("y",L/2+w+10).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),m&&!p&&M.selectAll("text.label").data(R).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+k/2+T}).attr("y",L/2+w+10).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer"),p&&m&&(M.selectAll("text.label").data(R).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+k/2+T}).attr("y",L/2+w+16).attr("class",function(t){return"text-second "+t.label}).text(function(t){return t.percent}).attr("cursor","pointer"),M.selectAll("text.label").data(R).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[1].x+k/2+T}).attr("y",L/2+w-3).attr("class",function(t){return"text-main "+t.label}).text(function(t){return t.result}).attr("cursor","pointer")),x){var I=function(t){D.style("opacity",.5),z.style("opacity",.5);var e=/[^ ]*$/.exec(a.select(this).attr("class"))[0];M.selectAll("."+e).style("opacity",1)},N=function(t){D.style("opacity",1),z.style("opacity",1)},D=M.selectAll("polygon");D.on("mouseover",I).on("mouseout",N);var z=M.selectAll("text");z.on("mouseover",I).on("mouseout",N)}if(l&&l.clickToCopyToClipboard){M.selectAll("text").on("click",function(t){var e=t.percent,n=t.result;m?(0,c.default)(n,a.event):p&&(0,c.default)(e,a.event)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){a.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;nE/2?E/2-5:t.points[0].y+k}]}}),D=I.concat(N);if(C.attr("preserveAspectRatio","xMidYMid meet").attr("viewBox","0 0 "+(M+T+S)+" "+(E+w+A-30)).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+T+","+w+")").selectAll("polygon").data(D).enter().append("polygon").attr("points",function(t){return t.points.map(function(t){return[t.x,t.y].join(",")}).join(" ")}).style("fill",function(t,e){return e>I.length-1?u[t.label]?a.rgb(u[t.label]).darker(1.5):a.rgb(n[e-I.length]).darker(1.5):u[t.label]?u[t.label]:n[e]}).attr("class",function(t){return t.label}).attr("cursor","pointer"),v&&(C.selectAll("line").data(I).enter().append("line").attr("x1",function(t){return t.points[0].x+T-.8*k}).attr("y1",E+A).attr("x2",function(t){return t.points[0].x+T-.8*k}).attr("y2",function(t){return t.points[0].y+w}).attr("class","chart-lines"),C.append("line").attr("x1",M+T+k/4).attr("y1",E+A).attr("x2",I[I.length-1].points[3].x+T+k/4).attr("y2",I[I.length-1].points[3].y+w).attr("class","chart-lines")),v&&C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[0].x+T+.25*L}).attr("y",E+.4*A+w).attr("class",function(t){return"text-label "+t.label}).text(function(t){return t.name}).call(o.textWrap,L).attr("cursor","pointer"),v||C.selectAll("text.label").data(I).enter().append("text").style("text-anchor","middle").attr("x",function(t){return t.points[0].x+T+.25*L}).attr("y",function(t){return t.points[2].y+L/4>E+A-40?E+A-40+w:t.points[2].y+L/40&&(n=new Date(t)),h[0][e]=n}),h[0][0]="x",(0,a.each)(this.data()[0],function(e,n){n>0&&h.push(t.dataset.selectColumn(n))});var p=i&&i.previous&&i.previous.result||0,g=(i&&i.current&&i.current.result||0)-p,y=0===p?"-":(0,o.prettyNumber)(Math.round(g/p*100)),v="keen-dataviz-metric-green",_="arrow-green";y<0&&(v="keen-dataviz-metric-red",_="arrow-red");var m=c&&u?'
'+u+"
":"",x=l?'
'+l+"
":"",b=document.querySelector(n);b.innerHTML='\n
\n
\n
\n '+m+"\n "+x+'\n
'+y+' %
\n
'+(0,o.prettyNumber)(g)+'
\n
\n
\n
\n
\n
\n
';var w=b.querySelector(".c3-chart");r.default.generate({bindto:w,color:{pattern:["#c3c4cc"]},title:u,legend:{show:!1},data:{x:"x",columns:h,type:"area-spline",selection:{draggable:!1,enabled:!0,multiple:!0}},point:{r:0,focus:{expand:{r:5,enabled:!0}},select:{r:5,enabled:!0}},axis:{y:{show:!1},x:{show:!1}},grid:{x:{show:!1},y:{show:!1}},padding:{left:0,right:0,top:0,bottom:-4},tooltip:f});if(d&&d.clickToCopyToClipboard){var S=document.querySelector(".current-count").innerText;document.querySelector(".keen-dataviz-metric-combo").addEventListener("click",function(t){return(0,s.default)(S,t)})}}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){var t=this.config.container;document.querySelector(t).querySelector(".c3-chart").remove()}}]),t}();e.default=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(i=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);i=!0);}catch(t){r=!0,a=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(){function t(t,e){for(var n=0;nt?e.value:t},L),O=function(){var t=u[0],e=a.rgb("#00BBDE");return a.color(t)&&(e=a.rgb(t)),e},G=a.scaleLinear().domain([0,a.max(E,function(t){return t.value})]).range([0,1]),R=function(t){var e=G(t),n=O(),i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[255,255,255],n=t[3];return[Math.floor((1-n)*e[0]+n*t[0]+.5),Math.floor((1-n)*e[1]+n*t[1]+.5),Math.floor((1-n)*e[2]+n*t[2]+.5)]}([n.r,n.g,n.b,e]);return"rgb("+i[0]+", "+i[1]+", "+i[2]+")"},I=a.select(A).append("svg").attr("preserveAspectRatio","xMidYMid slice").attr("viewBox","0 0 "+w+" "+S).attr("height","100%").attr("width","100%").append("g").attr("transform","translate("+x+","+v+")");if(d){a.select(l).append("input").attr("type","range").attr("class","keen-dataviz-slider"),new o.default(".keen-dataviz-slider",{multiple:!0,min:k,max:V,value:[k,V],onChange:function(t){return function(t){var e=I.selectAll("rect"),n=i(t,2),r=n[0],o=n[1];e.each(function(t,e,n){a.select(n[e]).style("visibility",function(){return t.value>o||t.value\n ";h||(e='\n \n xAxis:\n '+t.x+'\n \n \n yAxis:\n '+t.y+"\n \n "+e+"\n "),X.html('\n \n '+e+"\n
\n ").style("left",a.event.clientX+10+"px").style("top",a.event.clientY+10+"px")}).on("mouseleave",function(){a.select(a.event.target).style("outline","none").style("transform","none"),X.style("opacity",0).style("display","none")}).on("click",function(t){return(0,s.default)(t.value)})}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){this.el().querySelector(".c3-chart").remove()}}]),t}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],i=!0,r=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(i=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);i=!0);}catch(t){r=!0,a=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=Object.assign||function(t){for(var e=1;ea||t.properties.result\n \n '+t.properties.name+'\n \n \n '+e+"\n \n \n ").style("left",o.event.clientX+10+"px").style("top",o.event.clientY+10+"px")}).on("mouseout",function(t){T.select("#"+t.properties.name.split(" ").join("-").split(".").join("")).style("fill",function(t){return k(t.properties.result)}).style("stroke-width",y),V.style("opacity",0).style("display","none")}),g&&T.selectAll("."+L).style("stroke",v).style("stroke-width",y);var V=o.select(".c3-chart").append("div").style("opacity",0).attr("class","c3-tooltip-container").style("display","none").style("position","fixed");if(l&&l.clickToCopyToClipboard){T.selectAll("."+L).on("click",function(t){var e=t.properties.result;(0,c.default)(e,o.event)})}T.call(f),T.call(f).on("mousedown.zoom",null)})}},{key:"update",value:function(){this.destroy(),this.render()}},{key:"destroy",value:function(){o.select(this.el().querySelector("."+this.config.theme+"-rendering .c3-chart")).remove()}}]),t}();e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.element,n=t.data,i=document.createElement("dl");i.classList="keen-dataviz-execution-meta",Object.keys(n).length?Object.keys(n).forEach(function(t){var e=document.createElement("dt");e.innerText=t.replace(/_/g," "),e.addEventListener("click",function(t){return s(t)});var r=document.createElement("dd");r.innerText=n[t],r.addEventListener("click",function(t){return s(t)}),i.append(e),i.append(r)}):i.innerText="No execution metadata available";e.append(i)};var i,r=n(1),a=(i=r)&&i.__esModule?i:{default:i};function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"copied",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;setTimeout(function(){t.classList.remove(e)},n)}function s(t){var e=t.target,n=t.target.nodeName,i=void 0;"DD"===n&&(i=e.innerText,e.classList.contains("copied")||(e.classList.add("copied"),o(e))),"DT"===n&&(i=e.nextSibling.innerText,e.nextSibling.classList.contains("copied")||(e.nextSibling.classList.add("copied"),o(e.nextSibling))),(0,a.default)(i)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=o(n(56)),r=o(n(57)),a=o(n(58));function o(t){return t&&t.__esModule?t:{default:t}}e.default={autocollector:i.default,modern:r.default,dracula:a.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#5E77FF","#9C60FE","#F162FE","#FD65B7","#FD6768","#FDB86A","#F2FC6C","#A5FC6E","#71FB85","#73FBD0","#76DDFA","#76f4fa","#bb76fa","#fa76bf"]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#45B2E8","#D9540D","#2CAB72","#2C4BAB","#EDDD02","#E84545","#E845CE","#5FCEC9","#E89F45","#28E43F","#B765C0","#458AE8","#AB2C2C","#AB2C75","#27E5FF","#7168F2","#FF932B","#855D00","#ACE845","#1C91B4"]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={colors:["#8be9fd","#50fa7b","#ffb86c","#ff79c6","#bd93f9","#ff5555","#f1fa8c"]}}])}); //# sourceMappingURL=keen-dataviz.min.js.map \ No newline at end of file diff --git a/dist/keen-dataviz.min.js.map b/dist/keen-dataviz.min.js.map index 09a1a09..8bf6de8 100644 --- a/dist/keen-dataviz.min.js.map +++ b/dist/keen-dataviz.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./lib/utils/each.js","webpack:///./lib/utils/copy-to-clipboard.js","webpack:///./node_modules/d3/dist/package.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/pairs.js","webpack:///./node_modules/d3-array/src/cross.js","webpack:///./node_modules/d3-array/src/descending.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-array/src/variance.js","webpack:///./node_modules/d3-array/src/deviation.js","webpack:///./node_modules/d3-array/src/extent.js","webpack:///./node_modules/d3-array/src/array.js","webpack:///./node_modules/d3-array/src/constant.js","webpack:///./node_modules/d3-array/src/identity.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/threshold/sturges.js","webpack:///./node_modules/d3-array/src/histogram.js","webpack:///./node_modules/d3-array/src/quantile.js","webpack:///./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack:///./node_modules/d3-array/src/threshold/scott.js","webpack:///./node_modules/d3-array/src/max.js","webpack:///./node_modules/d3-array/src/mean.js","webpack:///./node_modules/d3-array/src/median.js","webpack:///./node_modules/d3-array/src/merge.js","webpack:///./node_modules/d3-array/src/min.js","webpack:///./node_modules/d3-array/src/permute.js","webpack:///./node_modules/d3-array/src/scan.js","webpack:///./node_modules/d3-array/src/shuffle.js","webpack:///./node_modules/d3-array/src/sum.js","webpack:///./node_modules/d3-array/src/transpose.js","webpack:///./node_modules/d3-array/src/zip.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-axis/src/identity.js","webpack:///./node_modules/d3-axis/src/axis.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-selection/src/create.js","webpack:///./node_modules/d3-selection/src/local.js","webpack:///./node_modules/d3-selection/src/sourceEvent.js","webpack:///./node_modules/d3-selection/src/point.js","webpack:///./node_modules/d3-selection/src/mouse.js","webpack:///./node_modules/d3-selection/src/selectAll.js","webpack:///./node_modules/d3-selection/src/touch.js","webpack:///./node_modules/d3-selection/src/touches.js","webpack:///./node_modules/d3-drag/src/noevent.js","webpack:///./node_modules/d3-drag/src/nodrag.js","webpack:///./node_modules/d3-drag/src/constant.js","webpack:///./node_modules/d3-drag/src/event.js","webpack:///./node_modules/d3-drag/src/drag.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-color/src/math.js","webpack:///./node_modules/d3-color/src/lab.js","webpack:///./node_modules/d3-color/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-interpolate/src/discrete.js","webpack:///./node_modules/d3-interpolate/src/hue.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-interpolate/src/hsl.js","webpack:///./node_modules/d3-interpolate/src/lab.js","webpack:///./node_modules/d3-interpolate/src/hcl.js","webpack:///./node_modules/d3-interpolate/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/piecewise.js","webpack:///./node_modules/d3-interpolate/src/quantize.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-timer/src/interval.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-ease/src/linear.js","webpack:///./node_modules/d3-ease/src/quad.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-ease/src/poly.js","webpack:///./node_modules/d3-ease/src/sin.js","webpack:///./node_modules/d3-ease/src/exp.js","webpack:///./node_modules/d3-ease/src/circle.js","webpack:///./node_modules/d3-ease/src/bounce.js","webpack:///./node_modules/d3-ease/src/back.js","webpack:///./node_modules/d3-ease/src/elastic.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-transition/src/active.js","webpack:///./node_modules/d3-brush/src/constant.js","webpack:///./node_modules/d3-brush/src/event.js","webpack:///./node_modules/d3-brush/src/noevent.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-chord/src/math.js","webpack:///./node_modules/d3-chord/src/chord.js","webpack:///./node_modules/d3-chord/src/array.js","webpack:///./node_modules/d3-chord/src/constant.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-chord/src/ribbon.js","webpack:///./node_modules/d3-collection/src/map.js","webpack:///./node_modules/d3-collection/src/nest.js","webpack:///./node_modules/d3-collection/src/set.js","webpack:///./node_modules/d3-collection/src/keys.js","webpack:///./node_modules/d3-collection/src/values.js","webpack:///./node_modules/d3-collection/src/entries.js","webpack:///./node_modules/d3-contour/src/array.js","webpack:///./node_modules/d3-contour/src/ascending.js","webpack:///./node_modules/d3-contour/src/area.js","webpack:///./node_modules/d3-contour/src/constant.js","webpack:///./node_modules/d3-contour/src/contains.js","webpack:///./node_modules/d3-contour/src/noop.js","webpack:///./node_modules/d3-contour/src/contours.js","webpack:///./node_modules/d3-contour/src/blur.js","webpack:///./node_modules/d3-contour/src/density.js","webpack:///./node_modules/d3-dsv/src/dsv.js","webpack:///./node_modules/d3-dsv/src/csv.js","webpack:///./node_modules/d3-dsv/src/tsv.js","webpack:///./node_modules/d3-dsv/src/autoType.js","webpack:///./node_modules/d3-fetch/src/blob.js","webpack:///./node_modules/d3-fetch/src/buffer.js","webpack:///./node_modules/d3-fetch/src/text.js","webpack:///./node_modules/d3-fetch/src/dsv.js","webpack:///./node_modules/d3-fetch/src/image.js","webpack:///./node_modules/d3-fetch/src/json.js","webpack:///./node_modules/d3-fetch/src/xml.js","webpack:///./node_modules/d3-force/src/center.js","webpack:///./node_modules/d3-force/src/constant.js","webpack:///./node_modules/d3-force/src/jiggle.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-force/src/collide.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-force/src/link.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-force/src/manyBody.js","webpack:///./node_modules/d3-force/src/radial.js","webpack:///./node_modules/d3-force/src/x.js","webpack:///./node_modules/d3-force/src/y.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-geo/src/adder.js","webpack:///./node_modules/d3-geo/src/math.js","webpack:///./node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3-geo/src/stream.js","webpack:///./node_modules/d3-geo/src/area.js","webpack:///./node_modules/d3-geo/src/cartesian.js","webpack:///./node_modules/d3-geo/src/bounds.js","webpack:///./node_modules/d3-geo/src/centroid.js","webpack:///./node_modules/d3-geo/src/constant.js","webpack:///./node_modules/d3-geo/src/compose.js","webpack:///./node_modules/d3-geo/src/rotation.js","webpack:///./node_modules/d3-geo/src/circle.js","webpack:///./node_modules/d3-geo/src/clip/buffer.js","webpack:///./node_modules/d3-geo/src/pointEqual.js","webpack:///./node_modules/d3-geo/src/clip/rejoin.js","webpack:///./node_modules/d3-geo/src/polygonContains.js","webpack:///./node_modules/d3-geo/src/clip/index.js","webpack:///./node_modules/d3-geo/src/clip/antimeridian.js","webpack:///./node_modules/d3-geo/src/clip/circle.js","webpack:///./node_modules/d3-geo/src/clip/line.js","webpack:///./node_modules/d3-geo/src/clip/rectangle.js","webpack:///./node_modules/d3-geo/src/clip/extent.js","webpack:///./node_modules/d3-geo/src/length.js","webpack:///./node_modules/d3-geo/src/distance.js","webpack:///./node_modules/d3-geo/src/contains.js","webpack:///./node_modules/d3-geo/src/graticule.js","webpack:///./node_modules/d3-geo/src/interpolate.js","webpack:///./node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3-geo/src/identity.js","webpack:///./node_modules/d3-geo/src/path/bounds.js","webpack:///./node_modules/d3-geo/src/path/centroid.js","webpack:///./node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3-geo/src/path/index.js","webpack:///./node_modules/d3-geo/src/transform.js","webpack:///./node_modules/d3-geo/src/projection/fit.js","webpack:///./node_modules/d3-geo/src/projection/resample.js","webpack:///./node_modules/d3-geo/src/projection/index.js","webpack:///./node_modules/d3-geo/src/projection/conic.js","webpack:///./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/albers.js","webpack:///./node_modules/d3-geo/src/projection/albersUsa.js","webpack:///./node_modules/d3-geo/src/projection/azimuthal.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/mercator.js","webpack:///./node_modules/d3-geo/src/projection/conicConformal.js","webpack:///./node_modules/d3-geo/src/projection/equirectangular.js","webpack:///./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/equalEarth.js","webpack:///./node_modules/d3-geo/src/projection/gnomonic.js","webpack:///./node_modules/d3-geo/src/projection/identity.js","webpack:///./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack:///./node_modules/d3-geo/src/projection/orthographic.js","webpack:///./node_modules/d3-geo/src/projection/stereographic.js","webpack:///./node_modules/d3-geo/src/projection/transverseMercator.js","webpack:///./node_modules/d3-hierarchy/src/cluster.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack:///./node_modules/d3-hierarchy/src/array.js","webpack:///./node_modules/d3-hierarchy/src/pack/enclose.js","webpack:///./node_modules/d3-hierarchy/src/pack/siblings.js","webpack:///./node_modules/d3-hierarchy/src/accessors.js","webpack:///./node_modules/d3-hierarchy/src/constant.js","webpack:///./node_modules/d3-hierarchy/src/pack/index.js","webpack:///./node_modules/d3-hierarchy/src/treemap/round.js","webpack:///./node_modules/d3-hierarchy/src/treemap/dice.js","webpack:///./node_modules/d3-hierarchy/src/partition.js","webpack:///./node_modules/d3-hierarchy/src/stratify.js","webpack:///./node_modules/d3-hierarchy/src/tree.js","webpack:///./node_modules/d3-hierarchy/src/treemap/slice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack:///./node_modules/d3-hierarchy/src/treemap/index.js","webpack:///./node_modules/d3-hierarchy/src/treemap/binary.js","webpack:///./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack:///./node_modules/d3-polygon/src/area.js","webpack:///./node_modules/d3-polygon/src/centroid.js","webpack:///./node_modules/d3-polygon/src/cross.js","webpack:///./node_modules/d3-polygon/src/hull.js","webpack:///./node_modules/d3-polygon/src/contains.js","webpack:///./node_modules/d3-polygon/src/length.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/array.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/d3-scale/src/band.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-scale/src/identity.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-scale/src/log.js","webpack:///./node_modules/d3-scale/src/symlog.js","webpack:///./node_modules/d3-scale/src/pow.js","webpack:///./node_modules/d3-scale/src/quantile.js","webpack:///./node_modules/d3-scale/src/quantize.js","webpack:///./node_modules/d3-scale/src/threshold.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-time-format/src/isoFormat.js","webpack:///./node_modules/d3-time-format/src/isoParse.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale/src/utcTime.js","webpack:///./node_modules/d3-scale/src/sequential.js","webpack:///./node_modules/d3-scale/src/sequentialQuantile.js","webpack:///./node_modules/d3-scale/src/diverging.js","webpack:///./node_modules/d3-scale-chromatic/src/colors.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack:///./node_modules/d3-scale-chromatic/src/ramp.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/arc.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/area.js","webpack:///./node_modules/d3-shape/src/descending.js","webpack:///./node_modules/d3-shape/src/identity.js","webpack:///./node_modules/d3-shape/src/pie.js","webpack:///./node_modules/d3-shape/src/curve/radial.js","webpack:///./node_modules/d3-shape/src/lineRadial.js","webpack:///./node_modules/d3-shape/src/areaRadial.js","webpack:///./node_modules/d3-shape/src/pointRadial.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/link/index.js","webpack:///./node_modules/d3-shape/src/symbol/circle.js","webpack:///./node_modules/d3-shape/src/symbol/cross.js","webpack:///./node_modules/d3-shape/src/symbol/diamond.js","webpack:///./node_modules/d3-shape/src/symbol/star.js","webpack:///./node_modules/d3-shape/src/symbol/square.js","webpack:///./node_modules/d3-shape/src/symbol/triangle.js","webpack:///./node_modules/d3-shape/src/symbol/wye.js","webpack:///./node_modules/d3-shape/src/symbol.js","webpack:///./node_modules/d3-shape/src/noop.js","webpack:///./node_modules/d3-shape/src/curve/basis.js","webpack:///./node_modules/d3-shape/src/curve/basisClosed.js","webpack:///./node_modules/d3-shape/src/curve/basisOpen.js","webpack:///./node_modules/d3-shape/src/curve/bundle.js","webpack:///./node_modules/d3-shape/src/curve/cardinal.js","webpack:///./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack:///./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack:///./node_modules/d3-shape/src/curve/catmullRom.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack:///./node_modules/d3-shape/src/curve/linearClosed.js","webpack:///./node_modules/d3-shape/src/curve/monotone.js","webpack:///./node_modules/d3-shape/src/curve/natural.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/d3-shape/src/offset/none.js","webpack:///./node_modules/d3-shape/src/order/none.js","webpack:///./node_modules/d3-shape/src/stack.js","webpack:///./node_modules/d3-shape/src/offset/expand.js","webpack:///./node_modules/d3-shape/src/offset/diverging.js","webpack:///./node_modules/d3-shape/src/offset/silhouette.js","webpack:///./node_modules/d3-shape/src/offset/wiggle.js","webpack:///./node_modules/d3-shape/src/order/appearance.js","webpack:///./node_modules/d3-shape/src/order/ascending.js","webpack:///./node_modules/d3-shape/src/order/descending.js","webpack:///./node_modules/d3-shape/src/order/insideOut.js","webpack:///./node_modules/d3-shape/src/order/reverse.js","webpack:///./node_modules/d3-voronoi/src/constant.js","webpack:///./node_modules/d3-voronoi/src/point.js","webpack:///./node_modules/d3-voronoi/src/RedBlackTree.js","webpack:///./node_modules/d3-voronoi/src/Edge.js","webpack:///./node_modules/d3-voronoi/src/Cell.js","webpack:///./node_modules/d3-voronoi/src/Circle.js","webpack:///./node_modules/d3-voronoi/src/Beach.js","webpack:///./node_modules/d3-voronoi/src/Diagram.js","webpack:///./node_modules/d3-voronoi/src/voronoi.js","webpack:///./node_modules/d3-zoom/src/constant.js","webpack:///./node_modules/d3-zoom/src/event.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./node_modules/d3-zoom/src/noevent.js","webpack:///./node_modules/d3-zoom/src/zoom.js","webpack:///./node_modules/d3/index.js","webpack:///./lib/utils/pretty-number.js","webpack:///./lib/utils/escape-html.js","webpack:///./lib/utils/extend.js","webpack:///./lib/utils/svg-text-wrap.js","webpack:///(webpack)/buildin/global.js","webpack:///./lib/dataset/modifiers/append.js","webpack:///./lib/dataset/utils/create-null-list.js","webpack:///./node_modules/c3/c3.js","webpack:///./lib/utils/assert-date-string.js","webpack:///./lib/dataset/index.js","webpack:///./lib/dataset/utils/analyses.js","webpack:///./lib/utils/strip-html-tags.js","webpack:///./lib/utils/extend-deep.js","webpack:///./lib/utils/render-download-btn.js","webpack:///./lib/utils/export-svg.js","webpack:///./lib/utils/export-data.js","webpack:///./node_modules/rangeable/dist/rangeable.min.js","webpack:///./lib/browser.js","webpack:///./lib/index.js","webpack:///./lib/dataset/modifiers/delete.js","webpack:///./lib/dataset/modifiers/filter.js","webpack:///./lib/dataset/modifiers/insert.js","webpack:///./lib/dataset/modifiers/select.js","webpack:///./lib/dataset/modifiers/sort.js","webpack:///./lib/dataset/modifiers/update.js","webpack:///./lib/dataset/utils/parsers.js","webpack:///./lib/dataset/utils/flatten.js","webpack:///./lib/dataset/utils/object.js","webpack:///./lib/data.js","webpack:///./lib/libraries/index.js","webpack:///./lib/libraries/c3/extensions/default-date-format.js","webpack:///./lib/libraries/c3/extensions/paginating-legend.js","webpack:///./lib/libraries/c3/extensions/tooltip-contents.js","webpack:///./lib/dataset/utils/calculate-range.js","webpack:///./lib/dataset/utils/calculate-percents.js","webpack:///./lib/libraries/default/message.js","webpack:///./lib/utils/download-results.js","webpack:///./node_modules/dom-to-image/src/dom-to-image.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./lib/libraries/default/metric.js","webpack:///./lib/libraries/default/table.js","webpack:///./lib/libraries/default/spinner.js","webpack:///./lib/libraries/default/funnel.js","webpack:///./lib/libraries/default/funnel-3d.js","webpack:///./lib/libraries/default/horizontal-funnel.js","webpack:///./lib/libraries/default/horizontal-funnel-3d.js","webpack:///./lib/libraries/default/metric-combo.js","webpack:///./lib/libraries/default/heatmap.js","webpack:///./lib/libraries/default/choropleth.js","webpack:///./lib/utils/render-execution-metadata.js","webpack:///./lib/palettes/index.js","webpack:///./lib/palettes/autocollector.js","webpack:///./lib/palettes/modern.js","webpack:///./lib/palettes/dracula.js"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","each","cb","Array","length","event","placeholder","document","createElement","body","appendChild","select","execCommand","removeChild","notification","style","padding","backgroundColor","fontSize","position","top","pageY","left","pageX","zIndex","opacity","transition","innerText","addEventListener","e","tooltip","stickTooltip","setTimeout","ascending","b","NaN","bisector","compare","f","x","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","bisect","pairs","array","pair","cross","values0","values1","reduce","i0","i1","value0","n0","n1","values","descending","number","variance","valueof","delta","mean","sum","isNaN","deviation","v","Math","sqrt","src_extent","min","max","array_array","slice","map","constant","identity","src_range","start","stop","step","arguments","ceil","range","e10","e5","e2","ticks","count","reverse","tickIncrement","isFinite","floor","power","log","LN10","error","pow","tickStep","step0","abs","step1","sturges","LN2","src_histogram","domain","threshold","histogram","data","xz","x0","x1","tz","isArray","shift","pop","bin","bins","push","_","thresholds","quantile","freedmanDiaconis","sort","scott","src_max","src_mean","median","numbers","src_merge","arrays","merged","j","src_min","permute","indexes","permutes","scan","xi","xj","shuffle","random","src_sum","src_transpose","matrix","transpose_length","transpose","row","zip","array_slice","src_identity","axis_top","axis_right","axis_bottom","axis_left","epsilon","translateX","translateY","y","entering","this","__axis","axis_axis","orient","scale","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","axis","context","apply","format","spacing","range0","range1","bandwidth","offset","round","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","text","merge","insert","getAttribute","parentNode","remove","filter","tickSize","axisTop","axisRight","axisBottom","axisLeft","noop","dispatch","Error","Dispatch","type","set","callback","concat","constructor","on","typename","types","T","trim","split","indexOf","that","args","src_dispatch","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creator","fullname","ownerDocument","createElementNS","uri","namespaceURI","documentElement","none","src_selector","selector","querySelector","selectorAll_empty","selectorAll","querySelectorAll","matcher","matches","sparse","update","EnterNode","parent","datum","_next","_parent","__data__","child","insertBefore","next","keyPrefix","bindIndex","group","node","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","sort_ascending","src_window","defaultView","styleValue","getPropertyValue","getComputedStyle","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","setAttribute","join","splice","contains","textRemove","textContent","htmlRemove","innerHTML","raise","nextSibling","lower","previousSibling","firstChild","constantNull","remove_remove","selection_cloneShallow","cloneNode","selection_cloneDeep","filterEvents","on_event","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","removeEventListener","capture","onAdd","wrap","customEvent","sourceEvent","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","selection_root","Selection","groups","parents","_groups","_parents","selection_selection","subgroups","subnode","subgroup","match","size","enterGroup","updateGroup","previous","_enter","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareNode","sortgroups","sortgroup","nodes","empty","getAttributeNS","removeAttributeNS","removeAttribute","setAttributeNS","priority","removeProperty","setProperty","classed","html","before","clone","deep","typenames","on_parseTypenames","src_selection","src_select","src_create","nextId","Local","toString","id","source","current","src_point","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","clientTop","mouse","changedTouches","src_selectAll","src_touch","touches","identifier","touch","src_touches","points","nopropagation","stopImmediatePropagation","noevent","preventDefault","nodrag","view","__noselect","MozUserSelect","yesdrag","noclick","d3_drag_src_constant","DragEvent","target","subject","active","dx","dy","defaultFilter","ctrlKey","button","defaultContainer","defaultSubject","defaultTouchable","navigator","maxTouchPoints","src_drag","mousedownx","mousedowny","mousemoving","touchending","container","touchable","gestures","listeners","clickDistance2","drag","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","clearTimeout","sublisteners","p0","clickDistance","extend","definition","Color","reI","reN","reP","reHex3","reHex6","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color_color","toLowerCase","exec","Rgb","parseInt","rgbn","rgba","hsla","g","rgbConvert","color_rgb","rgb_formatHex","hex","rgb_formatRgb","h","Hsl","hslConvert","hsl","hsl2rgb","m2","channels","assign","displayable","formatHsl","brighter","darker","deg2rad","PI","rad2deg","Xn","Yn","Zn","lab_t0","lab_t1","lab_t2","t3","labConvert","Lab","Hcl","hcl2lab","z","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","lch","hcl","cos","sin","C","cubehelix_D","cubehelix_E","ED","EB","BC_DA","cubehelix_cubehelix","Cubehelix","bl","cubehelixConvert","basis","t1","v0","v1","v2","v3","t2","cosh","sinh","src_basis","basisClosed","d3_interpolate_src_constant","linear","color_hue","gamma","nogamma","exponential","src_rgb","rgbGamma","color","end","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","src_array","nb","na","src_value","src_date","Date","setTime","src_number","src_object","reA","reB","cssNode","cssRoot","cssView","svgNode","src_string","am","bm","bs","bi","lastIndex","q","one","string_zero","valueOf","discrete","src_hue","src_round","degrees","decompose_identity","rotate","skewX","scaleX","scaleY","decompose","atan","interpolateTransform","parse","pxComma","pxParen","degParen","xa","ya","xb","yb","translate","interpolateTransformCss","interpolateTransformSvg","baseVal","consolidate","rho","SQRT2","zoom_cosh","exp","src_zoom","p1","S","ux0","uy0","w0","ux1","uy1","w1","d2","d1","b0","b1","r0","r1","coshr0","u","zoom_sinh","duration","hsl_hsl","hue","src_hsl","hslLong","lab_lab","hcl_hcl","src_hcl","hclLong","src_cubehelix_cubehelix","cubehelixGamma","cubehelix","src_cubehelix","cubehelixLong","piecewise_piecewise","interpolate","I","taskHead","taskTail","quantize","interpolator","samples","timer_frame","timeout","timer_interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","wake","t0","Infinity","sleep","nap","poke","clearInterval","setInterval","TypeError","src_timeout","elapsed","src_interval","total","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","transition_schedule","timing","schedules","__transition","self","tween","state","ease","schedule_create","schedule_init","schedule","schedule_get","schedule_set","interrupt","tweenValue","_id","transition_interpolate","selection_Selection","style_styleRemove","transition_id","Transition","_name","src_transition_transition","newId","selection_prototype","linear_linear","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","children","inherit","id0","id1","on0","on1","sit","every","on_start","onFunction","attrTween","string00","string10","interpolate0","string0","string1","value1","_value","attrInterpolateNS","attrInterpolate","styleTween","styleNull","style_styleFunction","listener0","undefined","styleMaybeRemove","style_styleConstant","styleInterpolate","text_textFunction","text_textConstant","tween0","tween1","easeConstant","Promise","resolve","reject","cancel","polyIn","custom","exponent","polyOut","polyInOut","pi","halfPi","sinIn","sinOut","sinInOut","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","bounce_b1","b2","b3","b4","b5","b6","b7","b8","b9","bounce_b0","bounceIn","bounceOut","bounceInOut","backIn","overshoot","backOut","backInOut","tau","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","defaultTiming","transition_inherit","active_root","src_active","d3_brush_src_constant","src_event","noevent_nopropagation","src_noevent","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","brush_X","handles","brush_type","input","output","xy","brush_Y","XY","cursors","overlay","w","nw","ne","se","sw","flipX","flipY","signsX","signsY","brush_defaultFilter","defaultExtent","hasAttribute","viewBox","width","height","brush_defaultTouchable","brush_local","__brush","brushSelection","dim","brushX","brush_brush","brushY","src_brush","extent","keys","brush","handleSize","initialize","handle","redraw","started","emitter","clean","Emitter","e0","e1","s0","s1","moving","lockX","lockY","metaKey","altKey","signX","signY","W","N","E","shifting","shiftKey","pointer","point0","emit","moved","ended","keyCode","move","point1","brush_empty","selection0","selection1","clear","starting","keyModifiers","math_pi","math_halfPi","math_tau","math_max","src_chord","padAngle","sortGroups","sortSubgroups","sortChords","chord","groupSums","groupIndex","subgroupIndex","chords","forEach","di","dj","a0","a1","subindex","startAngle","endAngle","src_array_slice","d3_chord_src_constant","path_pi","path_tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","path_path","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","ccw","cw","da","src_path","defaultSource","defaultTarget","defaultRadius","radius","defaultStartAngle","defaultEndAngle","src_ribbon","ribbon","buffer","argv","sr","sa0","sa1","sx0","sy0","tr","ta0","ta1","Map","map_map","has","entries","src_map","src_nest","sortValues","rollup","nest","sortKeys","depth","createResult","setResult","valuesByKey","result","createObject","setObject","createMap","setMap","sortKey","Set","proto","set_set","src_set","src_keys","src_values","src_entries","d3_contour_src_array_slice","src_ascending","src_area","ring","area","d3_contour_src_constant","hole","ringContains","yi","pj","yj","segmentContains","collinear","src_noop","cases","src_contours","smooth","smoothLinear","contours","contour","polygons","holes","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","unshift","isorings","polygon","coordinates","xt","yt","_0","_1","blurX","blurY","defaultX","defaultY","defaultWeight","src_density","weight","density","Float32Array","wi","geometry","transformPolygon","transformRing","transformPoint","resize","cellSize","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","JSON","stringify","inferColumns","rows","columnSet","column","pad","formatDate","date","year","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","dsv","delimiter","reFormat","DELIMITER","charCodeAt","parseRows","eof","eol","token","replace","preformatBody","formatValue","formatRow","test","convert","customConverter","formatBody","formatRows","csv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","autoType","responseBlob","response","ok","status","statusText","blob","init","fetch","then","responseArrayBuffer","arrayBuffer","src_buffer","responseText","src_text","dsvParse","dsv_dsv","dsv_csv","dsv_tsv","src_image","image","Image","onerror","onload","src","responseJson","json","parser","DOMParser","parseFromString","xml_html","src_center","force","sx","sy","d3_force_src_constant","jiggle","add_add","tree","xm","ym","xp","yp","bottom","_root","leaf","_x","_y","src_quad","x_defaultX","y_defaultY","quadtree","Quadtree","addAll","leaf_copy","treeProto","collide_x","vx","collide_y","vy","cover","yz","visit","find","x3","y3","quads","retainer","removeAll","visitAfter","collide","radii","strength","iterations","ri","ri2","prepare","quad","rj","link_index","link_find","nodeById","nodeId","src_link","links","strengths","distances","bias","link","distance","alpha","initializeStrength","initializeDistance","simulation_x","simulation_y","initialRadius","initialAngle","src_simulation","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","fx","fy","initializeNodes","angle","initializeForce","closest","manyBody","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","theta","radial","radiuses","d3_force_src_x","d3_force_src_y","formatDecimal","toExponential","coefficient","src_exponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","comma","precision","prefixExponent","defaultLocale_locale","defaultLocale_format","defaultLocale_formatPrefix","formatTrim","out","formatRounded","formatTypes","%","toFixed","toPrecision","X","toUpperCase","d3_format_src_identity","prefixes","src_locale","locale","grouping","thousands","substring","currency","decimal","numerals","formatNumerals","percent","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatPrefix","defaultLocale","precisionFixed","precisionPrefix","precisionRound","adder","Adder","reset","adder_add","temp","bv","av","math_epsilon","math_epsilon2","src_math_pi","src_math_halfPi","quarterPi","src_math_tau","math_degrees","radians","math_cos","math_sin","math_sign","haversin","noop_noop","streamGeometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","area_lambda00","phi00","area_lambda0","area_cosPhi0","area_sinPhi0","src_stream","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","d3_geo_src_area","cartesian_spherical","cartesian","cartesian_cartesian","spherical","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","bounds_lambda0","bounds_phi0","bounds_lambda1","bounds_phi1","bounds_lambda2","bounds_lambda00","bounds_phi00","bounds_p0","ranges","bounds_range","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","bounds_linePoint","normal","inflection","phii","lambdai","antimeridian","bounds_angle","lambda0","lambda1","rangeCompare","rangeContains","W0","W1","centroid_X0","centroid_Y0","Z0","centroid_X1","centroid_Y1","Z1","X2","Y2","Z2","centroid_lambda00","centroid_phi00","centroid_x0","centroid_y0","z0","bounds","feature","deltaMax","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","src_centroid","d3_geo_src_constant","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","src_rotation","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","src_circle","center","circle","clip_buffer","lines","rejoin","pointEqual","Intersection","other","entry","segments","compareIntersection","startInside","clip","segment","rejoin_link","isSubject","polygonContains_sum","longitude","polygonContains","winding","phi0","sinPhi0","cosPhi0","sinPhi1","cosPhi1","phi1","absDelta","intersection","phiArc","src_clip","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","clip_compareIntersection","pointLine","ringSegments","validSegment","clip_antimeridian","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","from","to","clip_circle","cr","smallRadius","notHemisphere","visible","intersect","two","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","A","uu","polar","q1","code","c0","v00","point2","clip_line","ax","ay","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","linePoint","polygonInside","cleanInside","length_lambda0","length_sinPhi0","length_cosPhi0","clip_extent","cache","cacheStream","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","src_length","distance_coordinates","distance_object","src_distance","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ab","ringRadians","pointRadians","src_contains","graticuleX","graticuleY","graticule_graticule","X1","X0","Y1","Y0","Y","DX","DY","graticule","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","area_x00","area_y00","area_x0","area_y0","src_interpolate","cy0","cy1","sy1","kx0","ky0","kx1","ky1","B","d3_geo_src_identity","area_areaSum","area_areaRingSum","area_areaStream","area_areaRingStart","area_areaRingEnd","area_areaPointFirst","area_areaPoint","path_area","bounds_x0","bounds_y0","bounds_x1","bounds_y1","centroid_x00","centroid_y00","path_centroid_x0","path_centroid_y0","path_bounds","path_centroid_X0","path_centroid_Y0","centroid_Z0","path_centroid_X1","path_centroid_Y1","centroid_Z1","centroid_X2","centroid_Y2","centroid_Z2","centroid_centroidStream","centroid_centroidPoint","centroid_centroidLineStart","centroid_centroidLineEnd","centroid_centroidRingStart","centroid_centroidRingEnd","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","path_centroid","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","measure_x00","measure_y00","measure_x0","measure_y0","measure_lengthSum","measure_lengthStream","measure_lengthPointFirst","measure_lengthPoint","measure","PathString","_string","string_circle","_circle","d3_geo_src_path","projection","projectionStream","contextStream","src_transform","methods","transformer","TransformStream","fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","resample","project","delta2","resampleLineTo","phi2","lambda2","dx2","dy2","dz","lambda00","x00","y00","a00","b00","c00","resampleStream","ringPoint","resample_resample","resampleNone","transformRadians","scaleTranslateRotate","cosAlpha","sinAlpha","ai","ci","fi","projection_projection","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","preclip","postclip","recenter","transformRotate","clipAngle","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0y","conicEqualArea","albers","projection_albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEqualArea","azimuthalEquidistantRaw","azimuthalEquidistant","mercatorRaw","mercator","mercatorProjection","reclip","tany","conicConformalRaw","conicConformal","equirectangularRaw","equirectangular","conicEquidistantRaw","gy","nx","conicEquidistant","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","equalEarth","gnomonicRaw","gnomonic","identity_scaleTranslate","kx","ky","tx","ty","projection_identity","reflectX","reflectY","naturalEarth1Raw","phi4","naturalEarth1","orthographicRaw","orthographic","stereographicRaw","stereographic","transverseMercatorRaw","transverseMercator","defaultSeparation","meanXReduce","maxYReduce","cluster","separation","nodeSize","previousNode","eachAfter","meanX","maxY","leafLeft","leafRight","count_count","hierarchy","childs","Node","valued","defaultChildren","eachBefore","computeHeight","copyData","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","d3_hierarchy_src_array_slice","enclose","circles","array_shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","r2","r21","r3","a2","a3","c3","d3","place","intersects","score","siblings_Node","packEnclose","aa","sj","sk","pack","siblings","required","constantZero","d3_hierarchy_src_constant","pack_defaultRadius","src_pack","radiusLeaf","packChildren","translateChild","treemap_round","dice","src_partition","partition","positionNode","stratify_keyPrefix","preroot","ambiguous","defaultId","defaultParentId","parentId","src_stratify","stratify","nodeKey","nodeByKey","tree_defaultSeparation","nextLeft","nextRight","moveSubtree","wm","wp","change","nextAncestor","vim","TreeNode","src_tree","treeRoot","firstWalk","secondWalk","sizeNode","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","treemap_slice","squarify_phi","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","squarify","src_treemap","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","paddingOuter","binary","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","sliceDice","treemap_resquarify","resquarify","_squarify","d3_polygon_src_area","d3_polygon_src_centroid","src_cross","lexicographicOrder","computeUpperHullIndexes","hull","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","d3_polygon_src_contains","inside","d3_polygon_src_length","perimeter","src_defaultSource","uniform","sourceRandomUniform","randomUniform","src_normal","sourceRandomNormal","randomNormal","mu","sigma","logNormal","sourceRandomLogNormal","randomLogNormal","irwinHall","sourceRandomIrwinHall","randomIrwinHall","bates","sourceRandomBates","randomBates","src_exponential","sourceRandomExponential","randomExponential","initRange","initInterpolator","d3_scale_src_array_array","array_map","d3_scale_src_array_slice","implicit","ordinal","unknown","band","ordinalRange","rescale","rangeRound","band_point","pointish","d3_scale_src_constant","d3_scale_src_number","unit","continuous_identity","normalize","clamper","bimap","d0","polymap","clamp","continuous_transformer","untransform","piecewise","continuous","src_tickFormat","linearish","nice","src_linear_linear","identity_identity","interval","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","base","log10","log2","logp","powp","log_log","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","pow_pow","pow_sqrt","quantile_quantile","invertExtent","quantiles","quantize_quantize","threshold_threshold","interval_t0","interval_t1","newInterval","floori","offseti","field","millisecond_millisecond","src_millisecond","durationMinute","durationWeek","second_second","getMilliseconds","src_second","minute_minute","getSeconds","getMinutes","src_minute","hour_hour","getHours","src_hour","day_day","setHours","setDate","getDate","getTimezoneOffset","src_day","days","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","month_month","setMonth","getMonth","getFullYear","src_month","months","year_year","setFullYear","src_year","years","utcMinute","setUTCSeconds","src_utcMinute","utcMinutes","utcHour","setUTCMinutes","src_utcHour","utcHours","utcDay","setUTCHours","setUTCDate","src_utcDay","utcDays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcMonth","setUTCMonth","src_utcMonth","utcMonths","utcYear","setUTCFullYear","src_utcYear","utcYears","localDate","H","L","utcDate","UTC","newYear","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","Q","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","U","formatWeekNumberSunday","V","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","locale_formatYear","formatFullYear","Z","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseYear","parseFullYear","parseZone","parseLiteralPercent","pads","charAt","newParse","newDate","week","day","utcFormat","utcParse","src_defaultLocale_locale","timeFormat","timeParse","-","0","numberRe","percentRe","requoteRe","locale_pad","requote","dow","defaultLocale_defaultLocale","isoFormat","toISOString","isoParse","time_durationSecond","time_durationMinute","time_durationHour","time_durationDay","time_durationWeek","durationMonth","durationYear","time_date","time_number","calendar","month","hour","minute","second","millisecond","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickIntervals","tickInterval","src_time","utcTime","sequential_transformer","k10","sequential_copy","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","diverging_transformer","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","src_colors","category10","Accent","Dark2","Paired","Pastel1","Pastel2","Set1","Set2","Set3","Tableau10","ramp","scheme","BrBG_scheme","BrBG","PRGn_scheme","PRGn","PiYG_scheme","PiYG","PuOr_scheme","PuOr","RdBu_scheme","RdBu","RdGy_scheme","RdGy","RdYlBu_scheme","RdYlBu","RdYlGn_scheme","RdYlGn","Spectral_scheme","Spectral","BuGn_scheme","BuGn","BuPu_scheme","BuPu","GnBu_scheme","GnBu","OrRd_scheme","OrRd","PuBuGn_scheme","PuBuGn","PuBu_scheme","PuBu","PuRd_scheme","PuRd","RdPu_scheme","RdPu","YlGnBu_scheme","YlGnBu","YlGn_scheme","YlGn","YlOrBr_scheme","YlOrBr","YlOrRd_scheme","YlOrRd","Blues_scheme","Blues","Greens_scheme","Greens","Greys_scheme","Greys","Purples_scheme","Purples","Reds_scheme","Reds","Oranges_scheme","Oranges","cividis","sequential_multi_cubehelix","warm","cool","rainbow_c","rainbow","ts","sinebow_c","pi_1_3","pi_2_3","sinebow","turbo","viridis_ramp","viridis","magma","inferno","plasma","d3_shape_src_constant","math_abs","math_atan2","src_math_cos","src_math_max","math_min","src_math_sin","math_sqrt","src_math_epsilon","d3_shape_src_math_pi","d3_shape_src_math_halfPi","d3_shape_src_math_tau","math_asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","D","cx0","cx1","dx0","dy0","dx1","dy1","src_arc","cornerRadius","padRadius","a01","a11","a10","da0","da1","ap","rp","rc0","rc1","oc","x32","y32","arc_intersect","bx","by","kc","lc","Linear","areaStart","areaEnd","curve_linear","point_x","point_y","src_line","defined","curve","defined0","d3_shape_src_area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","src_descending","d3_shape_src_identity","src_pie","pie","arcs","pa","curveRadialLinear","curveRadial","Radial","_curve","lineRadial","src_lineRadial","areaRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","pointRadial","d3_shape_src_array_slice","linkSource","linkTarget","link_link","curveHorizontal","curveVertical","link_curveRadial","p2","p3","linkHorizontal","linkVertical","linkRadial","symbol_circle","draw","symbol_cross","tan30","tan30_2","diamond","kr","star_kx","star_ky","star","square","sqrt3","triangle","wye_s","wye_k","wye_a","wye","symbols","src_symbol","d3_shape_src_noop","basis_point","Basis","curve_basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","curve_basisClosed","BasisOpen","basisOpen","Bundle","_basis","_beta","curve_bundle","bundle","cardinal_point","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","cardinalClosed","CardinalOpen","cardinalOpen","catmullRom_point","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","curve_catmullRom","catmullRom","CatmullRomClosed","catmullRomClosed","CatmullRomOpen","catmullRomOpen","LinearClosed","linearClosed","monotone_sign","slope3","h0","h1","slope2","monotone_point","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","_t0","px","py","natural","Step","_t","curve_step","stepBefore","stepAfter","offset_none","series","order_none","stackValue","src_stack","stack","oz","kz","sz","sij","ki","si","expand","offset_diverging","yn","silhouette","wiggle","s2","sij0","s3","appearance","peaks","peak","vi","vj","order_ascending","ascending_sum","order_descending","insideOut","tops","bottoms","order_reverse","d3_voronoi_src_constant","src_point_x","src_point_y","RedBlackTree","RedBlackNode","R","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","src_RedBlackTree","createEdge","edge","Diagram_edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","fm","fb","lx","ly","rx","ry","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","Diagram_epsilon2","ha","hc","Diagram_circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","Diagram_epsilon","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v01","v11","v10","clipCells","edges","triangles","_found","src_voronoi","voronoi","d3_zoom_src_constant","ZoomEvent","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","transform_identity","transform_transform","__zoom","src_noevent_nopropagation","d3_zoom_src_noevent","zoom_defaultFilter","zoom_defaultExtent","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","zoom_defaultTouchable","defaultConstrain","translateExtent","d3_zoom_src_zoom","touchstarting","constrain","wheelDelta","scaleExtent","touchDelay","wheelDelay","zoom","wheeled","dblclicked","__zooming","Gesture","taps","wheel","k1","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","translateBy","translateTo","__webpack_exports__","prettyNumber","sciNo","Number","suffixes","String","recurse","iteration","rhs","numNumerals","escapeHtml","escape","str","matchHtmlRegExp","prop","textWrap","words","word","lineNumber","tspan","getComputedTextLength","appendColumn","appendRow","_createNullList","_each","label","_createNullList2","default","newRow","col","selectColumn","len","_typeof","obj","iterator","ChartInternal","api","$$","config","getDefaultConfig","axes","Chart","internal","loadConfig","beforeInit","afterInit","bindThis","fn","argThis","AxisInternal","component","scaleLinear","innerTickSize","outerTickSize","withOuterTick","tickOffset","tickCulling","tickCentered","tickTextCharSize","tickTextRotate","tickLength","generateAxis","axisX","axisY","generateTicks","copyScale","newScale","isCategory","textFormatted","formatted","updateRange","rangeExtent","updateTickTextCharSize","box","isVertical","tspanData","splitted","tickMultiline","splitTickText","tickMultilineMax","ellipsify","subtext","spaceIndex","textWidth","tickText","maxWidth","tickWidth","substr","ellipsified","remaining","available","padEnd","updateTickLength","lineY2","tickPosition","textY","textTransform","textTextAnchor","tspanDx","tspanDy","tickTransform","tickX","tickY","scale0","__chart__","scale1","ticksValues","tickUpdate","lineUpdate","textUpdate","tspans","tspanEnter","tspanUpdate","pathUpdate","rangeBand","isCentered","getTotalLength","culling","CLASS","chart","chartLine","chartLines","chartBar","chartBars","chartText","chartTexts","chartArc","chartArcs","chartArcsTitle","chartArcsBackground","chartArcsGaugeUnit","chartArcsGaugeMax","chartArcsGaugeMin","selectedCircle","selectedCircles","eventRect","eventRects","eventRectsSingle","eventRectsMultiple","zoomRect","dragZoom","focused","defocused","region","regions","title","tooltipContainer","tooltipName","shape","shapes","bar","bars","arcLabelLine","areas","texts","gaugeValue","grid","gridLines","xgrid","xgrids","xgridLine","xgridLines","xgridFocus","ygrid","ygrids","ygridLine","ygridLines","colorScale","stanfordElements","stanfordLine","stanfordLines","stanfordRegion","stanfordRegions","stanfordText","stanfordTexts","axisXLabel","axisYLabel","axisY2","axisY2Label","legendBackground","legendItem","legendItemEvent","legendItemTile","legendItemHidden","legendItemFocused","dragarea","EXPANDED","SELECTED","INCLUDED","asHalfPixel","ceil10","diffDomain","getOption","options","defaultValue","isDefined","getPathBox","items","pathSegList","getItem","minX","minY","isEmpty","isString","isFunction","isUndefined","isValue","notEmpty","sanitise","Axis","owner","instance","Constructor","_classCallCheck","main","axis_x_inner","clipPathForXAxis","getTranslate","axis_x_show","axis_rotated","textAnchorForXAxisLabel","axis_y_inner","clipPathForYAxis","axis_y_show","textAnchorForYAxisLabel","axis_y2_show","textAnchorForY2AxisLabel","getXAxis","withoutTransition","withoutRotateTickText","axisParams","isCategorized","axis_x_tick_multiline","axis_x_tick_multilineMax","axis_x_tick_width","axis_x_tick_rotate","isTimeSeries","parseDate","axis_x_tick_centered","axis_x_tick_culling","updateXAxisTickValues","targets","axis_x_tick_fit","axis_x_tick_count","generateTickValues","mapTargetsToUniqueXs","xAxis","subXAxis","getYAxis","axis_y_tick_rotate","isTimeSeriesY","axis_y_tick_time_type","axis_y_tick_time_interval","getId","data_axes","getXAxisTickFormat","defaultAxisTimeFormat","categoryName","axis_x_tick_format","axisTimeFormat","getTickValues","getXAxisTickValues","axis_x_tick_values","getYAxisTickValues","axis_y_tick_values","yAxis","getY2AxisTickValues","axis_y2_tick_values","y2Axis","getLabelOptionByAxisId","axisId","option","axis_y_label","axis_y2_label","axis_x_label","getLabelText","setLabelText","getLabelPosition","defaultPosition","isInner","isOuter","isLeft","isCenter","isRight","isTop","isMiddle","isBottom","getXAxisLabelPosition","getYAxisLabelPosition","getY2AxisLabelPosition","getLabelPositionById","textForXAxisLabel","textForYAxisLabel","textForY2AxisLabel","xForAxisLabel","forHorizontal","dxForAxisLabel","textAnchorForAxisLabel","xForXAxisLabel","xForYAxisLabel","xForY2AxisLabel","dxForXAxisLabel","dxForYAxisLabel","dxForY2AxisLabel","dyForXAxisLabel","getMaxTickWidth","axis_x_height","dyForYAxisLabel","dyForY2AxisLabel","axis_y2_inner","withoutRecompute","targetsToShow","dummy","currentMaxTickWidths","filterTargetsToShow","getYDomain","yOrient","axis_y_tick_format","yAxisTickValues","y2Orient","axis_y2_tick_format","y2AxisTickValues","getXDomain","xOrient","xAxisTickFormat","xAxisTickValues","updateLabels","withTransition","getPadding","domainLength","convertPixelsToAxisPadding","pixels","tickCount","forTimeSeries","targetCount","tickValue","generateTransitions","axisSubX","subx","isHidden","version","generate","powerOfTen","initParams","data_url","convertUrlToData","data_mimeType","data_headers","data_keys","initWithData","data_json","convertJsonToData","data_rows","convertRowsToData","data_columns","convertColumnsToData","clipId","clipIdForXAxis","clipIdForYAxis","clipIdForGrid","clipIdForSubchart","clipPath","getClipPath","clipPathForGrid","clipPathForSubchart","dragStart","dragging","flowing","cancelClick","mouseover","transiting","generateColor","levelColor","generateLevelColor","dataTimeParse","data_xLocaltime","data_xFormat","axis_x_localtime","hiddenTargetIds","hiddenLegendIds","focusedTargetIds","defocusedTargetIds","subXOrient","isLegendRight","legend_position","isLegendInset","isLegendTop","legend_inset_anchor","isLegendLeft","legendStep","legendItemWidth","legendItemHeight","rotated_padding_left","rotated_padding_right","rotated_padding_top","withoutFadeIn","intervalForObserveInserted","initChartElements","initBar","initLine","initArc","initGauge","initText","defs","binding","bindto","selectChart","observeInserted","xs","convertDataToTargets","data_filter","data_hide","addHiddenTargetIds","mapToIds","legend_hide","addHiddenLegendIds","isStanfordGraphType","initStanfordData","updateSizes","updateScales","subX","subY","subY2","orgXDomain","onmouseover","onmouseout","svg_classname","clipChart","appendClip","clipXAxis","clipYAxis","clipGrid","clipSubchart","updateSvgSize","initPie","initDragZoom","initSubchart","initTooltip","initLegend","initTitle","initZoom","drawColorScale","initSubchartBrush","initRegion","initGrid","grid_lines_front","initGridLines","initStanfordElements","initEventRect","updateTargets","axis_x_selection","selectionAsValue","getDefaultSelection","updateDimension","oninit","withTransform","withUpdateXDomain","withUpdateOrgXDomain","withTransitionForAxis","bindResize","bindWindowFocus","element","smoothLines","el","legendHeight","legend","getLegendHeight","legendWidth","getLegendWidth","legendHeightForBottom","hasArc","hasArcType","xAxisHeight","getHorizontalAxisHeight","subchartHeight","subchart_show","subchart_size_height","currentWidth","getCurrentWidth","currentHeight","getCurrentHeight","margin","getCurrentPaddingTop","getCurrentPaddingRight","getCurrentPaddingBottom","getCurrentPaddingLeft","margin2","margin3","updateSizeForLegend","width2","height2","arcWidth","arcHeight","hasType","gauge_fullCircle","getGaugeLabelHeight","updateRadius","radiusExpanded","updateTargetsForText","updateTargetsForBar","updateTargetsForLine","updateTargetsForArc","updateTargetsForSubchart","showTargets","isTargetToShow","transition_duration","transitions","withY","withSubchart","withTransitionForExit","withTrimXDomain","withLegend","withEventRect","withDimension","withUpdateXAxis","drawArea","drawBar","drawLine","xForText","yForText","durationForExit","durationForAxis","transitionsToWait","waitForDraw","flow","intervalForCulling","xDomainForZoom","areaIndices","getShapeIndices","isAreaType","barIndices","isBarType","lineIndices","isLineType","hideAxis","xv","legend_show","updateLegend","updateXDomain","zoom_rescale","orgDomain","axis_y_tick_count","axis_y2_tick_count","axis_x_tick_culling_max","generateDrawArea","generateDrawBar","generateDrawLine","generateXYForText","updateCircleY","circleY","circleX","updateXgridFocus","data_empty_label_text","redrawEventRect","updateGrid","updateStanfordElements","updateRegion","updateBar","updateLine","updateArea","updateCircle","hasDataLabel","updateText","redrawTitle","redrawArc","redrawSubchart","generateFlow","isTabVisible","redrawBar","redrawLine","redrawArea","redrawCircle","redrawText","redrawRegion","redrawGrid","generateWait","onrendered","updateAndRedraw","withTransitionForTransform","transformAll","redrawWithoutRescale","axis_x_type","isCustomX","data_x","data_xs","axis_y_type","initialOpacity","initialOpacityForCircle","opacityForCircle","point_show","isStanfordType","isScatterType","opacityForText","xx","xvCustom","xyValue","axis_x_categories","yvCustom","yScale","yv","subxx","transformMain","transformContext","transformLegend","getXAxisClipX","getXAxisClipY","getXAxisClipWidth","getXAxisClipHeight","getYAxisClipX","getYAxisClipY","getYAxisClipWidth","getYAxisClipHeight","withoutAxis","observer","MutationObserver","mutations","mutation","disconnect","observe","attributes","childList","characterData","console","resizeFunction","generateResize","onresize","resize_auto","resizeTimeout","onresized","resizeIfElementDisplayed","offsetParent","attachEvent","wrapper","_this","windowFocusHandler","unbindWindowFocus","resizeFunctions","callResizeFunctions","endall","done","parsedDate","hidden","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","classname","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","SVGPathSegMovetoAbs","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","getPathSegAtLength","measurementElement","lastPathSegment","numberOfItems","removeItem","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributeFilter","_pathElementMutationObserver","_updateListFromPathMutations","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","hasPathMutations","record","attributeName","_writeListToPath","_pathSegArrayAsString","pathSeg","newItem","_checkValidIndex","insertItemBefore","replaceItem","item","appendItem","pathSegArray","Builder","appendSegment","Source","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","lookahead","_pathSegTypeFromChar","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","command","_parseNumber","integer","frac","expsign","startIntPartIndex","scanIntPartIndex","multiplier","_parseArcFlag","flag","flagChar","parseSegment","arcAngle","arcLarge","arcSweep","builder","targetLength","padString","repeat","labels","axis_x_max","axis_y_max","axis_y2_max","axis_x_min","axis_y_min","axis_y2_min","category","categories","size_width","size_height","flush","destroy","detachEvent","targetIds","shown","targetId","clearLegendItemTextBoxCache","updateDataAttributes","baseTarget","baseValue","diff","notfoundIds","orgDataCount","getMaxDataCount","tail","found","getOtherTargetX","missing","mainRegion","mainText","mainBar","mainLine","mainArea","mainCircle","flowIndex","flowLength","flowStart","getValueOnIndex","flowEnd","durationForFlow","wait","updateXGrid","hideXGridFocus","flowTransition","easeLinear","isRegionOnX","xgridAttr","regionX","regionWidth","focus","candidates","mapToTargetIds","selectorTargets","revert","defocus","expandArc","toggleFocusLegend","unexpandArc","showLegend","isLegendToShow","selectorLegends","grids","grid_x_lines","removeGridLines","grid_y_lines","data_groups","show","hide","hideLegend","load","addXs","classes","data_classes","data_colors","hasCaches","cacheIds","getCaches","unload","loadFromArgs","ids","selected","getTargetSelectorSuffix","indices","resetOther","data_selection_enabled","toggle","getToggle","isTargetId","data_selection_grouped","isTargetIndex","isSelected","data_selection_isselectable","unselect","removeHiddenTargetIds","filterByX","getMousePosition","tooltip_onshow","tooltip_onhide","transformTo","optionsForRedraw","setTargetType","updateTargetX","updateTargetXs","zoom_onzoom","enable","enabled","zoom_enabled","unzoom","zoom_x_max","zoom_x_min","orderFct","getOrderFunction","isOrderAsc","isOrderDesc","defaultSort","gauge_width","donut_width","gaugeArcWidth","gauge_arcs_minWidth","innerRadiusRatio","updateArc","svgArc","getSvgArc","svgArcExpanded","getSvgArcExpanded","svgArcExpandedSub","updateAngle","gMin","gMax","gTic","gValue","isGaugeType","gauge_min","gauge_max","gauge_startingAngle","hasGaugeType","singleArcWidth","withoutUpdate","updated","rate","expandWidth","getArc","isArcType","transformForArcLabel","hasGauge","donut_label_ratio","pie_label_ratio","getArcRatio","whole","convertToArcData","addName","textForArcLabel","shouldShowArcLabel","meetsArcLabelThreshold","getArcLabelFormat","defaultArcValueFormat","textForGaugeMinMax","isMax","getGaugeLabelExtents","shouldExpand","expandDuration","isDonutType","donut_expand_duration","gauge_expand_duration","isPieType","pie_expand_duration","donut_expand","gauge_expand","pie_expand","shouldShow","donut_label_show","pie_label_show","donut_label_threshold","pie_label_threshold","pie_label_format","gauge_label_format","donut_label_format","gauge_label_extents","getArcTitle","donut_title","mainPies","mainPieEnter","classChartArc","classArcs","classFocus","mainArc","arcLabelLines","mainArcLabelLine","arcData","classArc","interaction_enabled","_current","gauge_labelLine_show","lineLength","innerLineLength","lineAngle","linePositioningAngle","data_onmouseover","selectedData","showTooltip","revertLegend","hideTooltip","data_onmouseout","toggleShape","data_onclick","interpolated","backgroundArc","gauge_label_show","gauge_units","addCache","cloneTarget","generateTargetClass","generateClass","classText","classTexts","classShape","classShapes","classLine","classLines","classCircle","classCircles","classBar","classBars","classArea","classAreas","classRegion","classEvent","classTarget","additionalClassSuffix","additionalClass","classFocused","classDefocused","classChartText","classChartLine","classChartBar","selectorTarget","selectorLegend","isIE9","appVersion","URL","getAxisClipX","getAxisClipY","getAxisClipWidth","getAxisClipHeight","pattern","color_pattern","schemeCategory10","data_color","color_threshold","asValue","padding_left","padding_right","padding_top","padding_bottom","zoom_initialRange","zoom_type","zoom_disableDefaultBehavior","zoom_privileged","zoom_onzoomstart","zoom_onzoomend","interaction_brighten","data_epochs","data_xSort","data_idConverter","data_names","data_type","data_types","data_labels","data_order","data_regions","data_selection_multiple","data_selection_draggable","data_onselected","data_onunselected","subchart_axis_x_show","subchart_onbrush","legend_inset_x","legend_inset_y","legend_inset_step","legend_item_onclick","legend_item_onmouseover","legend_item_onmouseout","legend_equally","legend_padding","legend_item_tile_width","legend_item_tile_height","axis_x_tick_outer","axis_x_padding","axis_y_inverted","axis_y_center","axis_y_tick_outer","axis_y_padding","axis_y_default","axis_y2_inverted","axis_y2_center","axis_y2_tick_outer","axis_y2_padding","axis_y2_default","grid_x_show","grid_x_type","grid_y_show","grid_y_ticks","grid_focus_show","point_r","point_sensitivity","point_focus_expand_enabled","point_focus_expand_r","point_select_r","line_connectNull","line_step_type","bar_width","bar_width_ratio","bar_width_max","bar_zerobased","bar_space","area_zerobased","area_above","spline_interpolation_type","stanford_lines","stanford_regions","stanford_texts","stanford_scaleMin","stanford_scaleMax","stanford_scaleWidth","stanford_scaleFormat","stanford_scaleValues","stanford_colors","stanford_padding","tooltip_show","tooltip_grouped","tooltip_order","tooltip_format_title","tooltip_format_name","tooltip_format_value","tooltip_horizontal","tooltip_position","tooltip_contents","defaultTitleFormat","defaultValueFormat","getTooltipContent","tooltip_init_show","tooltip_init_x","tooltip_init_position","title_text","title_padding","title_position","additionalConfig","read","this_config","url","mimeType","headers","converter","convertXsvToData","catch","xsv","configurable","writable","_defineProperty","targetKeys","new_rows","new_row","findValueInJson","pathArray","newRows","appendXs","epochs","isX","isEpochs","isNotXAndNotEpochs","isNotX","xKey","getXKey","rawX","generateTargetX","getOtherTargetXs","getXValuesOfXKey","convertedId","id_org","returnData","hasNegativeValue","hasNegativeValueInTargets","hasPositiveValue","hasPositiveValueInTargets","dict","xValues","getXValue","idsForX","valueOnIndex","hasTarget","removeHiddenLegendIds","getValuesAsIdKeyed","ys","checkValueInTargets","checker","orderAsc","orderDesc","reducer","t1Sum","t2Sum","orderTargets","fct","filterRemoveNull","filterByXDomain","xDomain","getDataLabelLength","lengths","dataLabelFormat","isNoneArc","isArc","findClosestFromTargets","pos","findClosest","minDist","isWithinBar","horizontalDistance","dist","xIndex","yIndex","convertValuesToStep","converted","attrs","getYDomainMin","baseId","idsInGroup","getYDomainMax","yDomainAbs","isAllPositive","isAllNegative","targetsByAxisId","yTargets","yMin","yMax","yDomainMin","yDomainMax","isZeroBased","isInverted","showHorizontalDataLabel","showVerticalDataLabel","getXDomainMin","getXDomainMax","getXDomainPadding","maxDataCount","firstX","lastX","getTime","withTrim","updateScale","trimXDomain","zoomDomain","getZoomDomain","mx","my","maxX","_w","_h","isIncluded","isWithin","togglePoint","togglePath","dragstart","dragend","getYFormat","forArc","formatForY","yFormat","formatForY2","y2Format","defaultFormat","xgridData","generateGridData","xgridEnter","updateYGrid","gridValues","ygridEnter","gridTextAnchor","gridTextDx","xGridTextX","yGridTextX","xgridLineEnter","ygridLineEnter","showXGridFocus","dataToShow","focusEl","firstYear","lastYear","gridData","tickNum","getGridFilterToRemove","param","forX","toRemove","toShow","zoomTransform","mouseout","unexpandCircles","unexpandBars","sameXData","isScatterOrStanfordType","expandCircles","expandBars","isWithinShape","getYScale","initMouseEvent","legendItemTextBox","legendHasRendered","updateLegendWithDefaults","insetLegendPosition","updateLegendStep","updateLegendItemWidth","updateLegendItemHeight","opacityForLegend","opacityForUnfocusedLegend","xForLegend","xForLegendText","xForLegendRect","yForLegend","yForLegendText","yForLegendRect","x1ForLegendTile","x2ForLegendTile","yForLegendTile","rects","tiles","background","maxHeight","posMin","tileWidth","totalLength","offsets","widths","heights","margins","steps","updatePositions","textElement","maxLength","isLast","getTextRect","getTextBox","itemWidth","itemHeight","itemLength","areaLength","updateValues","withoutStep","mainRegionEnter","regionY","regionHeight","getScale","forTimeseries","scaleTime","getX","_scale","raw","getY","getSubYScale","forInit","xMin","xMax","subXMin","subXMax","subYMin","subYMax","selectPoint","pointSelectR","unselectPoint","selectPath","unselectPath","nodeName","isStepType","barData","mainBarEnter","getBarW","barTargetsNum","getBars","isSub","getPoints","generateGetBarPoints","indexX","indexY","__max__","barW","barX","getShapeX","barY","getShapeY","barOffset","getShapeOffset","barSpaceOffset","posX","posY","seg0","seg1","ex","ey","typeFilter","targetsNum","isWithinStep","isWithinCircle","getInterpolate","curveLinear","linear-closed","curveLinearClosed","curveBasis","basis-open","curveBasisOpen","basis-closed","curveBasisClosed","curveBundle","curveCardinal","cardinal-open","curveCardinalOpen","cardinal-closed","curveCardinalClosed","monotone","curveMonotoneX","curveStep","step-before","curveStepBefore","step-after","curveStepAfter","isSplineType","mainLines","mainLineEnter","lineData","generateGetLinePoints","yScaleGetter","xValue","yValue","lineWithRegions","lineTargetsNum","lineOffset","_regions","sWithRegion","dd","diffx2","xOffset","isWithinRegions","generateM","x_diff","xv0","xv1","mainAreaEnter","orgAreaOpacity","generateGetAreaPoints","getAreaBaseValue","areaTargetsNum","areaOffset","lineOrScatterOrStanfordData","mainCircleEnter","pointR","getStanfordPointColor","getCircles","pointExpandedR","d3_this","getParentWidth","getParentHeight","getTitlePadding","getAxisWidthByAxisId","legendWidthOnRight","getColorScalePadding","getParentRectValue","tagName","offsetWidth","getSvgLeft","hasLeftAxisRect","leftAxisClass","leftAxis","svgRect","chartRect","svgLeft","initBrush","redrawForBrush","updateExtent","visibility","contextLineEnter","contextLine","contextBarEnter","contextBar","updateBarForSubchart","redrawBarForSubchart","drawBarOnSub","updateLineForSubchart","redrawLineForSubchart","drawLineOnSub","updateAreaForSubchart","contextArea","contextAreaEnter","redrawAreaForSubchart","drawAreaOnSub","zoomIdentity","mainTextEnter","barOrLineData","forFlow","cls","font","getAreaPoints","getBarPoints","getLinePoints","getXForText","getYForText","xPos","yPos","isSafari","isChrome","xForTitle","yForTitle","barWidth","legendAxis","axisScale","inverseScale","scaleSequential","scaleLog","minEpochs","maxEpochs","xForColorScale","getBBox","compareEpochs","interpolateHslLong","colorscale","scaleSequentialLog","getCentroid","getRegionArea","getStanfordTooltipTitle","labelX","labelY","countEpochsInRegion","accumulator","currentValue","pointInRegion","percentage","stanfordLineEnter","stanfordRegionEnter","stanfordTextEnter","countPointsInRegion","content","getTooltipSortFunction","sortFunction","bgcolor","titleFormat","nameFormat","valueFormat","tooltipSortFunction","tooltipPosition","tWidth","tHeight","tooltipLeft","tooltipRight","tooltipTop","chartRight","positionFunction","ua","userAgent","startEvent","redrawForZoom","updateDomain","brushXPos","brushYPos","getZoomedDomain","dragZoomBrush","zoomedDomain","testObject","testString","del","_extend","Dataset","meta","arr","coords","colIndex","rowIndex","colResult","rowResult","selectRow","analyses","_parsers2","average","val","parseFloat","maximum","nums","minimum","getColumnAverage","getRowAverage","getColumnSum","getRowSum","getColumnMaximum","getRowMaximum","getColumnMinimum","getRowMinimum","getColumnLabel","getRowIndex","stripHtmlTags","inputString","extendDeep","_ref","_ref$label","_ref$type","_toConsumableArray","className","_downloadResults2","_downloadResults","quality","domtoimage","toBlob","_fileSaver","saveAs","_domToImage","supportedFormats","includes","fileFormat","encodeURIComponent","csvContent","generateCsvContent","htmlElement","fileName","click","global","plugins","tooltips","updateThrottle","formatTooltip","vertical","progress","track","multiple","disabled","mouseAxis","trackSize","trackPos","lastPos","double","DocumentTouch","onInit","rangeable","defaultValues","render","initialised","tabIndex","controls","locked","limits","setLimits","setValue","onEnd","setValueFromPosition","getLimits","startValue","activeHandle","limit","getValue","onStart","recalculate","getHandle","events","stopValue","Event","keydown","stepUp","stepDown","activeElement","accuracy","nativeEvent","setPosition","onChange","native","getPosition","disable","scroll","form","unbind","replaceChild","_index","Dataviz","env","extendKeenGlobalObject","KeenDataviz","KeenDataset","Keen","keenGlobals","webpackKeenGlobals","_dataset","_stripHtmlTags","_extendDeep","defaultOptions","showDeprecationWarnings","showLoadingSpinner","containerElement","showTitle","subtitle","notes","theme","colorMapping","ui","executionMetadata","utils","clickToCopyToClipboard","indexBy","labelMapping","labelMappingRegExp","errorMapping","showErrorMessages","library","sortIntervals","results","stacked","dateFormat","alignment","textMaxLength","pagination","sensitivity","horizontal","draggable","onselected","_artifacts","prev","curr","_copyToClipboard2","partialIntervalIndicator","timezone","table","schema","renderOnVisible","funnel","resultValues","percents","countingMethod","decimals","marginBetweenElements","hover","effect3d","minimalSize","react","sparkline","choropleth","borders","showSlider","heatmap","_extends","palette","palettes","convertChartTypes","stacking","dataset","_prepared","_rendered","visuals","firstVisibilityState","visibilityState","setLabels","datavizInstance","_assertDateString2","updateRow","updateColumn","mapLabelsExec","valueAfterMatching","regExpAndLabel","mapLabels","labelMappingDimension","sortColumns","sortRows","areachart","barchart","columnchart","linechart","piechart","domReady","readyState","DOMContentLoaded","testDom","libraries","_libraries2","register","actions","method","visual","chartOptions","num","message","loader","spinner","_this2","firstResult","query","timeframe","timeframes","resultItem","resultTimeframe","timeframeItem","msg","deleteColumn","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","event_collection","analysis_type","ds2","err","return","returnValue","renderAsPromise","customCallback","shouldRenderExecutionMetadata","execution_metadata","shouldRenderDownloadBtn","buttons","download","mappedMsg","chart100percentWide","rangeChart","legendItemsAlign","buildDomWrapper","_renderDownloadBtn2","_renderExecutionMetadata2","IntersectionObserver","isIntersecting","visibilityChange","msHidden","webkitHidden","once","bool","exportImage","_ref2","_ref2$quality","_ref2$bgcolor","_exportSvg2","exportData","_exportData2","chartType","parseRawData","parseRequest","pkg","deleteRow","filterColumns","selectedColumn","filterRows","insertColumn","insertRow","_append","comp","head","cols","analysesUtilMethods","op","_analyses","lib","parsers","_flatten","_object","metric","res","grouped-metric","grouped-interval","double-grouped-metric","rowLabel","double-grouped-interval","extraction","datasetExtraction","flatten","tableConfig","resultKeys","keyName","iNames","valueAtDeepKey","heatmap-axis","heatmapDataset","objKeys","ob","toReturn","flatObject","is","selectedParser","parserArgs","metadata","filters","group_by","display_name","analysis","getDefaultTitle","visualization","chart_type","getDefaultType","bindResizeListener","c3Chart","parentWidth","nextSiblingWidth","Funnel","funnel-3d","Funnel3d","horizontal-funnel","HorizontalFunnel","horizontal-funnel-3d","HorizontalFunnel3d","metric-combo","MetricCombo","Heatmap","Choropleth","getPaddings","paddingName","ENFORCED_OPTIONS","renderingElement","offsetHeight","titleElement","subtitleElement","notesElement","DEFAULT_OPTIONS","sumArray","_calculatePercents","calculateSumForPercents","calculatePercents","_calculateRange2","clearOnRender","_datasetMeta$type","spliceFrom","removeLegend","rotated","_defaultDateFormat2","legendElement","partialResultsRegion","class","contents","c3TooltipContents","valueFormatted","scope","c3options","c3PaginatingLegend","onLegendRendered","onPaginated","defineC3","startDate","endDate","timeDiff","ms","domNode","legendConfig","dataColumnsSorted","columnData","paginateHorizontalLeftElement","legendItemsElement","paginateVerticalElement","paginateHorizontalRightElement","paginateData","labelShortened","chartPartId","legendItemColorSample","prepend","tooltipElement","arrowUp","arrowDown","paginate","clearSelectedText","getSelection","removeAllRanges","_assertDateString","_escapeHtml","outer","inner","titleContainer","subtitleContainer","notesContainer","currentTarget","previousElementSibling","util","parseExtension","extension","WOFF","woff","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","dataAsUrl","isDataUrl","search","canvasToBlob","canvas","binaryString","atob","toDataURL","binaryArray","Uint8Array","Blob","resolveUrl","baseUrl","doc","implementation","createHTMLDocument","href","getAndEncode","TIMEOUT","impl","cacheBust","request","XMLHttpRequest","onreadystatechange","fail","encoder","FileReader","onloadend","readAsDataURL","ontimeout","responseType","open","send","imagePlaceholder","uid","arg","asArray","arrayLike","escapeXhtml","makeImage","leftBorder","rightBorder","scrollWidth","topBorder","bottomBorder","scrollHeight","styleProperty","newUtil","inliner","URL_REGEX","inlineAll","shouldProcess","readUrls","urls","inline","dataUrl","urlAsRegex","newInliner","fontFaces","resolveAll","readAll","webFonts","all","webFont","cssStrings","styleSheets","cssRules","sheet","rule","CSSRule","FONT_FACE_RULE","rules","newWebFont","webFontRule","parentStyleSheet","cssText","newFontFaces","images","Element","inlined","getPropertyPriority","inlineBackground","HTMLImageElement","newImage","childNodes","newImages","toSvg","toPng","toJpeg","toPixelData","getContext","getImageData","copyOptions","HTMLCanvasElement","original","childClone","cloneChildrenInOrder","cloneChildren","copyProperties","styleElement","formatCssText","formatCssProperties","createTextNode","formatPseudoElementStyle","clonePseudoElement","HTMLTextAreaElement","HTMLInputElement","SVGRectElement","attribute","processClone","embedFonts","inlineImages","XMLSerializer","serializeToString","foreignObject","makeSvgDataUri","ctx","fillStyle","fillRect","newCanvas","drawImage","makeNodeCopy","copyStyle","cloneStyle","clonePseudoElements","formatProperty","copyUserInput","fixSvg","styleNode","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","MouseEvent","HTMLAnchorElement","webkitURL","rel","origin","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","autoBom","warn","HTMLElement","safari","_prettyNumber","_copyToClipboard","opts","prevValue","formattedNum","flexDifferenceStyle","resultDifference","differenceStyle","smallerValue","_config","previousResults","isExtraction","comparedProp","formattedResult","itemProp","acc","formatExtractionData","resultClassName","previousResultsClassName","currentPage","_generateTableRows","customConfig","page","arrows","datasetPaginated","pages","columnsArray","colNamesToMap","_datavizInstance$conf","mapValues","mapDates","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_slicedToArray","rowColValue","rowColValueEscaped","pageNumber","prevPage","nextPage","fieldNumber","columnNames","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","colName","colNameEscaped","_generateTableHeader","sortOrder","sortOrderNumber","nameA","nameB","attachBtnEventListeners","btn","tableClass","_e$target","_svgTextWrap","_config$funnel","_config$funnel$percen","marginBetweenSteps","yMarginElement","funnelContainer","svgWidth","svgHeight","elemHeight","prevElemWidth","minimalSizeStep","newPoints","handleMouseOver","polygonsHover","labelHover","thisLabel","handleMouseOut","shadowCut","polygonsShadows","polygons3d","xMarginElement","elemWidth","prevElemHeight","metricResults","prevResult","percentDifference","labelClass","iconClass","containerTitle","containerSubtitle","chartRoot","currentCount","_config$heatmap","simpleTooltip","heatmapContainer","containerWidth","containerHeight","chartContainer","xLabel","yLabel","formattedData","timestamp","refValue","minRange","maxRange","getColor","baseColor","getColorAlpha","getTileColor","solidColor","bg","convertRGBAtoRGB","Rangeable","_data","handleSliderChange","containerToString","customStyle","scriptRef","getAxisLabelRatio","labelSize","scaleBand","chartTooltip","tooltipContent","_config$choropleth","_config$choropleth$bo","choroplethContainer","heightChanges","onlyValues","minVal","maxVal","lightColor","darkColor","elementName","geoMercator","geoAlbersUsa","geoPath","usData","theOne","properties","dataList","dt","handleCopyToClipboard","removeClassWithTimeOut","autocollector","modern","dracula"],"mappings":"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yDACA,+DACA,sEACA7I,IAAM0zE,IAESkB,GAAAP,GAAKM,ICZTE,GAAM,IAAAx5E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAESoB,GAAAT,GAAKQ,ICZTE,GAAM,IAAA15E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAESsB,GAAAX,GAAKU,ICZTE,GAAM,IAAA55E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAESwB,GAAAb,GAAKY,ICZTE,GAAM,IAAA95E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAES0B,GAAAf,GAAKc,ICZTE,GAAM,IAAAh6E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAES4B,GAAAjB,GAAKgB,ICZTE,GAAM,IAAAl6E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAES8B,GAAAnB,GAAKkB,ICZTE,GAAM,IAAAp6E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA7I,IAAM0zE,IAESgC,GAAArB,GAAKoB,ICVTE,GAAM,IAAAt6E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA7I,IAAM0zE,IAESkC,GAAAvB,GAAKsB,ICVTE,GAAM,IAAAx6E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA7I,IAAM0zE,IAESoC,GAAAzB,GAAKwB,ICVTE,GAAM,IAAA16E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA7I,IAAM0zE,IAESsC,GAA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","file":"keen-dataviz.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 20);\n","export function each(o, cb, s) {\n var n;\n if (!o) {\n return 0;\n }\n s = !s ? o : s;\n if (o instanceof Array) {\n // Indexed arrays, needed for Safari\n for (n = 0; n < o.length; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n // Hashtables\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false){\n return 0;\n }\n }\n }\n }\n return 1;\n}\n","function stickTooltip(event, tooltip) {\n tooltip.style.opacity = 0;\n tooltip.style.top = `${event.pageY}px`;\n tooltip.style.left = `${event.pageX + 10}px`;\n}\n\nexport default function copyToClipboard(value, event) {\n const placeholder = document.createElement('input');\n placeholder.value = value;\n document.body.appendChild(placeholder);\n placeholder.select();\n document.execCommand('copy');\n document.body.removeChild(placeholder);\n\n if (event) {\n const notification = document.createElement('div');\n notification.style.padding = '5px 10px';\n notification.style.backgroundColor = '#ffffff';\n notification.style.fontSize = '12px';\n notification.style.position = 'absolute';\n notification.style.top = `${event.pageY}px`;\n notification.style.left = `${event.pageX + 10}px`;\n notification.style.zIndex = '999';\n notification.style.opacity = 1;\n notification.style.transition = 'opacity 1s ease';\n notification.innerText = 'copied!';\n\n document.body.appendChild(notification);\n document.addEventListener('mousemove', e => stickTooltip(e, notification));\n\n setTimeout(() => {\n notification.style.opacity = 1;\n document.body.removeChild(notification);\n }, 1000);\n }\n}\n","export var name = \"d3\";\nexport var version = \"5.11.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {Timer, now} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {tweenValue} from \"./tween\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\nimport transition_end from \"./end\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i(t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i(t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {get, init} from \"./schedule\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","export function expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nexport function expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","var tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index\";\nimport schedule from \"../transition/schedule\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index\";\nimport {SCHEDULED} from \"./transition/schedule\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(brush, \"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n return (!clean && that.__brush.emitter) || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/.test(value)) value = new Date(value);\n else continue;\n object[key] = value;\n }\n return object;\n}\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipRejoin from \"./rejoin\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","import clipRectangle from \"./rectangle\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains\";\nimport {default as distance} from \"./distance\";\nimport {epsilon2, radians} from \"./math\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","export default function(x) {\n return x;\n}\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, // clip extent\n postclip = identity,\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n },\n postclip: function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n },\n clipExtent: function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n },\n fitWidth: function(width, object) {\n return fitWidth(projection, width, object);\n },\n fitHeight: function(height, object) {\n return fitHeight(projection, height, object);\n }\n };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count\";\nimport node_each from \"./each\";\nimport node_eachBefore from \"./eachBefore\";\nimport node_eachAfter from \"./eachAfter\";\nimport node_sum from \"./sum\";\nimport node_sort from \"./sort\";\nimport node_path from \"./path\";\nimport node_ancestors from \"./ancestors\";\nimport node_descendants from \"./descendants\";\nimport node_leaves from \"./leaves\";\nimport node_links from \"./links\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings\";\nimport {optional} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round\";\nimport treemapDice from \"./treemap/dice\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors\";\nimport {Node, computeHeight} from \"./hierarchy/index\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round\";\nimport squarify from \"./squarify\";\nimport {required} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice\";\nimport slice from \"./slice\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\nimport {phi, squarifyRatio} from \"./squarify\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport line from \"./line\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant\";\nimport descending from \"./descending\";\nimport identity from \"./identity\";\nimport {tau} from \"./math\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial\";\nimport line from \"./line\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial\";\nimport area from \"./area\";\nimport {lineRadial} from \"./lineRadial\"\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array\";\nimport constant from \"../constant\";\nimport {x as pointX, y as pointY} from \"../point\";\nimport pointRadial from \"../pointRadial\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle\";\nimport cross from \"./symbol/cross\";\nimport diamond from \"./symbol/diamond\";\nimport star from \"./symbol/star\";\nimport square from \"./symbol/square\";\nimport triangle from \"./symbol/triangle\";\nimport wye from \"./symbol/wye\";\nimport constant from \"./constant\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop\";\nimport {point} from \"./basis\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport offsetNone from \"./offset/none\";\nimport orderNone from \"./order/none\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = yp;\n }\n }\n }\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance\";\nimport {sum} from \"./ascending\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","export {version} from \"./dist/package.js\";\nexport * from \"d3-array\";\nexport * from \"d3-axis\";\nexport * from \"d3-brush\";\nexport * from \"d3-chord\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-contour\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-fetch\";\nexport * from \"d3-force\";\nexport * from \"d3-format\";\nexport * from \"d3-geo\";\nexport * from \"d3-hierarchy\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-path\";\nexport * from \"d3-polygon\";\nexport * from \"d3-quadtree\";\nexport * from \"d3-random\";\nexport * from \"d3-scale\";\nexport * from \"d3-scale-chromatic\";\nexport * from \"d3-selection\";\nexport * from \"d3-shape\";\nexport * from \"d3-time\";\nexport * from \"d3-time-format\";\nexport * from \"d3-timer\";\nexport * from \"d3-transition\";\nexport * from \"d3-voronoi\";\nexport * from \"d3-zoom\";\n","export function prettyNumber(input) {\n // If it has 3 or fewer sig figs already, just return the number.\n var input = Number(input),\n sciNo = input.toPrecision(3),\n prefix = '',\n suffixes = ['', 'k', 'M', 'B', 'T'];\n\n if (Number(sciNo) == input && String(input).length <= 4) {\n return String(input);\n }\n\n if (Math.abs(input) >= 1000000000000000) {\n return sciNo;\n }\n\n if (input >= 1 || input <= -1) {\n if (input < 0){\n //Pull off the negative side and stash that.\n input = -input;\n prefix = '-';\n }\n return prefix + recurse(input, 0);\n }\n else {\n return input.toPrecision(3);\n }\n\n function recurse(input, iteration) {\n var input = String(input);\n var split = input.split('.');\n // If there's a dot\n if (split.length > 1) {\n // Keep the left hand side only\n input = split[0];\n var rhs = split[1];\n // If the left-hand side is too short, pad until it has 3 digits\n if (input.length == 2 && rhs.length > 0) {\n // Pad with right-hand side if possible\n if (rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n else if (input.length == 1 && rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n // Pad with right-hand side if possible\n if (rhs.length > 1) {\n input += rhs.charAt(1);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n }\n var numNumerals = input.length;\n // if it has a period, then numNumerals is 1 smaller than the string length:\n if (input.split('.').length > 1) {\n numNumerals--;\n }\n if (numNumerals <= 3) {\n return String(input) + suffixes[iteration];\n }\n else {\n return recurse(Number(input) / 1000, iteration + 1);\n }\n }\n}\n","const matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nexport function escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n for (var prop in arguments[i]){\n target[prop] = arguments[i][prop];\n }\n }\n return target;\n}\n","import * as d3 from 'd3';\n\nexport function textWrap(text, width) {\n text.each(function () {\n let text = d3.select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.1, // ems\n x = text.attr(\"x\"),\n y = text.attr(\"y\"),\n dy = 0, //parseFloat(text.attr(\"dy\")),\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\");\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n .text(word);\n }\n }\n });\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import createNullList from '../utils/create-null-list';\nimport { each } from '../../utils/each';\n\nexport function appendColumn(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n self.matrix[0].push(label);\n each(self.matrix, function(row, i) {\n let cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].push(cell);\n }\n });\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat(createNullList(self.matrix.length - 1 - input.length));\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String(self.matrix.length));\n }\n });\n }\n\n self.matrix[0].push(label);\n each(input, function(value, i){\n self.matrix[i+1][self.matrix[0].length-1] = value;\n });\n\n }\n\n return self;\n}\n\nexport function appendRow(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n const newRow = [];\n\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i){\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.push(newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length));\n }\n });\n }\n\n self.matrix.push(newRow.concat(input));\n }\n\n return self;\n}\n","export default function (len) {\n const list = [];\n for (let i = 0; i < len; i++) {\n list.push(null);\n }\n return list;\n}\n","/* @license C3.js v0.7.2 | (c) C3 Team and other contributors | http://c3js.org/ */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.c3 = factory());\n}(this, function () { 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function ChartInternal(api) {\n var $$ = this;\n $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n $$.api = api;\n $$.config = $$.getDefaultConfig();\n $$.data = {};\n $$.cache = {};\n $$.axes = {};\n }\n\n /**\n * The Chart class\n *\n * The methods of this class is the public APIs of the chart object.\n */\n\n function Chart(config) {\n this.internal = new ChartInternal(this);\n this.internal.loadConfig(config);\n this.internal.beforeInit(config);\n this.internal.init();\n this.internal.afterInit(config); // bind \"this\" to nested API\n\n (function bindThis(fn, target, argThis) {\n Object.keys(fn).forEach(function (key) {\n target[key] = fn[key].bind(argThis);\n\n if (Object.keys(fn[key]).length > 0) {\n bindThis(fn[key], target[key], argThis);\n }\n });\n })(Chart.prototype, this, this);\n }\n\n function AxisInternal(component, params) {\n var internal = this;\n internal.component = component;\n internal.params = params || {};\n internal.d3 = component.d3;\n internal.scale = internal.d3.scaleLinear();\n internal.range;\n internal.orient = \"bottom\";\n internal.innerTickSize = 6;\n internal.outerTickSize = this.params.withOuterTick ? 6 : 0;\n internal.tickPadding = 3;\n internal.tickValues = null;\n internal.tickFormat;\n internal.tickArguments;\n internal.tickOffset = 0;\n internal.tickCulling = true;\n internal.tickCentered;\n internal.tickTextCharSize;\n internal.tickTextRotate = internal.params.tickTextRotate;\n internal.tickLength;\n internal.axis = internal.generateAxis();\n }\n\n AxisInternal.prototype.axisX = function (selection, x, tickOffset) {\n selection.attr(\"transform\", function (d) {\n return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n });\n };\n\n AxisInternal.prototype.axisY = function (selection, y) {\n selection.attr(\"transform\", function (d) {\n return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n });\n };\n\n AxisInternal.prototype.scaleExtent = function (domain) {\n var start = domain[0],\n stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n };\n\n AxisInternal.prototype.generateTicks = function (scale) {\n var internal = this;\n var i,\n domain,\n ticks = [];\n\n if (scale.ticks) {\n return scale.ticks.apply(scale, internal.tickArguments);\n }\n\n domain = scale.domain();\n\n for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n ticks.push(i);\n }\n\n if (ticks.length > 0 && ticks[0] > 0) {\n ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n }\n\n return ticks;\n };\n\n AxisInternal.prototype.copyScale = function () {\n var internal = this;\n var newScale = internal.scale.copy(),\n domain;\n\n if (internal.params.isCategory) {\n domain = internal.scale.domain();\n newScale.domain([domain[0], domain[1] - 1]);\n }\n\n return newScale;\n };\n\n AxisInternal.prototype.textFormatted = function (v) {\n var internal = this,\n formatted = internal.tickFormat ? internal.tickFormat(v) : v;\n return typeof formatted !== 'undefined' ? formatted : '';\n };\n\n AxisInternal.prototype.updateRange = function () {\n var internal = this;\n internal.range = internal.scale.rangeExtent ? internal.scale.rangeExtent() : internal.scaleExtent(internal.scale.range());\n return internal.range;\n };\n\n AxisInternal.prototype.updateTickTextCharSize = function (tick) {\n var internal = this;\n\n if (internal.tickTextCharSize) {\n return internal.tickTextCharSize;\n }\n\n var size = {\n h: 11.5,\n w: 5.5\n };\n tick.select('text').text(function (d) {\n return internal.textFormatted(d);\n }).each(function (d) {\n var box = this.getBoundingClientRect(),\n text = internal.textFormatted(d),\n h = box.height,\n w = text ? box.width / text.length : undefined;\n\n if (h && w) {\n size.h = h;\n size.w = w;\n }\n }).text('');\n internal.tickTextCharSize = size;\n return size;\n };\n\n AxisInternal.prototype.isVertical = function () {\n return this.orient === 'left' || this.orient === 'right';\n };\n\n AxisInternal.prototype.tspanData = function (d, i, scale) {\n var internal = this;\n var splitted = internal.params.tickMultiline ? internal.splitTickText(d, scale) : [].concat(internal.textFormatted(d));\n\n if (internal.params.tickMultiline && internal.params.tickMultilineMax > 0) {\n splitted = internal.ellipsify(splitted, internal.params.tickMultilineMax);\n }\n\n return splitted.map(function (s) {\n return {\n index: i,\n splitted: s,\n length: splitted.length\n };\n });\n };\n\n AxisInternal.prototype.splitTickText = function (d, scale) {\n var internal = this,\n tickText = internal.textFormatted(d),\n maxWidth = internal.params.tickWidth,\n subtext,\n spaceIndex,\n textWidth,\n splitted = [];\n\n if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n return tickText;\n }\n\n if (!maxWidth || maxWidth <= 0) {\n maxWidth = internal.isVertical() ? 95 : internal.params.isCategory ? Math.ceil(scale(1) - scale(0)) - 12 : 110;\n }\n\n function split(splitted, text) {\n spaceIndex = undefined;\n\n for (var i = 1; i < text.length; i++) {\n if (text.charAt(i) === ' ') {\n spaceIndex = i;\n }\n\n subtext = text.substr(0, i + 1);\n textWidth = internal.tickTextCharSize.w * subtext.length; // if text width gets over tick width, split by space index or crrent index\n\n if (maxWidth < textWidth) {\n return split(splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), text.slice(spaceIndex ? spaceIndex + 1 : i));\n }\n }\n\n return splitted.concat(text);\n }\n\n return split(splitted, tickText + \"\");\n };\n\n AxisInternal.prototype.ellipsify = function (splitted, max) {\n if (splitted.length <= max) {\n return splitted;\n }\n\n var ellipsified = splitted.slice(0, max);\n var remaining = 3;\n\n for (var i = max - 1; i >= 0; i--) {\n var available = ellipsified[i].length;\n ellipsified[i] = ellipsified[i].substr(0, available - remaining).padEnd(available, '.');\n remaining -= available;\n\n if (remaining <= 0) {\n break;\n }\n }\n\n return ellipsified;\n };\n\n AxisInternal.prototype.updateTickLength = function () {\n var internal = this;\n internal.tickLength = Math.max(internal.innerTickSize, 0) + internal.tickPadding;\n };\n\n AxisInternal.prototype.lineY2 = function (d) {\n var internal = this,\n tickPosition = internal.scale(d) + (internal.tickCentered ? 0 : internal.tickOffset);\n return internal.range[0] < tickPosition && tickPosition < internal.range[1] ? internal.innerTickSize : 0;\n };\n\n AxisInternal.prototype.textY = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1) : internal.tickLength;\n };\n\n AxisInternal.prototype.textTransform = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? \"rotate(\" + rotate + \")\" : \"\";\n };\n\n AxisInternal.prototype.textTextAnchor = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? rotate > 0 ? \"start\" : \"end\" : \"middle\";\n };\n\n AxisInternal.prototype.tspanDx = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 8 * Math.sin(Math.PI * (rotate / 180)) : 0;\n };\n\n AxisInternal.prototype.tspanDy = function (d, i) {\n var internal = this,\n dy = internal.tickTextCharSize.h;\n\n if (i === 0) {\n if (internal.isVertical()) {\n dy = -((d.length - 1) * (internal.tickTextCharSize.h / 2) - 3);\n } else {\n dy = \".71em\";\n }\n }\n\n return dy;\n };\n\n AxisInternal.prototype.generateAxis = function () {\n var internal = this,\n d3 = internal.d3,\n params = internal.params;\n\n function axis(g, transition) {\n var self;\n g.each(function () {\n var g = axis.g = d3.select(this);\n var scale0 = this.__chart__ || internal.scale,\n scale1 = this.__chart__ = internal.copyScale();\n var ticksValues = internal.tickValues ? internal.tickValues : internal.generateTicks(scale1),\n ticks = g.selectAll(\".tick\").data(ticksValues, scale1),\n tickEnter = ticks.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n tickExit = ticks.exit().remove(),\n tickUpdate = ticks.merge(tickEnter),\n tickTransform,\n tickX,\n tickY;\n\n if (params.isCategory) {\n internal.tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n tickX = internal.tickCentered ? 0 : internal.tickOffset;\n tickY = internal.tickCentered ? internal.tickOffset : 0;\n } else {\n internal.tickOffset = tickX = 0;\n }\n\n internal.updateRange();\n internal.updateTickLength();\n internal.updateTickTextCharSize(g.select('.tick'));\n var lineUpdate = tickUpdate.select(\"line\").merge(tickEnter.append(\"line\")),\n textUpdate = tickUpdate.select(\"text\").merge(tickEnter.append(\"text\"));\n var tspans = tickUpdate.selectAll('text').selectAll('tspan').data(function (d, i) {\n return internal.tspanData(d, i, scale1);\n }),\n tspanEnter = tspans.enter().append('tspan'),\n tspanUpdate = tspanEnter.merge(tspans).text(function (d) {\n return d.splitted;\n });\n tspans.exit().remove();\n var path = g.selectAll(\".domain\").data([0]),\n pathUpdate = path.enter().append(\"path\").merge(path).attr(\"class\", \"domain\"); // TODO: each attr should be one function and change its behavior by internal.orient, probably\n\n switch (internal.orient) {\n case \"bottom\":\n {\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return internal.textY(d, i);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + internal.outerTickSize);\n break;\n }\n\n case \"top\":\n {\n // TODO: rotated tick text\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return -1 * internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return -1 * internal.textY(d, i) - (params.isCategory ? 2 : internal.tickLength - 2);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + -internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + -internal.outerTickSize);\n break;\n }\n\n case \"left\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", -internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", -internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"end\");\n tspanUpdate.attr('x', -internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + -internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + -internal.outerTickSize);\n break;\n }\n\n case \"right\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"start\");\n tspanUpdate.attr('x', internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + internal.outerTickSize);\n break;\n }\n }\n\n if (scale1.rangeBand) {\n var x = scale1,\n dx = x.rangeBand() / 2;\n\n scale0 = scale1 = function scale1(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, internal.tickOffset);\n }\n\n tickEnter.call(tickTransform, scale0, internal.tickOffset);\n self = (transition ? tickUpdate.transition(transition) : tickUpdate).style('opacity', 1).call(tickTransform, scale1, internal.tickOffset);\n });\n return self;\n }\n\n axis.scale = function (x) {\n if (!arguments.length) {\n return internal.scale;\n }\n\n internal.scale = x;\n return axis;\n };\n\n axis.orient = function (x) {\n if (!arguments.length) {\n return internal.orient;\n }\n\n internal.orient = x in {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n } ? x + \"\" : \"bottom\";\n return axis;\n };\n\n axis.tickFormat = function (format) {\n if (!arguments.length) {\n return internal.tickFormat;\n }\n\n internal.tickFormat = format;\n return axis;\n };\n\n axis.tickCentered = function (isCentered) {\n if (!arguments.length) {\n return internal.tickCentered;\n }\n\n internal.tickCentered = isCentered;\n return axis;\n };\n\n axis.tickOffset = function () {\n return internal.tickOffset;\n };\n\n axis.tickInterval = function () {\n var interval, length;\n\n if (params.isCategory) {\n interval = internal.tickOffset * 2;\n } else {\n length = axis.g.select('path.domain').node().getTotalLength() - internal.outerTickSize * 2;\n interval = length / axis.g.selectAll('line').size();\n }\n\n return interval === Infinity ? 0 : interval;\n };\n\n axis.ticks = function () {\n if (!arguments.length) {\n return internal.tickArguments;\n }\n\n internal.tickArguments = arguments;\n return axis;\n };\n\n axis.tickCulling = function (culling) {\n if (!arguments.length) {\n return internal.tickCulling;\n }\n\n internal.tickCulling = culling;\n return axis;\n };\n\n axis.tickValues = function (x) {\n if (typeof x === 'function') {\n internal.tickValues = function () {\n return x(internal.scale.domain());\n };\n } else {\n if (!arguments.length) {\n return internal.tickValues;\n }\n\n internal.tickValues = x;\n }\n\n return axis;\n };\n\n return axis;\n };\n\n var CLASS = {\n target: 'c3-target',\n chart: 'c3-chart',\n chartLine: 'c3-chart-line',\n chartLines: 'c3-chart-lines',\n chartBar: 'c3-chart-bar',\n chartBars: 'c3-chart-bars',\n chartText: 'c3-chart-text',\n chartTexts: 'c3-chart-texts',\n chartArc: 'c3-chart-arc',\n chartArcs: 'c3-chart-arcs',\n chartArcsTitle: 'c3-chart-arcs-title',\n chartArcsBackground: 'c3-chart-arcs-background',\n chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n selectedCircle: 'c3-selected-circle',\n selectedCircles: 'c3-selected-circles',\n eventRect: 'c3-event-rect',\n eventRects: 'c3-event-rects',\n eventRectsSingle: 'c3-event-rects-single',\n eventRectsMultiple: 'c3-event-rects-multiple',\n zoomRect: 'c3-zoom-rect',\n brush: 'c3-brush',\n dragZoom: 'c3-drag-zoom',\n focused: 'c3-focused',\n defocused: 'c3-defocused',\n region: 'c3-region',\n regions: 'c3-regions',\n title: 'c3-title',\n tooltipContainer: 'c3-tooltip-container',\n tooltip: 'c3-tooltip',\n tooltipName: 'c3-tooltip-name',\n shape: 'c3-shape',\n shapes: 'c3-shapes',\n line: 'c3-line',\n lines: 'c3-lines',\n bar: 'c3-bar',\n bars: 'c3-bars',\n circle: 'c3-circle',\n circles: 'c3-circles',\n arc: 'c3-arc',\n arcLabelLine: 'c3-arc-label-line',\n arcs: 'c3-arcs',\n area: 'c3-area',\n areas: 'c3-areas',\n empty: 'c3-empty',\n text: 'c3-text',\n texts: 'c3-texts',\n gaugeValue: 'c3-gauge-value',\n grid: 'c3-grid',\n gridLines: 'c3-grid-lines',\n xgrid: 'c3-xgrid',\n xgrids: 'c3-xgrids',\n xgridLine: 'c3-xgrid-line',\n xgridLines: 'c3-xgrid-lines',\n xgridFocus: 'c3-xgrid-focus',\n ygrid: 'c3-ygrid',\n ygrids: 'c3-ygrids',\n ygridLine: 'c3-ygrid-line',\n ygridLines: 'c3-ygrid-lines',\n colorScale: 'c3-colorscale',\n stanfordElements: 'c3-stanford-elements',\n stanfordLine: 'c3-stanford-line',\n stanfordLines: 'c3-stanford-lines',\n stanfordRegion: 'c3-stanford-region',\n stanfordRegions: 'c3-stanford-regions',\n stanfordText: 'c3-stanford-text',\n stanfordTexts: 'c3-stanford-texts',\n axis: 'c3-axis',\n axisX: 'c3-axis-x',\n axisXLabel: 'c3-axis-x-label',\n axisY: 'c3-axis-y',\n axisYLabel: 'c3-axis-y-label',\n axisY2: 'c3-axis-y2',\n axisY2Label: 'c3-axis-y2-label',\n legendBackground: 'c3-legend-background',\n legendItem: 'c3-legend-item',\n legendItemEvent: 'c3-legend-item-event',\n legendItemTile: 'c3-legend-item-tile',\n legendItemHidden: 'c3-legend-item-hidden',\n legendItemFocused: 'c3-legend-item-focused',\n dragarea: 'c3-dragarea',\n EXPANDED: '_expanded_',\n SELECTED: '_selected_',\n INCLUDED: '_included_'\n };\n\n var asHalfPixel = function asHalfPixel(n) {\n return Math.ceil(n) + 0.5;\n };\n var ceil10 = function ceil10(v) {\n return Math.ceil(v / 10) * 10;\n };\n var diffDomain = function diffDomain(d) {\n return d[1] - d[0];\n };\n var getOption = function getOption(options, key, defaultValue) {\n return isDefined(options[key]) ? options[key] : defaultValue;\n };\n var getPathBox = function getPathBox(path) {\n var box = path.getBoundingClientRect(),\n items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n minX = items[0].x,\n minY = Math.min(items[0].y, items[1].y);\n return {\n x: minX,\n y: minY,\n width: box.width,\n height: box.height\n };\n };\n var hasValue = function hasValue(dict, value) {\n var found = false;\n Object.keys(dict).forEach(function (key) {\n if (dict[key] === value) {\n found = true;\n }\n });\n return found;\n };\n var isArray = function isArray(o) {\n return Array.isArray(o);\n };\n var isDefined = function isDefined(v) {\n return typeof v !== 'undefined';\n };\n var isEmpty = function isEmpty(o) {\n return typeof o === 'undefined' || o === null || isString(o) && o.length === 0 || _typeof(o) === 'object' && Object.keys(o).length === 0;\n };\n var isFunction = function isFunction(o) {\n return typeof o === 'function';\n };\n var isString = function isString(o) {\n return typeof o === 'string';\n };\n var isUndefined = function isUndefined(v) {\n return typeof v === 'undefined';\n };\n var isValue = function isValue(v) {\n return v || v === 0;\n };\n var notEmpty = function notEmpty(o) {\n return !isEmpty(o);\n };\n var sanitise = function sanitise(str) {\n return typeof str === 'string' ? str.replace(//g, '>') : str;\n };\n\n var Axis = function Axis(owner) {\n _classCallCheck(this, Axis);\n\n this.owner = owner;\n this.d3 = owner.d3;\n this.internal = AxisInternal;\n };\n\n Axis.prototype.init = function init() {\n var $$ = this.owner,\n config = $$.config,\n main = $$.main;\n $$.axes.x = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisX).attr(\"clip-path\", config.axis_x_inner ? \"\" : $$.clipPathForXAxis).attr(\"transform\", $$.getTranslate('x')).style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n $$.axes.x.append(\"text\").attr(\"class\", CLASS.axisXLabel).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n $$.axes.y = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY).attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis).attr(\"transform\", $$.getTranslate('y')).style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n $$.axes.y.append(\"text\").attr(\"class\", CLASS.axisYLabel).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n $$.axes.y2 = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2) // clip-path?\n .attr(\"transform\", $$.getTranslate('y2')).style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n $$.axes.y2.append(\"text\").attr(\"class\", CLASS.axisY2Label).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n };\n\n Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n isCategory: $$.isCategorized(),\n withOuterTick: withOuterTick,\n tickMultiline: config.axis_x_tick_multiline,\n tickMultilineMax: config.axis_x_tick_multiline ? Number(config.axis_x_tick_multilineMax) : 0,\n tickWidth: config.axis_x_tick_width,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n withoutTransition: withoutTransition\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient);\n\n if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n tickValues = tickValues.map(function (v) {\n return $$.parseDate(v);\n });\n } // Set tick\n\n\n axis.tickFormat(tickFormat).tickValues(tickValues);\n\n if ($$.isCategorized()) {\n axis.tickCentered(config.axis_x_tick_centered);\n\n if (isEmpty(config.axis_x_tick_culling)) {\n config.axis_x_tick_culling = false;\n }\n }\n\n return axis;\n };\n\n Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n var $$ = this.owner,\n config = $$.config,\n tickValues;\n\n if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n }\n\n if (axis) {\n axis.tickValues(tickValues);\n } else {\n $$.xAxis.tickValues(tickValues);\n $$.subXAxis.tickValues(tickValues);\n }\n\n return tickValues;\n };\n\n Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n withOuterTick: withOuterTick,\n withoutTransition: withoutTransition,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat);\n\n if ($$.isTimeSeriesY()) {\n axis.ticks(config.axis_y_tick_time_type, config.axis_y_tick_time_interval);\n } else {\n axis.tickValues(tickValues);\n }\n\n return axis;\n };\n\n Axis.prototype.getId = function getId(id) {\n var config = this.owner.config;\n return id in config.data_axes ? config.data_axes[id] : 'y';\n };\n\n Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {\n // #2251 previously set any negative values to a whole number,\n // however both should be truncated according to the users format specification\n var $$ = this.owner,\n config = $$.config;\n var format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) {\n return v;\n };\n\n if (config.axis_x_tick_format) {\n if (isFunction(config.axis_x_tick_format)) {\n format = config.axis_x_tick_format;\n } else if ($$.isTimeSeries()) {\n format = function format(date) {\n return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n };\n }\n }\n\n return isFunction(format) ? function (v) {\n return format.call($$, v);\n } : format;\n };\n\n Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {\n return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n };\n\n Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n };\n\n Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n };\n\n Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n };\n\n Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n var $$ = this.owner,\n config = $$.config,\n option;\n\n if (axisId === 'y') {\n option = config.axis_y_label;\n } else if (axisId === 'y2') {\n option = config.axis_y2_label;\n } else if (axisId === 'x') {\n option = config.axis_x_label;\n }\n\n return option;\n };\n\n Axis.prototype.getLabelText = function getLabelText(axisId) {\n var option = this.getLabelOptionByAxisId(axisId);\n return isString(option) ? option : option ? option.text : null;\n };\n\n Axis.prototype.setLabelText = function setLabelText(axisId, text) {\n var $$ = this.owner,\n config = $$.config,\n option = this.getLabelOptionByAxisId(axisId);\n\n if (isString(option)) {\n if (axisId === 'y') {\n config.axis_y_label = text;\n } else if (axisId === 'y2') {\n config.axis_y2_label = text;\n } else if (axisId === 'x') {\n config.axis_x_label = text;\n }\n } else if (option) {\n option.text = text;\n }\n };\n\n Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n var option = this.getLabelOptionByAxisId(axisId),\n position = option && _typeof(option) === 'object' && option.position ? option.position : defaultPosition;\n return {\n isInner: position.indexOf('inner') >= 0,\n isOuter: position.indexOf('outer') >= 0,\n isLeft: position.indexOf('left') >= 0,\n isCenter: position.indexOf('center') >= 0,\n isRight: position.indexOf('right') >= 0,\n isTop: position.indexOf('top') >= 0,\n isMiddle: position.indexOf('middle') >= 0,\n isBottom: position.indexOf('bottom') >= 0\n };\n };\n\n Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {\n return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n };\n\n Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {\n return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n\n Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n\n Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {\n return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n };\n\n Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {\n return this.getLabelText('x');\n };\n\n Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {\n return this.getLabelText('y');\n };\n\n Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {\n return this.getLabelText('y2');\n };\n\n Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n var $$ = this.owner;\n\n if (forHorizontal) {\n return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n } else {\n return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n }\n };\n\n Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n } else {\n return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n }\n };\n\n Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n } else {\n return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n }\n };\n\n Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {\n return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {\n return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {\n var $$ = this.owner,\n config = $$.config,\n position = this.getXAxisLabelPosition();\n\n if (config.axis_rotated) {\n return position.isInner ? \"1.2em\" : -25 - ($$.config.axis_x_inner ? 0 : this.getMaxTickWidth('x'));\n } else {\n return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n }\n };\n\n Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {\n var $$ = this.owner,\n position = this.getYAxisLabelPosition();\n\n if ($$.config.axis_rotated) {\n return position.isInner ? \"-0.5em\" : \"3em\";\n } else {\n return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : this.getMaxTickWidth('y') + 10);\n }\n };\n\n Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {\n var $$ = this.owner,\n position = this.getY2AxisLabelPosition();\n\n if ($$.config.axis_rotated) {\n return position.isInner ? \"1.2em\" : \"-2.2em\";\n } else {\n return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : this.getMaxTickWidth('y2') + 15);\n }\n };\n\n Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n var $$ = this.owner,\n config = $$.config,\n maxWidth = 0,\n targetsToShow,\n scale,\n axis,\n dummy,\n svg;\n\n if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n return $$.currentMaxTickWidths[id];\n }\n\n if ($$.svg) {\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n\n if (id === 'y') {\n scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n } else if (id === 'y2') {\n scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n } else {\n scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n this.updateXAxisTickValues(targetsToShow, axis);\n }\n\n dummy = $$.d3.select('body').append('div').classed('c3', true);\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), svg.append('g').call(axis).each(function () {\n $$.d3.select(this).selectAll('text').each(function () {\n var box = this.getBoundingClientRect();\n\n if (maxWidth < box.width) {\n maxWidth = box.width;\n }\n });\n dummy.remove();\n });\n }\n\n $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n return $$.currentMaxTickWidths[id];\n };\n\n Axis.prototype.updateLabels = function updateLabels(withTransition) {\n var $$ = this.owner;\n var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n (withTransition ? axisXLabel.transition() : axisXLabel).attr(\"x\", this.xForXAxisLabel.bind(this)).attr(\"dx\", this.dxForXAxisLabel.bind(this)).attr(\"dy\", this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this));\n (withTransition ? axisYLabel.transition() : axisYLabel).attr(\"x\", this.xForYAxisLabel.bind(this)).attr(\"dx\", this.dxForYAxisLabel.bind(this)).attr(\"dy\", this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this));\n (withTransition ? axisY2Label.transition() : axisY2Label).attr(\"x\", this.xForY2AxisLabel.bind(this)).attr(\"dx\", this.dxForY2AxisLabel.bind(this)).attr(\"dy\", this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this));\n };\n\n Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n var p = typeof padding === 'number' ? padding : padding[key];\n\n if (!isValue(p)) {\n return defaultValue;\n }\n\n if (padding.unit === 'ratio') {\n return padding[key] * domainLength;\n } // assume padding is pixels if unit is not specified\n\n\n return this.convertPixelsToAxisPadding(p, domainLength);\n };\n\n Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n var $$ = this.owner,\n length = $$.config.axis_rotated ? $$.width : $$.height;\n return domainLength * (pixels / length);\n };\n\n Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n var tickValues = values,\n targetCount,\n start,\n end,\n count,\n interval,\n i,\n tickValue;\n\n if (tickCount) {\n targetCount = isFunction(tickCount) ? tickCount() : tickCount; // compute ticks according to tickCount\n\n if (targetCount === 1) {\n tickValues = [values[0]];\n } else if (targetCount === 2) {\n tickValues = [values[0], values[values.length - 1]];\n } else if (targetCount > 2) {\n count = targetCount - 2;\n start = values[0];\n end = values[values.length - 1];\n interval = (end - start) / (count + 1); // re-construct unique values\n\n tickValues = [start];\n\n for (i = 0; i < count; i++) {\n tickValue = +start + interval * (i + 1);\n tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n }\n\n tickValues.push(end);\n }\n }\n\n if (!forTimeSeries) {\n tickValues = tickValues.sort(function (a, b) {\n return a - b;\n });\n }\n\n return tickValues;\n };\n\n Axis.prototype.generateTransitions = function generateTransitions(duration) {\n var $$ = this.owner,\n axes = $$.axes;\n return {\n axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n };\n };\n\n Axis.prototype.redraw = function redraw(duration, isHidden) {\n var $$ = this.owner,\n transition = duration ? $$.d3.transition().duration(duration) : null;\n $$.axes.x.style(\"opacity\", isHidden ? 0 : 1).call($$.xAxis, transition);\n $$.axes.y.style(\"opacity\", isHidden ? 0 : 1).call($$.yAxis, transition);\n $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1).call($$.y2Axis, transition);\n $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1).call($$.subXAxis, transition);\n };\n\n var c3 = {\n version: \"0.7.2\",\n chart: {\n fn: Chart.prototype,\n internal: {\n fn: ChartInternal.prototype,\n axis: {\n fn: Axis.prototype,\n internal: {\n fn: AxisInternal.prototype\n }\n }\n }\n },\n generate: function generate(config) {\n return new Chart(config);\n }\n };\n\n ChartInternal.prototype.beforeInit = function () {// can do something\n };\n\n ChartInternal.prototype.afterInit = function () {// can do something\n };\n\n ChartInternal.prototype.init = function () {\n var $$ = this,\n config = $$.config;\n $$.initParams();\n\n if (config.data_url) {\n $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n } else if (config.data_json) {\n $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n } else if (config.data_rows) {\n $$.initWithData($$.convertRowsToData(config.data_rows));\n } else if (config.data_columns) {\n $$.initWithData($$.convertColumnsToData(config.data_columns));\n } else {\n throw Error('url or json or rows or columns is required.');\n }\n };\n\n ChartInternal.prototype.initParams = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config; // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n\n $$.clipId = \"c3-\" + +new Date() + '-clip';\n $$.clipIdForXAxis = $$.clipId + '-xaxis';\n $$.clipIdForYAxis = $$.clipId + '-yaxis';\n $$.clipIdForGrid = $$.clipId + '-grid';\n $$.clipIdForSubchart = $$.clipId + '-subchart';\n $$.clipPath = $$.getClipPath($$.clipId);\n $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis);\n $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid);\n $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart);\n $$.dragStart = null;\n $$.dragging = false;\n $$.flowing = false;\n $$.cancelClick = false;\n $$.mouseover = false;\n $$.transiting = false;\n $$.color = $$.generateColor();\n $$.levelColor = $$.generateLevelColor();\n $$.dataTimeParse = (config.data_xLocaltime ? d3.timeParse : d3.utcParse)($$.config.data_xFormat);\n $$.axisTimeFormat = config.axis_x_localtime ? d3.timeFormat : d3.utcFormat;\n\n $$.defaultAxisTimeFormat = function (date) {\n if (date.getMilliseconds()) {\n return d3.timeFormat(\".%L\")(date);\n }\n\n if (date.getSeconds()) {\n return d3.timeFormat(\":%S\")(date);\n }\n\n if (date.getMinutes()) {\n return d3.timeFormat(\"%I:%M\")(date);\n }\n\n if (date.getHours()) {\n return d3.timeFormat(\"%I %p\")(date);\n }\n\n if (date.getDay() && date.getDate() !== 1) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n if (date.getDate() !== 1) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n if (date.getMonth()) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n return d3.timeFormat(\"%Y/%-m/%-d\")(date);\n };\n\n $$.hiddenTargetIds = [];\n $$.hiddenLegendIds = [];\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n $$.xOrient = config.axis_rotated ? config.axis_x_inner ? \"right\" : \"left\" : config.axis_x_inner ? \"top\" : \"bottom\";\n $$.yOrient = config.axis_rotated ? config.axis_y_inner ? \"top\" : \"bottom\" : config.axis_y_inner ? \"right\" : \"left\";\n $$.y2Orient = config.axis_rotated ? config.axis_y2_inner ? \"bottom\" : \"top\" : config.axis_y2_inner ? \"left\" : \"right\";\n $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n $$.isLegendRight = config.legend_position === 'right';\n $$.isLegendInset = config.legend_position === 'inset';\n $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n $$.legendStep = 0;\n $$.legendItemWidth = 0;\n $$.legendItemHeight = 0;\n $$.currentMaxTickWidths = {\n x: 0,\n y: 0,\n y2: 0\n };\n $$.rotated_padding_left = 30;\n $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n $$.rotated_padding_top = 5;\n $$.withoutFadeIn = {};\n $$.intervalForObserveInserted = undefined;\n $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n };\n\n ChartInternal.prototype.initChartElements = function () {\n if (this.initBar) {\n this.initBar();\n }\n\n if (this.initLine) {\n this.initLine();\n }\n\n if (this.initArc) {\n this.initArc();\n }\n\n if (this.initGauge) {\n this.initGauge();\n }\n\n if (this.initText) {\n this.initText();\n }\n };\n\n ChartInternal.prototype.initWithData = function (data) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n var defs,\n main,\n binding = true;\n $$.axis = new Axis($$);\n\n if (!config.bindto) {\n $$.selectChart = d3.selectAll([]);\n } else if (typeof config.bindto.node === 'function') {\n $$.selectChart = config.bindto;\n } else {\n $$.selectChart = d3.select(config.bindto);\n }\n\n if ($$.selectChart.empty()) {\n $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n $$.observeInserted($$.selectChart);\n binding = false;\n }\n\n $$.selectChart.html(\"\").classed(\"c3\", true); // Init data as targets\n\n $$.data.xs = {};\n $$.data.targets = $$.convertDataToTargets(data);\n\n if (config.data_filter) {\n $$.data.targets = $$.data.targets.filter(config.data_filter);\n } // Set targets to hide if needed\n\n\n if (config.data_hide) {\n $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n }\n\n if (config.legend_hide) {\n $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n }\n\n if ($$.isStanfordGraphType()) {\n $$.initStanfordData();\n } // Init sizes and scales\n\n\n $$.updateSizes();\n $$.updateScales(); // Set domains for each scale\n\n $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n $$.subX.domain($$.x.domain());\n $$.subY.domain($$.y.domain());\n $$.subY2.domain($$.y2.domain()); // Save original x domain for zoom update\n\n $$.orgXDomain = $$.x.domain();\n /*-- Basic Elements --*/\n // Define svgs\n\n $$.svg = $$.selectChart.append(\"svg\").style(\"overflow\", \"hidden\").on('mouseenter', function () {\n return config.onmouseover.call($$);\n }).on('mouseleave', function () {\n return config.onmouseout.call($$);\n });\n\n if ($$.config.svg_classname) {\n $$.svg.attr('class', $$.config.svg_classname);\n } // Define defs\n\n\n defs = $$.svg.append(\"defs\");\n $$.clipChart = $$.appendClip(defs, $$.clipId);\n $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n $$.updateSvgSize(); // Define regions\n\n main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n if ($$.initPie) {\n $$.initPie();\n }\n\n if ($$.initDragZoom) {\n $$.initDragZoom();\n }\n\n if ($$.initSubchart) {\n $$.initSubchart();\n }\n\n if ($$.initTooltip) {\n $$.initTooltip();\n }\n\n if ($$.initLegend) {\n $$.initLegend();\n }\n\n if ($$.initTitle) {\n $$.initTitle();\n }\n\n if ($$.initZoom) {\n $$.initZoom();\n }\n\n if ($$.isStanfordGraphType()) {\n $$.drawColorScale();\n } // Update selection based on size and scale\n // TODO: currently this must be called after initLegend because of update of sizes, but it should be done in initSubchart.\n\n\n if ($$.initSubchartBrush) {\n $$.initSubchartBrush();\n }\n /*-- Main Region --*/\n // text when empty\n\n\n main.append(\"text\").attr(\"class\", CLASS.text + ' ' + CLASS.empty).attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n // Regions\n\n $$.initRegion(); // Grids\n\n $$.initGrid(); // Define g for chart area\n\n main.append('g').attr(\"clip-path\", $$.clipPath).attr('class', CLASS.chart); // Grid lines\n\n if (config.grid_lines_front) {\n $$.initGridLines();\n }\n\n $$.initStanfordElements(); // Cover whole with rects for events\n\n $$.initEventRect(); // Define g for chart\n\n $$.initChartElements(); // Add Axis\n\n $$.axis.init(); // Set targets\n\n $$.updateTargets($$.data.targets); // Set default extent if defined\n\n if (config.axis_x_selection) {\n $$.brush.selectionAsValue($$.getDefaultSelection());\n } // Draw with targets\n\n\n if (binding) {\n $$.updateDimension();\n $$.config.oninit.call($$);\n $$.redraw({\n withTransition: false,\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransitionForAxis: false\n });\n } // Bind to resize event\n\n\n $$.bindResize(); // Bind to window focus event\n\n $$.bindWindowFocus(); // export element of the chart\n\n $$.api.element = $$.selectChart.node();\n };\n\n ChartInternal.prototype.smoothLines = function (el, type) {\n var $$ = this;\n\n if (type === 'grid') {\n el.each(function () {\n var g = $$.d3.select(this),\n x1 = g.attr('x1'),\n x2 = g.attr('x2'),\n y1 = g.attr('y1'),\n y2 = g.attr('y2');\n g.attr({\n 'x1': Math.ceil(x1),\n 'x2': Math.ceil(x2),\n 'y1': Math.ceil(y1),\n 'y2': Math.ceil(y2)\n });\n });\n }\n };\n\n ChartInternal.prototype.updateSizes = function () {\n var $$ = this,\n config = $$.config;\n var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n hasArc = $$.hasArcType(),\n xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n subchartHeight = config.subchart_show && !hasArc ? config.subchart_size_height + xAxisHeight : 0;\n $$.currentWidth = $$.getCurrentWidth();\n $$.currentHeight = $$.getCurrentHeight(); // for main\n\n $$.margin = config.axis_rotated ? {\n top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n } : {\n top: 4 + $$.getCurrentPaddingTop(),\n // for top tick text\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n }; // for subchart\n\n $$.margin2 = config.axis_rotated ? {\n top: $$.margin.top,\n right: NaN,\n bottom: 20 + legendHeightForBottom,\n left: $$.rotated_padding_left\n } : {\n top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n right: NaN,\n bottom: xAxisHeight + legendHeightForBottom,\n left: $$.margin.left\n }; // for legend\n\n $$.margin3 = {\n top: 0,\n right: NaN,\n bottom: 0,\n left: 0\n };\n\n if ($$.updateSizeForLegend) {\n $$.updateSizeForLegend(legendHeight, legendWidth);\n }\n\n $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n\n if ($$.width < 0) {\n $$.width = 0;\n }\n\n if ($$.height < 0) {\n $$.height = 0;\n }\n\n $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n\n if ($$.width2 < 0) {\n $$.width2 = 0;\n }\n\n if ($$.height2 < 0) {\n $$.height2 = 0;\n } // for arc\n\n\n $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n\n if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n }\n\n if ($$.updateRadius) {\n $$.updateRadius();\n }\n\n if ($$.isLegendRight && hasArc) {\n $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n }\n };\n\n ChartInternal.prototype.updateTargets = function (targets) {\n var $$ = this;\n /*-- Main --*/\n //-- Text --//\n\n $$.updateTargetsForText(targets); //-- Bar --//\n\n $$.updateTargetsForBar(targets); //-- Line --//\n\n $$.updateTargetsForLine(targets); //-- Arc --//\n\n if ($$.hasArcType() && $$.updateTargetsForArc) {\n $$.updateTargetsForArc(targets);\n }\n /*-- Sub --*/\n\n\n if ($$.updateTargetsForSubchart) {\n $$.updateTargetsForSubchart(targets);\n } // Fade-in each chart\n\n\n $$.showTargets();\n };\n\n ChartInternal.prototype.showTargets = function () {\n var $$ = this;\n $$.svg.selectAll('.' + CLASS.target).filter(function (d) {\n return $$.isTargetToShow(d.id);\n }).transition().duration($$.config.transition_duration).style(\"opacity\", 1);\n };\n\n ChartInternal.prototype.redraw = function (options, transitions) {\n var $$ = this,\n main = $$.main,\n d3 = $$.d3,\n config = $$.config;\n var areaIndices = $$.getShapeIndices($$.isAreaType),\n barIndices = $$.getShapeIndices($$.isBarType),\n lineIndices = $$.getShapeIndices($$.isLineType);\n var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension, withUpdateXAxis;\n var hideAxis = $$.hasArcType();\n var drawArea, drawBar, drawLine, xForText, yForText;\n var duration, durationForExit, durationForAxis;\n var transitionsToWait, waitForDraw, flow, transition;\n var targetsToShow = $$.filterTargetsToShow($$.data.targets),\n tickValues,\n i,\n intervalForCulling,\n xDomainForZoom;\n var xv = $$.xv.bind($$),\n cx,\n cy;\n options = options || {};\n withY = getOption(options, \"withY\", true);\n withSubchart = getOption(options, \"withSubchart\", true);\n withTransition = getOption(options, \"withTransition\", true);\n withTransform = getOption(options, \"withTransform\", false);\n withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n withLegend = getOption(options, \"withLegend\", false);\n withEventRect = getOption(options, \"withEventRect\", true);\n withDimension = getOption(options, \"withDimension\", true);\n withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n duration = withTransition ? config.transition_duration : 0;\n durationForExit = withTransitionForExit ? duration : 0;\n durationForAxis = withTransitionForAxis ? duration : 0;\n transitions = transitions || $$.axis.generateTransitions(durationForAxis); // update legend and transform each g\n\n if (withLegend && config.legend_show) {\n $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n } else if (withDimension) {\n // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n // no need to update axis in it because they will be updated in redraw()\n $$.updateDimension(true);\n } // MEMO: needed for grids calculation\n\n\n if ($$.isCategorized() && targetsToShow.length === 0) {\n $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n }\n\n if (targetsToShow.length) {\n $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n\n if (!config.axis_x_tick_values) {\n tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n }\n } else {\n $$.xAxis.tickValues([]);\n $$.subXAxis.tickValues([]);\n }\n\n if (config.zoom_rescale && !options.flow) {\n xDomainForZoom = $$.x.orgDomain();\n }\n\n $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n }\n\n if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n } // axes\n\n\n $$.axis.redraw(durationForAxis, hideAxis); // Update axis label\n\n $$.axis.updateLabels(withTransition); // show/hide if manual culling needed\n\n if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n if (config.axis_x_tick_culling && tickValues) {\n for (i = 1; i < tickValues.length; i++) {\n if (tickValues.length / i < config.axis_x_tick_culling_max) {\n intervalForCulling = i;\n break;\n }\n }\n\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n var index = tickValues.indexOf(e);\n\n if (index >= 0) {\n d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n }\n });\n } else {\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n }\n } // setup drawer - MEMO: these must be called after axis updated\n\n\n drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false); // update circleY based on updated parameters\n\n $$.updateCircleY(); // generate circle x/y functions depending on updated params\n\n cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$); // Update sub domain\n\n if (withY) {\n $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n } // xgrid focus\n\n\n $$.updateXgridFocus(); // Data empty label positioning and text.\n\n main.select(\"text.\" + CLASS.text + '.' + CLASS.empty).attr(\"x\", $$.width / 2).attr(\"y\", $$.height / 2).text(config.data_empty_label_text).transition().style('opacity', targetsToShow.length ? 0 : 1); // event rect\n\n if (withEventRect) {\n $$.redrawEventRect();\n } // grid\n\n\n $$.updateGrid(duration);\n $$.updateStanfordElements(duration); // rect for regions\n\n $$.updateRegion(duration); // bars\n\n $$.updateBar(durationForExit); // lines, areas and circles\n\n $$.updateLine(durationForExit);\n $$.updateArea(durationForExit);\n $$.updateCircle(cx, cy); // text\n\n if ($$.hasDataLabel()) {\n $$.updateText(xForText, yForText, durationForExit);\n } // title\n\n\n if ($$.redrawTitle) {\n $$.redrawTitle();\n } // arc\n\n\n if ($$.redrawArc) {\n $$.redrawArc(duration, durationForExit, withTransform);\n } // subchart\n\n\n if ($$.redrawSubchart) {\n $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n }\n\n if ($$.isStanfordGraphType()) {\n $$.drawColorScale();\n } // circles for select\n\n\n main.selectAll('.' + CLASS.selectedCircles).filter($$.isBarType.bind($$)).selectAll('circle').remove();\n\n if (options.flow) {\n flow = $$.generateFlow({\n targets: targetsToShow,\n flow: options.flow,\n duration: options.flow.duration,\n drawBar: drawBar,\n drawLine: drawLine,\n drawArea: drawArea,\n cx: cx,\n cy: cy,\n xv: xv,\n xForText: xForText,\n yForText: yForText\n });\n }\n\n if ($$.isTabVisible()) {\n // Only use transition if tab visible. See #938.\n if (duration) {\n // transition should be derived from one transition\n transition = d3.transition().duration(duration);\n transitionsToWait = [];\n [$$.redrawBar(drawBar, true, transition), $$.redrawLine(drawLine, true, transition), $$.redrawArea(drawArea, true, transition), $$.redrawCircle(cx, cy, true, transition), $$.redrawText(xForText, yForText, options.flow, true, transition), $$.redrawRegion(true, transition), $$.redrawGrid(true, transition)].forEach(function (transitions) {\n transitions.forEach(function (transition) {\n transitionsToWait.push(transition);\n });\n }); // Wait for end of transitions to call flow and onrendered callback\n\n waitForDraw = $$.generateWait();\n transitionsToWait.forEach(function (t) {\n waitForDraw.add(t);\n });\n waitForDraw(function () {\n if (flow) {\n flow();\n }\n\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n });\n } else {\n $$.redrawBar(drawBar);\n $$.redrawLine(drawLine);\n $$.redrawArea(drawArea);\n $$.redrawCircle(cx, cy);\n $$.redrawText(xForText, yForText, options.flow);\n $$.redrawRegion();\n $$.redrawGrid();\n\n if (flow) {\n flow();\n }\n\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n }\n } // update fadein condition\n\n\n $$.mapToIds($$.data.targets).forEach(function (id) {\n $$.withoutFadeIn[id] = true;\n });\n };\n\n ChartInternal.prototype.updateAndRedraw = function (options) {\n var $$ = this,\n config = $$.config,\n transitions;\n options = options || {}; // same with redraw\n\n options.withTransition = getOption(options, \"withTransition\", true);\n options.withTransform = getOption(options, \"withTransform\", false);\n options.withLegend = getOption(options, \"withLegend\", false); // NOT same with redraw\n\n options.withUpdateXDomain = getOption(options, \"withUpdateXDomain\", true);\n options.withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", true);\n options.withTransitionForExit = false;\n options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition); // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n\n $$.updateSizes(); // MEMO: called in updateLegend in redraw if withLegend\n\n if (!(options.withLegend && config.legend_show)) {\n transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0); // Update scales\n\n $$.updateScales();\n $$.updateSvgSize(); // Update g positions\n\n $$.transformAll(options.withTransitionForTransform, transitions);\n } // Draw with new sizes & scales\n\n\n $$.redraw(options, transitions);\n };\n\n ChartInternal.prototype.redrawWithoutRescale = function () {\n this.redraw({\n withY: false,\n withSubchart: false,\n withEventRect: false,\n withTransitionForAxis: false\n });\n };\n\n ChartInternal.prototype.isTimeSeries = function () {\n return this.config.axis_x_type === 'timeseries';\n };\n\n ChartInternal.prototype.isCategorized = function () {\n return this.config.axis_x_type.indexOf('categor') >= 0;\n };\n\n ChartInternal.prototype.isCustomX = function () {\n var $$ = this,\n config = $$.config;\n return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n };\n\n ChartInternal.prototype.isTimeSeriesY = function () {\n return this.config.axis_y_type === 'timeseries';\n };\n\n ChartInternal.prototype.getTranslate = function (target) {\n var $$ = this,\n config = $$.config,\n x,\n y;\n\n if (target === 'main') {\n x = asHalfPixel($$.margin.left);\n y = asHalfPixel($$.margin.top);\n } else if (target === 'context') {\n x = asHalfPixel($$.margin2.left);\n y = asHalfPixel($$.margin2.top);\n } else if (target === 'legend') {\n x = $$.margin3.left;\n y = $$.margin3.top;\n } else if (target === 'x') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height;\n } else if (target === 'y') {\n x = 0;\n y = config.axis_rotated ? $$.height : 0;\n } else if (target === 'y2') {\n x = config.axis_rotated ? 0 : $$.width;\n y = config.axis_rotated ? 1 : 0;\n } else if (target === 'subx') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height2;\n } else if (target === 'arc') {\n x = $$.arcWidth / 2;\n y = $$.arcHeight / 2 - ($$.hasType('gauge') ? 6 : 0); // to prevent wrong display of min and max label\n }\n\n return \"translate(\" + x + \",\" + y + \")\";\n };\n\n ChartInternal.prototype.initialOpacity = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n };\n\n ChartInternal.prototype.initialOpacityForCircle = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n };\n\n ChartInternal.prototype.opacityForCircle = function (d) {\n var isPointShouldBeShown = isFunction(this.config.point_show) ? this.config.point_show(d) : this.config.point_show;\n var opacity = isPointShouldBeShown || this.isStanfordType(d) ? 1 : 0;\n return isValue(d.value) ? this.isScatterType(d) ? 0.5 : opacity : 0;\n };\n\n ChartInternal.prototype.opacityForText = function () {\n return this.hasDataLabel() ? 1 : 0;\n };\n\n ChartInternal.prototype.xx = function (d) {\n return d ? this.x(d.x) : null;\n };\n\n ChartInternal.prototype.xvCustom = function (d, xyValue) {\n var $$ = this,\n value = xyValue ? d[xyValue] : d.value;\n\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n\n return Math.ceil($$.x(value));\n };\n\n ChartInternal.prototype.yvCustom = function (d, xyValue) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y,\n value = xyValue ? d[xyValue] : d.value;\n return Math.ceil(yScale(value));\n };\n\n ChartInternal.prototype.xv = function (d) {\n var $$ = this,\n value = d.value;\n\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n\n return Math.ceil($$.x(value));\n };\n\n ChartInternal.prototype.yv = function (d) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n return Math.ceil(yScale(d.value));\n };\n\n ChartInternal.prototype.subxx = function (d) {\n return d ? this.subX(d.x) : null;\n };\n\n ChartInternal.prototype.transformMain = function (withTransition, transitions) {\n var $$ = this,\n xAxis,\n yAxis,\n y2Axis;\n\n if (transitions && transitions.axisX) {\n xAxis = transitions.axisX;\n } else {\n xAxis = $$.main.select('.' + CLASS.axisX);\n\n if (withTransition) {\n xAxis = xAxis.transition();\n }\n }\n\n if (transitions && transitions.axisY) {\n yAxis = transitions.axisY;\n } else {\n yAxis = $$.main.select('.' + CLASS.axisY);\n\n if (withTransition) {\n yAxis = yAxis.transition();\n }\n }\n\n if (transitions && transitions.axisY2) {\n y2Axis = transitions.axisY2;\n } else {\n y2Axis = $$.main.select('.' + CLASS.axisY2);\n\n if (withTransition) {\n y2Axis = y2Axis.transition();\n }\n }\n\n (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n xAxis.attr(\"transform\", $$.getTranslate('x'));\n yAxis.attr(\"transform\", $$.getTranslate('y'));\n y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n };\n\n ChartInternal.prototype.transformAll = function (withTransition, transitions) {\n var $$ = this;\n $$.transformMain(withTransition, transitions);\n\n if ($$.config.subchart_show) {\n $$.transformContext(withTransition, transitions);\n }\n\n if ($$.legend) {\n $$.transformLegend(withTransition);\n }\n };\n\n ChartInternal.prototype.updateSvgSize = function () {\n var $$ = this,\n brush = $$.svg.select(\".c3-brush .overlay\");\n $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect').attr('width', $$.width).attr('height', $$.height);\n $$.svg.select('#' + $$.clipIdForXAxis).select('rect').attr('x', $$.getXAxisClipX.bind($$)).attr('y', $$.getXAxisClipY.bind($$)).attr('width', $$.getXAxisClipWidth.bind($$)).attr('height', $$.getXAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForYAxis).select('rect').attr('x', $$.getYAxisClipX.bind($$)).attr('y', $$.getYAxisClipY.bind($$)).attr('width', $$.getYAxisClipWidth.bind($$)).attr('height', $$.getYAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForSubchart).select('rect').attr('width', $$.width).attr('height', brush.size() ? brush.attr('height') : 0); // MEMO: parent div's height will be bigger than svg when \n\n $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n };\n\n ChartInternal.prototype.updateDimension = function (withoutAxis) {\n var $$ = this;\n\n if (!withoutAxis) {\n if ($$.config.axis_rotated) {\n $$.axes.x.call($$.xAxis);\n $$.axes.subx.call($$.subXAxis);\n } else {\n $$.axes.y.call($$.yAxis);\n $$.axes.y2.call($$.y2Axis);\n }\n }\n\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n $$.transformAll(false);\n };\n\n ChartInternal.prototype.observeInserted = function (selection) {\n var $$ = this,\n observer;\n\n if (typeof MutationObserver === 'undefined') {\n window.console.error(\"MutationObserver not defined.\");\n return;\n }\n\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'childList' && mutation.previousSibling) {\n observer.disconnect(); // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n\n $$.intervalForObserveInserted = window.setInterval(function () {\n // parentNode will NOT be null when completed\n if (selection.node().parentNode) {\n window.clearInterval($$.intervalForObserveInserted);\n $$.updateDimension();\n\n if ($$.brush) {\n $$.brush.update();\n }\n\n $$.config.oninit.call($$);\n $$.redraw({\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n selection.transition().style('opacity', 1);\n }\n }, 10);\n }\n });\n });\n observer.observe(selection.node(), {\n attributes: true,\n childList: true,\n characterData: true\n });\n };\n /**\n * Binds handlers to the window resize event.\n */\n\n\n ChartInternal.prototype.bindResize = function () {\n var $$ = this,\n config = $$.config;\n $$.resizeFunction = $$.generateResize(); // need to call .remove\n\n $$.resizeFunction.add(function () {\n config.onresize.call($$);\n });\n\n if (config.resize_auto) {\n $$.resizeFunction.add(function () {\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n $$.resizeTimeout = window.setTimeout(function () {\n delete $$.resizeTimeout;\n $$.updateAndRedraw({\n withUpdateXDomain: false,\n withUpdateOrgXDomain: false,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n\n if ($$.brush) {\n $$.brush.update();\n }\n }, 100);\n });\n }\n\n $$.resizeFunction.add(function () {\n config.onresized.call($$);\n });\n\n $$.resizeIfElementDisplayed = function () {\n // if element not displayed skip it\n if ($$.api == null || !$$.api.element.offsetParent) {\n return;\n }\n\n $$.resizeFunction();\n };\n\n if (window.attachEvent) {\n window.attachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.addEventListener) {\n window.addEventListener('resize', $$.resizeIfElementDisplayed, false);\n } else {\n // fallback to this, if this is a very old browser\n var wrapper = window.onresize;\n\n if (!wrapper) {\n // create a wrapper that will call all charts\n wrapper = $$.generateResize();\n } else if (!wrapper.add || !wrapper.remove) {\n // there is already a handler registered, make sure we call it too\n wrapper = $$.generateResize();\n wrapper.add(window.onresize);\n } // add this graph to the wrapper, we will be removed if the user calls destroy\n\n\n wrapper.add($$.resizeFunction);\n\n window.onresize = function () {\n // if element not displayed skip it\n if (!$$.api.element.offsetParent) {\n return;\n }\n\n wrapper();\n };\n }\n };\n /**\n * Binds handlers to the window focus event.\n */\n\n\n ChartInternal.prototype.bindWindowFocus = function () {\n var _this = this;\n\n if (this.windowFocusHandler) {\n // The handler is already set\n return;\n }\n\n this.windowFocusHandler = function () {\n _this.redraw();\n };\n\n window.addEventListener('focus', this.windowFocusHandler);\n };\n /**\n * Unbinds from the window focus event.\n */\n\n\n ChartInternal.prototype.unbindWindowFocus = function () {\n window.removeEventListener('focus', this.windowFocusHandler);\n delete this.windowFocusHandler;\n };\n\n ChartInternal.prototype.generateResize = function () {\n var resizeFunctions = [];\n\n function callResizeFunctions() {\n resizeFunctions.forEach(function (f) {\n f();\n });\n }\n\n callResizeFunctions.add = function (f) {\n resizeFunctions.push(f);\n };\n\n callResizeFunctions.remove = function (f) {\n for (var i = 0; i < resizeFunctions.length; i++) {\n if (resizeFunctions[i] === f) {\n resizeFunctions.splice(i, 1);\n break;\n }\n }\n };\n\n return callResizeFunctions;\n };\n\n ChartInternal.prototype.endall = function (transition, callback) {\n var n = 0;\n transition.each(function () {\n ++n;\n }).on(\"end\", function () {\n if (! --n) {\n callback.apply(this, arguments);\n }\n });\n };\n\n ChartInternal.prototype.generateWait = function () {\n var $$ = this;\n\n var transitionsToWait = [],\n f = function f(callback) {\n var timer = setInterval(function () {\n if (!$$.isTabVisible()) {\n return;\n }\n\n var done = 0;\n transitionsToWait.forEach(function (t) {\n if (t.empty()) {\n done += 1;\n return;\n }\n\n try {\n t.transition();\n } catch (e) {\n done += 1;\n }\n });\n\n if (done === transitionsToWait.length) {\n clearInterval(timer);\n\n if (callback) {\n callback();\n }\n }\n }, 50);\n };\n\n f.add = function (transition) {\n transitionsToWait.push(transition);\n };\n\n return f;\n };\n\n ChartInternal.prototype.parseDate = function (date) {\n var $$ = this,\n parsedDate;\n\n if (date instanceof Date) {\n parsedDate = date;\n } else if (typeof date === 'string') {\n parsedDate = $$.dataTimeParse(date);\n } else if (_typeof(date) === 'object') {\n parsedDate = new Date(+date);\n } else if (typeof date === 'number' && !isNaN(date)) {\n parsedDate = new Date(+date);\n }\n\n if (!parsedDate || isNaN(+parsedDate)) {\n window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n }\n\n return parsedDate;\n };\n\n ChartInternal.prototype.isTabVisible = function () {\n return !document.hidden;\n };\n\n ChartInternal.prototype.getPathBox = getPathBox;\n ChartInternal.prototype.CLASS = CLASS;\n\n /* jshint ignore:start */\n // SVGPathSeg API polyfill\n // https://github.com/progers/pathseg\n //\n // This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n // SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n // changes which were implemented in Firefox 43 and Chrome 46.\n (function () {\n\n if (!(\"SVGPathSeg\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\n this.pathSegType = type;\n this.pathSegTypeAsLetter = typeAsLetter;\n this._owningPathSegList = owningPathSegList;\n };\n\n window.SVGPathSeg.prototype.classname = \"SVGPathSeg\";\n window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\n window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\n window.SVGPathSeg.PATHSEG_ARC_REL = 11;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19; // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n\n window.SVGPathSeg.prototype._segmentChanged = function () {\n if (this._owningPathSegList) this._owningPathSegList.segmentChanged(this);\n };\n\n window.SVGPathSegClosePath = function (owningPathSegList) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n };\n\n window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegClosePath.prototype.toString = function () {\n return \"[object SVGPathSegClosePath]\";\n };\n\n window.SVGPathSegClosePath.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter;\n };\n\n window.SVGPathSegClosePath.prototype.clone = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegMovetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegMovetoAbs]\";\n };\n\n window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegMovetoAbs.prototype.clone = function () {\n return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegMovetoRel.prototype.toString = function () {\n return \"[object SVGPathSegMovetoRel]\";\n };\n\n window.SVGPathSegMovetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegMovetoRel.prototype.clone = function () {\n return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoAbs]\";\n };\n\n window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoRel]\";\n };\n\n window.SVGPathSegLinetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicAbs]\";\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicRel]\";\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticAbs]\";\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticRel]\";\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n\n window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegArcAbs.prototype.toString = function () {\n return \"[object SVGPathSegArcAbs]\";\n };\n\n window.SVGPathSegArcAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegArcAbs.prototype.clone = function () {\n return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r1\", {\n get: function get() {\n return this._r1;\n },\n set: function set(r1) {\n this._r1 = r1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r2\", {\n get: function get() {\n return this._r2;\n },\n set: function set(r2) {\n this._r2 = r2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"angle\", {\n get: function get() {\n return this._angle;\n },\n set: function set(angle) {\n this._angle = angle;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"largeArcFlag\", {\n get: function get() {\n return this._largeArcFlag;\n },\n set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"sweepFlag\", {\n get: function get() {\n return this._sweepFlag;\n },\n set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n\n window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegArcRel.prototype.toString = function () {\n return \"[object SVGPathSegArcRel]\";\n };\n\n window.SVGPathSegArcRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegArcRel.prototype.clone = function () {\n return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r1\", {\n get: function get() {\n return this._r1;\n },\n set: function set(r1) {\n this._r1 = r1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r2\", {\n get: function get() {\n return this._r2;\n },\n set: function set(r2) {\n this._r2 = r2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"angle\", {\n get: function get() {\n return this._angle;\n },\n set: function set(angle) {\n this._angle = angle;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"largeArcFlag\", {\n get: function get() {\n return this._largeArcFlag;\n },\n set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"sweepFlag\", {\n get: function get() {\n return this._sweepFlag;\n },\n set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n this._x = x;\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalAbs]\";\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n this._x = x;\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalRel]\";\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n this._y = y;\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalAbs]\";\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n this._y = y;\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalRel]\";\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothAbs]\";\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothRel]\";\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\";\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\";\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n }); // Add createSVGPathSeg* functions to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-Interfacewindow.SVGPathElement.\n\n window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\n return new window.SVGPathSegMovetoAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\n return new window.SVGPathSegMovetoRel(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\n return new window.SVGPathSegLinetoAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\n return new window.SVGPathSegLinetoRel(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\n return new window.SVGPathSegLinetoVerticalRel(undefined, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\n };\n\n if (!(\"getPathSegAtLength\" in window.SVGPathElement.prototype)) {\n // Add getPathSegAtLength to SVGPathElement.\n // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-__svg__SVGPathElement__getPathSegAtLength\n // This polyfill requires SVGPathElement.getTotalLength to implement the distance-along-a-path algorithm.\n window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\n if (distance === undefined || !isFinite(distance)) throw \"Invalid arguments.\";\n var measurementElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n measurementElement.setAttribute(\"d\", this.getAttribute(\"d\"));\n var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1; // If the path is empty, return 0.\n\n if (lastPathSegment <= 0) return 0;\n\n do {\n measurementElement.pathSegList.removeItem(lastPathSegment);\n if (distance > measurementElement.getTotalLength()) break;\n lastPathSegment--;\n } while (lastPathSegment > 0);\n\n return lastPathSegment;\n };\n }\n }\n\n if (!(\"SVGPathSegList\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n window.SVGPathSegList = function (pathElement) {\n this._pathElement = pathElement;\n this._list = this._parsePath(this._pathElement.getAttribute(\"d\")); // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n\n this._mutationObserverConfig = {\n \"attributes\": true,\n \"attributeFilter\": [\"d\"]\n };\n this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n window.SVGPathSegList.prototype.classname = \"SVGPathSegList\";\n Object.defineProperty(window.SVGPathSegList.prototype, \"numberOfItems\", {\n get: function get() {\n this._checkPathSynchronizedToList();\n\n return this._list.length;\n },\n enumerable: true\n }); // Add the pathSegList accessors to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n\n Object.defineProperty(window.SVGPathElement.prototype, \"pathSegList\", {\n get: function get() {\n if (!this._pathSegList) this._pathSegList = new window.SVGPathSegList(this);\n return this._pathSegList;\n },\n enumerable: true\n }); // FIXME: The following are not implemented and simply return window.SVGPathElement.pathSegList.\n\n Object.defineProperty(window.SVGPathElement.prototype, \"normalizedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedNormalizedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n }); // Process any pending mutations to the path element and update the list as needed.\n // This should be the first call of all public functions and is needed because\n // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n\n window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\n this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n };\n\n window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\n if (!this._pathElement) return;\n var hasPathMutations = false;\n mutationRecords.forEach(function (record) {\n if (record.attributeName == \"d\") hasPathMutations = true;\n });\n if (hasPathMutations) this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n }; // Serialize the list and update the path's 'd' attribute.\n\n\n window.SVGPathSegList.prototype._writeListToPath = function () {\n this._pathElementMutationObserver.disconnect();\n\n this._pathElement.setAttribute(\"d\", window.SVGPathSegList._pathSegArrayAsString(this._list));\n\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n }; // When a path segment changes the list needs to be synchronized back to the path element.\n\n\n window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.clear = function () {\n this._checkPathSynchronizedToList();\n\n this._list.forEach(function (pathSeg) {\n pathSeg._owningPathSegList = null;\n });\n\n this._list = [];\n\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.initialize = function (newItem) {\n this._checkPathSynchronizedToList();\n\n this._list = [newItem];\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype._checkValidIndex = function (index) {\n if (isNaN(index) || index < 0 || index >= this.numberOfItems) throw \"INDEX_SIZE_ERR\";\n };\n\n window.SVGPathSegList.prototype.getItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n\n return this._list[index];\n };\n\n window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\n this._checkPathSynchronizedToList(); // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n\n\n if (index > this.numberOfItems) index = this.numberOfItems;\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._list.splice(index, 0, newItem);\n\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._checkValidIndex(index);\n\n this._list[index] = newItem;\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype.removeItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n\n var item = this._list[index];\n\n this._list.splice(index, 1);\n\n this._writeListToPath();\n\n return item;\n };\n\n window.SVGPathSegList.prototype.appendItem = function (newItem) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._list.push(newItem);\n\n newItem._owningPathSegList = this; // TODO: Optimize this to just append to the existing attribute.\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\n var string = \"\";\n var first = true;\n pathSegArray.forEach(function (pathSeg) {\n if (first) {\n first = false;\n string += pathSeg._asPathString();\n } else {\n string += \" \" + pathSeg._asPathString();\n }\n });\n return string;\n }; // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n\n\n window.SVGPathSegList.prototype._parsePath = function (string) {\n if (!string || string.length == 0) return [];\n var owningPathSegList = this;\n\n var Builder = function Builder() {\n this.pathSegList = [];\n };\n\n Builder.prototype.appendSegment = function (pathSeg) {\n this.pathSegList.push(pathSeg);\n };\n\n var Source = function Source(string) {\n this._string = string;\n this._currentIndex = 0;\n this._endIndex = this._string.length;\n this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\n\n this._skipOptionalSpaces();\n };\n\n Source.prototype._isCurrentSpace = function () {\n var character = this._string[this._currentIndex];\n return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n };\n\n Source.prototype._skipOptionalSpaces = function () {\n while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {\n this._currentIndex++;\n }\n\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype._skipOptionalSpacesOrDelimiter = function () {\n if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\") return false;\n\n if (this._skipOptionalSpaces()) {\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n this._currentIndex++;\n\n this._skipOptionalSpaces();\n }\n }\n\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.hasMoreData = function () {\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.peekSegmentType = function () {\n var lookahead = this._string[this._currentIndex];\n return this._pathSegTypeFromChar(lookahead);\n };\n\n Source.prototype._pathSegTypeFromChar = function (lookahead) {\n switch (lookahead) {\n case \"Z\":\n case \"z\":\n return window.SVGPathSeg.PATHSEG_CLOSEPATH;\n\n case \"M\":\n return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\n\n case \"m\":\n return window.SVGPathSeg.PATHSEG_MOVETO_REL;\n\n case \"L\":\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n\n case \"l\":\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\n\n case \"C\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n\n case \"c\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n\n case \"Q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n\n case \"q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n\n case \"A\":\n return window.SVGPathSeg.PATHSEG_ARC_ABS;\n\n case \"a\":\n return window.SVGPathSeg.PATHSEG_ARC_REL;\n\n case \"H\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n\n case \"h\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n\n case \"V\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n\n case \"v\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n\n case \"S\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n\n case \"s\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n\n case \"T\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n\n case \"t\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n\n default:\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n }\n };\n\n Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\n // Check for remaining coordinates in the current command.\n if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || lookahead >= \"0\" && lookahead <= \"9\") && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS) return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL) return window.SVGPathSeg.PATHSEG_LINETO_REL;\n return previousCommand;\n }\n\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n };\n\n Source.prototype.initialCommandIsMoveTo = function () {\n // If the path is empty it is still valid, so return true.\n if (!this.hasMoreData()) return true;\n var command = this.peekSegmentType(); // Path must start with moveTo.\n\n return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;\n }; // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n\n\n Source.prototype._parseNumber = function () {\n var exponent = 0;\n var integer = 0;\n var frac = 1;\n var decimal = 0;\n var sign = 1;\n var expsign = 1;\n var startIndex = this._currentIndex;\n\n this._skipOptionalSpaces(); // Read the sign.\n\n\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\") this._currentIndex++;else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n sign = -1;\n }\n if (this._currentIndex == this._endIndex || (this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\") // The first character of a number must be one of [0-9+-.].\n return undefined; // Read the integer part, build right-to-left.\n\n var startIntPartIndex = this._currentIndex;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n this._currentIndex++;\n } // Advance to first non-digit.\n\n\n if (this._currentIndex != startIntPartIndex) {\n var scanIntPartIndex = this._currentIndex - 1;\n var multiplier = 1;\n\n while (scanIntPartIndex >= startIntPartIndex) {\n integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n multiplier *= 10;\n }\n } // Read the decimals.\n\n\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n this._currentIndex++; // There must be a least one digit following the .\n\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n frac *= 10;\n decimal += (this._string.charAt(this._currentIndex) - \"0\") / frac;\n this._currentIndex += 1;\n }\n } // Read the exponent part.\n\n\n if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\") {\n this._currentIndex++; // Read the sign of the exponent.\n\n if (this._string.charAt(this._currentIndex) == \"+\") {\n this._currentIndex++;\n } else if (this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n expsign = -1;\n } // There must be an exponent.\n\n\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n exponent *= 10;\n exponent += this._string.charAt(this._currentIndex) - \"0\";\n this._currentIndex++;\n }\n }\n\n var number = integer + decimal;\n number *= sign;\n if (exponent) number *= Math.pow(10, expsign * exponent);\n if (startIndex == this._currentIndex) return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return number;\n };\n\n Source.prototype._parseArcFlag = function () {\n if (this._currentIndex >= this._endIndex) return undefined;\n var flag = false;\n\n var flagChar = this._string.charAt(this._currentIndex++);\n\n if (flagChar == \"0\") flag = false;else if (flagChar == \"1\") flag = true;else return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return flag;\n };\n\n Source.prototype.parseSegment = function () {\n var lookahead = this._string[this._currentIndex];\n\n var command = this._pathSegTypeFromChar(lookahead);\n\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\n // Possibly an implicit command. Not allowed if this is the first command.\n if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n command = this._nextCommandHelper(lookahead, this._previousCommand);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n } else {\n this._currentIndex++;\n }\n\n this._previousCommand = command;\n\n switch (command) {\n case window.SVGPathSeg.PATHSEG_MOVETO_REL:\n return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\n return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_REL:\n return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_ABS:\n return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_CLOSEPATH:\n this._skipOptionalSpaces();\n\n return new window.SVGPathSegClosePath(owningPathSegList);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n var points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n var points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_ARC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n\n case window.SVGPathSeg.PATHSEG_ARC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n\n default:\n throw \"Unknown path seg type.\";\n }\n };\n\n var builder = new Builder();\n var source = new Source(string);\n if (!source.initialCommandIsMoveTo()) return [];\n\n while (source.hasMoreData()) {\n var pathSeg = source.parseSegment();\n if (!pathSeg) return [];\n builder.appendSegment(pathSeg);\n }\n\n return builder.pathSegList;\n };\n }\n })(); // String.padEnd polyfill for IE11\n //\n // https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd\n\n\n if (!String.prototype.padEnd) {\n String.prototype.padEnd = function padEnd(targetLength, padString) {\n targetLength = targetLength >> 0; //floor if number or convert non-number to 0;\n\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\n\n if (this.length > targetLength) {\n return String(this);\n } else {\n targetLength = targetLength - this.length;\n\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n\n return String(this) + padString.slice(0, targetLength);\n }\n };\n }\n /* jshint ignore:end */\n\n Chart.prototype.axis = function () {};\n\n Chart.prototype.axis.labels = function (labels) {\n var $$ = this.internal;\n\n if (arguments.length) {\n Object.keys(labels).forEach(function (axisId) {\n $$.axis.setLabelText(axisId, labels[axisId]);\n });\n $$.axis.updateLabels();\n } // TODO: return some values?\n\n };\n\n Chart.prototype.axis.max = function (max) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length) {\n if (_typeof(max) === 'object') {\n if (isValue(max.x)) {\n config.axis_x_max = max.x;\n }\n\n if (isValue(max.y)) {\n config.axis_y_max = max.y;\n }\n\n if (isValue(max.y2)) {\n config.axis_y2_max = max.y2;\n }\n } else {\n config.axis_y_max = config.axis_y2_max = max;\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n } else {\n return {\n x: config.axis_x_max,\n y: config.axis_y_max,\n y2: config.axis_y2_max\n };\n }\n };\n\n Chart.prototype.axis.min = function (min) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length) {\n if (_typeof(min) === 'object') {\n if (isValue(min.x)) {\n config.axis_x_min = min.x;\n }\n\n if (isValue(min.y)) {\n config.axis_y_min = min.y;\n }\n\n if (isValue(min.y2)) {\n config.axis_y2_min = min.y2;\n }\n } else {\n config.axis_y_min = config.axis_y2_min = min;\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n } else {\n return {\n x: config.axis_x_min,\n y: config.axis_y_min,\n y2: config.axis_y2_min\n };\n }\n };\n\n Chart.prototype.axis.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.axis.max(range.max);\n }\n\n if (isDefined(range.min)) {\n this.axis.min(range.min);\n }\n } else {\n return {\n max: this.axis.max(),\n min: this.axis.min()\n };\n }\n };\n\n Chart.prototype.category = function (i, category) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length > 1) {\n config.axis_x_categories[i] = category;\n $$.redraw();\n }\n\n return config.axis_x_categories[i];\n };\n\n Chart.prototype.categories = function (categories) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!arguments.length) {\n return config.axis_x_categories;\n }\n\n config.axis_x_categories = categories;\n $$.redraw();\n return config.axis_x_categories;\n };\n\n Chart.prototype.resize = function (size) {\n var $$ = this.internal,\n config = $$.config;\n config.size_width = size ? size.width : null;\n config.size_height = size ? size.height : null;\n this.flush();\n };\n\n Chart.prototype.flush = function () {\n var $$ = this.internal;\n $$.updateAndRedraw({\n withLegend: true,\n withTransition: false,\n withTransitionForTransform: false\n });\n };\n\n Chart.prototype.destroy = function () {\n var $$ = this.internal;\n window.clearInterval($$.intervalForObserveInserted);\n\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n if (window.detachEvent) {\n window.detachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.removeEventListener) {\n window.removeEventListener('resize', $$.resizeIfElementDisplayed);\n } else {\n var wrapper = window.onresize; // check if no one else removed our wrapper and remove our resizeFunction from it\n\n if (wrapper && wrapper.add && wrapper.remove) {\n wrapper.remove($$.resizeFunction);\n }\n } // Removes the inner resize functions\n\n\n $$.resizeFunction.remove(); // Unbinds from the window focus event\n\n $$.unbindWindowFocus();\n $$.selectChart.classed('c3', false).html(\"\"); // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n\n Object.keys($$).forEach(function (key) {\n $$[key] = null;\n });\n return null;\n };\n\n Chart.prototype.color = function (id) {\n var $$ = this.internal;\n return $$.color(id); // more patterns\n };\n\n Chart.prototype.data = function (targetIds) {\n var targets = this.internal.data.targets;\n return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n return [].concat(targetIds).indexOf(t.id) >= 0;\n });\n };\n\n Chart.prototype.data.shown = function (targetIds) {\n return this.internal.filterTargetsToShow(this.data(targetIds));\n };\n\n Chart.prototype.data.values = function (targetId) {\n var targets,\n values = null;\n\n if (targetId) {\n targets = this.data(targetId);\n values = targets[0] ? targets[0].values.map(function (d) {\n return d.value;\n }) : null;\n }\n\n return values;\n };\n\n Chart.prototype.data.names = function (names) {\n this.internal.clearLegendItemTextBoxCache();\n return this.internal.updateDataAttributes('names', names);\n };\n\n Chart.prototype.data.colors = function (colors) {\n return this.internal.updateDataAttributes('colors', colors);\n };\n\n Chart.prototype.data.axes = function (axes) {\n return this.internal.updateDataAttributes('axes', axes);\n };\n\n Chart.prototype.flow = function (args) {\n var $$ = this.internal,\n targets,\n data,\n notfoundIds = [],\n orgDataCount = $$.getMaxDataCount(),\n dataCount,\n domain,\n baseTarget,\n baseValue,\n length = 0,\n tail = 0,\n diff,\n to;\n\n if (args.json) {\n data = $$.convertJsonToData(args.json, args.keys);\n } else if (args.rows) {\n data = $$.convertRowsToData(args.rows);\n } else if (args.columns) {\n data = $$.convertColumnsToData(args.columns);\n } else {\n return;\n }\n\n targets = $$.convertDataToTargets(data, true); // Update/Add data\n\n $$.data.targets.forEach(function (t) {\n var found = false,\n i,\n j;\n\n for (i = 0; i < targets.length; i++) {\n if (t.id === targets[i].id) {\n found = true;\n\n if (t.values[t.values.length - 1]) {\n tail = t.values[t.values.length - 1].index + 1;\n }\n\n length = targets[i].values.length;\n\n for (j = 0; j < length; j++) {\n targets[i].values[j].index = tail + j;\n\n if (!$$.isTimeSeries()) {\n targets[i].values[j].x = tail + j;\n }\n }\n\n t.values = t.values.concat(targets[i].values);\n targets.splice(i, 1);\n break;\n }\n }\n\n if (!found) {\n notfoundIds.push(t.id);\n }\n }); // Append null for not found targets\n\n $$.data.targets.forEach(function (t) {\n var i, j;\n\n for (i = 0; i < notfoundIds.length; i++) {\n if (t.id === notfoundIds[i]) {\n tail = t.values[t.values.length - 1].index + 1;\n\n for (j = 0; j < length; j++) {\n t.values.push({\n id: t.id,\n index: tail + j,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n value: null\n });\n }\n }\n }\n }); // Generate null values for new target\n\n if ($$.data.targets.length) {\n targets.forEach(function (t) {\n var i,\n missing = [];\n\n for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n missing.push({\n id: t.id,\n index: i,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n value: null\n });\n }\n\n t.values.forEach(function (v) {\n v.index += tail;\n\n if (!$$.isTimeSeries()) {\n v.x += tail;\n }\n });\n t.values = missing.concat(t.values);\n });\n }\n\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n // check data count because behavior needs to change when it's only one\n\n dataCount = $$.getMaxDataCount();\n baseTarget = $$.data.targets[0];\n baseValue = baseTarget.values[0]; // Update length to flow if needed\n\n if (isDefined(args.to)) {\n length = 0;\n to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n baseTarget.values.forEach(function (v) {\n if (v.x < to) {\n length++;\n }\n });\n } else if (isDefined(args.length)) {\n length = args.length;\n } // If only one data, update the domain to flow from left edge of the chart\n\n\n if (!orgDataCount) {\n if ($$.isTimeSeries()) {\n if (baseTarget.values.length > 1) {\n diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n } else {\n diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n }\n } else {\n diff = 1;\n }\n\n domain = [baseValue.x - diff, baseValue.x];\n $$.updateXDomain(null, true, true, false, domain);\n } else if (orgDataCount === 1) {\n if ($$.isTimeSeries()) {\n diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n $$.updateXDomain(null, true, true, false, domain);\n }\n } // Set targets\n\n\n $$.updateTargets($$.data.targets); // Redraw with new targets\n\n $$.redraw({\n flow: {\n index: baseValue.index,\n length: length,\n duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n done: args.done,\n orgDataCount: orgDataCount\n },\n withLegend: true,\n withTransition: orgDataCount > 1,\n withTrimXDomain: false,\n withUpdateXAxis: true\n });\n };\n\n ChartInternal.prototype.generateFlow = function (args) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n return function () {\n var targets = args.targets,\n flow = args.flow,\n drawBar = args.drawBar,\n drawLine = args.drawLine,\n drawArea = args.drawArea,\n cx = args.cx,\n cy = args.cy,\n xv = args.xv,\n xForText = args.xForText,\n yForText = args.yForText,\n duration = args.duration;\n\n var translateX,\n scaleX = 1,\n transform,\n flowIndex = flow.index,\n flowLength = flow.length,\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n orgDomain = $$.x.domain(),\n domain,\n durationForFlow = flow.duration || duration,\n done = flow.done || function () {},\n wait = $$.generateWait();\n\n var xgrid, xgridLines, mainRegion, mainText, mainBar, mainLine, mainArea, mainCircle; // set flag\n\n $$.flowing = true; // remove head data after rendered\n\n $$.data.targets.forEach(function (d) {\n d.values.splice(0, flowLength);\n }); // update x domain to generate axis elements for flow\n\n domain = $$.updateXDomain(targets, true, true); // update elements related to x scale\n\n if ($$.updateXGrid) {\n $$.updateXGrid(true);\n }\n\n xgrid = $$.xgrid || d3.selectAll([]); // xgrid needs to be obtained after updateXGrid\n\n xgridLines = $$.xgridLines || d3.selectAll([]);\n mainRegion = $$.mainRegion || d3.selectAll([]);\n mainText = $$.mainText || d3.selectAll([]);\n mainBar = $$.mainBar || d3.selectAll([]);\n mainLine = $$.mainLine || d3.selectAll([]);\n mainArea = $$.mainArea || d3.selectAll([]);\n mainCircle = $$.mainCircle || d3.selectAll([]); // generate transform to flow\n\n if (!flow.orgDataCount) {\n // if empty\n if ($$.data.targets[0].values.length !== 1) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n } else {\n translateX = diffDomain(domain) / 2;\n }\n }\n } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n }\n }\n\n scaleX = diffDomain(orgDomain) / diffDomain(domain);\n transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n $$.hideXGridFocus();\n var flowTransition = d3.transition().ease(d3.easeLinear).duration(durationForFlow);\n wait.add($$.xAxis($$.axes.x, flowTransition));\n wait.add(mainBar.transition(flowTransition).attr('transform', transform));\n wait.add(mainLine.transition(flowTransition).attr('transform', transform));\n wait.add(mainArea.transition(flowTransition).attr('transform', transform));\n wait.add(mainCircle.transition(flowTransition).attr('transform', transform));\n wait.add(mainText.transition(flowTransition).attr('transform', transform));\n wait.add(mainRegion.filter($$.isRegionOnX).transition(flowTransition).attr('transform', transform));\n wait.add(xgrid.transition(flowTransition).attr('transform', transform));\n wait.add(xgridLines.transition(flowTransition).attr('transform', transform));\n wait(function () {\n var i,\n shapes = [],\n texts = []; // remove flowed elements\n\n if (flowLength) {\n for (i = 0; i < flowLength; i++) {\n shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n }\n\n $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n $$.svg.select('.' + CLASS.xgrid).remove();\n } // draw again for removing flowed elements and reverting attr\n\n\n xgrid.attr('transform', null).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n xgridLines.attr('transform', null);\n xgridLines.select('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv);\n xgridLines.select('text').attr(\"x\", config.axis_rotated ? $$.width : 0).attr(\"y\", xv);\n mainBar.attr('transform', null).attr(\"d\", drawBar);\n mainLine.attr('transform', null).attr(\"d\", drawLine);\n mainArea.attr('transform', null).attr(\"d\", drawArea);\n mainCircle.attr('transform', null).attr(\"cx\", cx).attr(\"cy\", cy);\n mainText.attr('transform', null).attr('x', xForText).attr('y', yForText).style('fill-opacity', $$.opacityForText.bind($$));\n mainRegion.attr('transform', null);\n mainRegion.filter($$.isRegionOnX).attr(\"x\", $$.regionX.bind($$)).attr(\"width\", $$.regionWidth.bind($$)); // callback for end of flow\n\n done();\n $$.flowing = false;\n });\n };\n };\n\n Chart.prototype.focus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), this.revert();\n this.defocus();\n candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n\n if ($$.hasArcType()) {\n $$.expandArc(targetIds);\n }\n\n $$.toggleFocusLegend(targetIds, true);\n $$.focusedTargetIds = targetIds;\n $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n Chart.prototype.defocus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n\n $$.toggleFocusLegend(targetIds, false);\n $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n $$.defocusedTargetIds = targetIds;\n };\n\n Chart.prototype.revert = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n\n if ($$.config.legend_show) {\n $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n $$.legend.selectAll($$.selectorLegends(targetIds)).filter(function () {\n return $$.d3.select(this).classed(CLASS.legendItemFocused);\n }).classed(CLASS.legendItemFocused, false);\n }\n\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n };\n\n Chart.prototype.xgrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!grids) {\n return config.grid_x_lines;\n }\n\n config.grid_x_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_x_lines;\n };\n\n Chart.prototype.xgrids.add = function (grids) {\n var $$ = this.internal;\n return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n };\n\n Chart.prototype.xgrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, true);\n };\n\n Chart.prototype.ygrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!grids) {\n return config.grid_y_lines;\n }\n\n config.grid_y_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_y_lines;\n };\n\n Chart.prototype.ygrids.add = function (grids) {\n var $$ = this.internal;\n return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n };\n\n Chart.prototype.ygrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, false);\n };\n\n Chart.prototype.groups = function (groups) {\n var $$ = this.internal,\n config = $$.config;\n\n if (isUndefined(groups)) {\n return config.data_groups;\n }\n\n config.data_groups = groups;\n $$.redraw();\n return config.data_groups;\n };\n\n Chart.prototype.legend = function () {};\n\n Chart.prototype.legend.show = function (targetIds) {\n var $$ = this.internal;\n $$.showLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({\n withLegend: true\n });\n };\n\n Chart.prototype.legend.hide = function (targetIds) {\n var $$ = this.internal;\n $$.hideLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({\n withLegend: false\n });\n };\n\n Chart.prototype.load = function (args) {\n var $$ = this.internal,\n config = $$.config; // update xs if specified\n\n if (args.xs) {\n $$.addXs(args.xs);\n } // update names if exists\n\n\n if ('names' in args) {\n Chart.prototype.data.names.bind(this)(args.names);\n } // update classes if exists\n\n\n if ('classes' in args) {\n Object.keys(args.classes).forEach(function (id) {\n config.data_classes[id] = args.classes[id];\n });\n } // update categories if exists\n\n\n if ('categories' in args && $$.isCategorized()) {\n config.axis_x_categories = args.categories;\n } // update axes if exists\n\n\n if ('axes' in args) {\n Object.keys(args.axes).forEach(function (id) {\n config.data_axes[id] = args.axes[id];\n });\n } // update colors if exists\n\n\n if ('colors' in args) {\n Object.keys(args.colors).forEach(function (id) {\n config.data_colors[id] = args.colors[id];\n });\n } // use cache if exists\n\n\n if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n $$.load($$.getCaches(args.cacheIds), args.done);\n return;\n } // unload if needed\n\n\n if ('unload' in args) {\n // TODO: do not unload if target will load (included in url/rows/columns)\n $$.unload($$.mapToTargetIds(typeof args.unload === 'boolean' && args.unload ? null : args.unload), function () {\n $$.loadFromArgs(args);\n });\n } else {\n $$.loadFromArgs(args);\n }\n };\n\n Chart.prototype.unload = function (args) {\n var $$ = this.internal;\n args = args || {};\n\n if (args instanceof Array) {\n args = {\n ids: args\n };\n } else if (typeof args === 'string') {\n args = {\n ids: [args]\n };\n }\n\n $$.unload($$.mapToTargetIds(args.ids), function () {\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n\n if (args.done) {\n args.done();\n }\n });\n };\n\n Chart.prototype.regions = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!regions) {\n return config.regions;\n }\n\n config.regions = regions;\n $$.redrawWithoutRescale();\n return config.regions;\n };\n\n Chart.prototype.regions.add = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!regions) {\n return config.regions;\n }\n\n config.regions = config.regions.concat(regions);\n $$.redrawWithoutRescale();\n return config.regions;\n };\n\n Chart.prototype.regions.remove = function (options) {\n var $$ = this.internal,\n config = $$.config,\n duration,\n classes,\n regions;\n options = options || {};\n duration = getOption(options, \"duration\", config.transition_duration);\n classes = getOption(options, \"classes\", [CLASS.region]);\n regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) {\n return '.' + c;\n }));\n (duration ? regions.transition().duration(duration) : regions).style('opacity', 0).remove();\n config.regions = config.regions.filter(function (region) {\n var found = false;\n\n if (!region['class']) {\n return true;\n }\n\n region['class'].split(' ').forEach(function (c) {\n if (classes.indexOf(c) >= 0) {\n found = true;\n }\n });\n return !found;\n });\n return config.regions;\n };\n\n Chart.prototype.selected = function (targetId) {\n var $$ = this.internal,\n d3 = $$.d3;\n return $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape).filter(function () {\n return d3.select(this).classed(CLASS.SELECTED);\n }).nodes().map(function (d) {\n var data = d.__data__;\n return data.data ? data.data : data;\n });\n };\n\n Chart.prototype.select = function (ids, indices, resetOther) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n\n if (!config.data_selection_enabled) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED); // line/area selection not supported yet\n\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d) && !isSelected) {\n toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n }\n } else if (isDefined(resetOther) && resetOther) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n });\n };\n\n Chart.prototype.unselect = function (ids, indices) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n\n if (!config.data_selection_enabled) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED); // line/area selection not supported yet\n\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d)) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n }\n });\n };\n\n Chart.prototype.show = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n $$.removeHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n targets.transition().style('display', 'initial', 'important').style('opacity', 1, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 1);\n });\n\n if (options.withLegend) {\n $$.showLegend(targetIds);\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n };\n\n Chart.prototype.hide = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n $$.addHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n targets.transition().style('opacity', 0, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 0);\n targets.style('display', 'none');\n });\n\n if (options.withLegend) {\n $$.hideLegend(targetIds);\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n };\n\n Chart.prototype.toggle = function (targetIds, options) {\n var that = this,\n $$ = this.internal;\n $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n });\n };\n\n Chart.prototype.tooltip = function () {};\n\n Chart.prototype.tooltip.show = function (args) {\n var $$ = this.internal,\n targets,\n data,\n mouse = {}; // determine mouse position on the chart\n\n if (args.mouse) {\n mouse = args.mouse;\n } else {\n // determine focus data\n if (args.data) {\n data = args.data;\n } else if (typeof args.x !== 'undefined') {\n if (args.id) {\n targets = $$.data.targets.filter(function (t) {\n return t.id === args.id;\n });\n } else {\n targets = $$.data.targets;\n }\n\n data = $$.filterByX(targets, args.x).slice(0, 1)[0];\n }\n\n mouse = data ? $$.getMousePosition(data) : null;\n } // emulate mouse events to show\n\n\n $$.dispatchEvent('mousemove', mouse);\n $$.config.tooltip_onshow.call($$, data);\n };\n\n Chart.prototype.tooltip.hide = function () {\n // TODO: get target data by checking the state of focus\n this.internal.dispatchEvent('mouseout', 0);\n this.internal.config.tooltip_onhide.call(this);\n };\n\n Chart.prototype.transform = function (type, targetIds) {\n var $$ = this.internal,\n options = ['pie', 'donut'].indexOf(type) >= 0 ? {\n withTransform: true\n } : null;\n $$.transformTo(targetIds, type, options);\n };\n\n ChartInternal.prototype.transformTo = function (targetIds, type, optionsForRedraw) {\n var $$ = this,\n withTransitionForAxis = !$$.hasArcType(),\n options = optionsForRedraw || {\n withTransitionForAxis: withTransitionForAxis\n };\n options.withTransitionForTransform = false;\n $$.transiting = false;\n $$.setTargetType(targetIds, type);\n $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n\n $$.updateAndRedraw(options);\n };\n\n Chart.prototype.x = function (x) {\n var $$ = this.internal;\n\n if (arguments.length) {\n $$.updateTargetX($$.data.targets, x);\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n }\n\n return $$.data.xs;\n };\n\n Chart.prototype.xs = function (xs) {\n var $$ = this.internal;\n\n if (arguments.length) {\n $$.updateTargetXs($$.data.targets, xs);\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n }\n\n return $$.data.xs;\n };\n\n Chart.prototype.zoom = function (domain) {\n var $$ = this.internal;\n\n if (domain) {\n if ($$.isTimeSeries()) {\n domain = domain.map(function (x) {\n return $$.parseDate(x);\n });\n }\n\n if ($$.config.subchart_show) {\n $$.brush.selectionAsValue(domain, true);\n } else {\n $$.updateXDomain(null, true, false, false, domain);\n $$.redraw({\n withY: $$.config.zoom_rescale,\n withSubchart: false\n });\n }\n\n $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n return domain;\n } else {\n return $$.x.domain();\n }\n };\n\n Chart.prototype.zoom.enable = function (enabled) {\n var $$ = this.internal;\n $$.config.zoom_enabled = enabled;\n $$.updateAndRedraw();\n };\n\n Chart.prototype.unzoom = function () {\n var $$ = this.internal;\n\n if ($$.config.subchart_show) {\n $$.brush.clear();\n } else {\n $$.updateXDomain(null, true, false, false, $$.subX.domain());\n $$.redraw({\n withY: $$.config.zoom_rescale,\n withSubchart: false\n });\n }\n };\n\n Chart.prototype.zoom.max = function (max) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n\n if (max === 0 || max) {\n config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n } else {\n return config.zoom_x_max;\n }\n };\n\n Chart.prototype.zoom.min = function (min) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n\n if (min === 0 || min) {\n config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n } else {\n return config.zoom_x_min;\n }\n };\n\n Chart.prototype.zoom.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.domain.max(range.max);\n }\n\n if (isDefined(range.min)) {\n this.domain.min(range.min);\n }\n } else {\n return {\n max: this.domain.max(),\n min: this.domain.min()\n };\n }\n };\n\n ChartInternal.prototype.initPie = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.pie = d3.pie().value(function (d) {\n return d.values.reduce(function (a, b) {\n return a + b.value;\n }, 0);\n });\n var orderFct = $$.getOrderFunction(); // we need to reverse the returned order if asc or desc to have the slice in expected order.\n\n if (orderFct && ($$.isOrderAsc() || $$.isOrderDesc())) {\n var defaultSort = orderFct;\n\n orderFct = function orderFct(t1, t2) {\n return defaultSort(t1, t2) * -1;\n };\n }\n\n $$.pie.sort(orderFct || null);\n };\n\n ChartInternal.prototype.updateRadius = function () {\n var $$ = this,\n config = $$.config,\n w = config.gauge_width || config.donut_width,\n gaugeArcWidth = $$.filterTargetsToShow($$.data.targets).length * $$.config.gauge_arcs_minWidth;\n $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2 * ($$.hasType('gauge') ? 0.85 : 1);\n $$.radius = $$.radiusExpanded * 0.95;\n $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n $$.gaugeArcWidth = w ? w : gaugeArcWidth <= $$.radius - $$.innerRadius ? $$.radius - $$.innerRadius : gaugeArcWidth <= $$.radius ? gaugeArcWidth : $$.radius;\n };\n\n ChartInternal.prototype.updateArc = function () {\n var $$ = this;\n $$.svgArc = $$.getSvgArc();\n $$.svgArcExpanded = $$.getSvgArcExpanded();\n $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n };\n\n ChartInternal.prototype.updateAngle = function (d) {\n var $$ = this,\n config = $$.config,\n found = false,\n index = 0,\n gMin,\n gMax,\n gTic,\n gValue;\n\n if (!config) {\n return null;\n }\n\n $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n if (!found && t.data.id === d.data.id) {\n found = true;\n d = t;\n d.index = index;\n }\n\n index++;\n });\n\n if (isNaN(d.startAngle)) {\n d.startAngle = 0;\n }\n\n if (isNaN(d.endAngle)) {\n d.endAngle = d.startAngle;\n }\n\n if ($$.isGaugeType(d.data)) {\n gMin = config.gauge_min;\n gMax = config.gauge_max;\n gTic = Math.PI * (config.gauge_fullCircle ? 2 : 1) / (gMax - gMin);\n gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : gMax - gMin;\n d.startAngle = config.gauge_startingAngle;\n d.endAngle = d.startAngle + gTic * gValue;\n }\n\n return found ? d : null;\n };\n\n ChartInternal.prototype.getSvgArc = function () {\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n arc = $$.d3.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index : $$.radius;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n }),\n newArc = function newArc(d, withoutUpdate) {\n var updated;\n\n if (withoutUpdate) {\n return arc(d);\n } // for interpolate\n\n\n updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n }; // TODO: extends all function\n\n\n newArc.centroid = arc.centroid;\n return newArc;\n };\n\n ChartInternal.prototype.getSvgArcExpanded = function (rate) {\n rate = rate || 1;\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n expandWidth = Math.min($$.radiusExpanded * rate - $$.radius, singleArcWidth * 0.8 - (1 - rate) * 100),\n arc = $$.d3.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index + expandWidth : $$.radiusExpanded * rate;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n });\n return function (d) {\n var updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.getArc = function (d, withoutUpdate, force) {\n return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n };\n\n ChartInternal.prototype.transformForArcLabel = function (d) {\n var $$ = this,\n config = $$.config,\n updated = $$.updateAngle(d),\n c,\n x,\n y,\n h,\n ratio,\n translate = \"\",\n hasGauge = $$.hasType('gauge');\n\n if (updated && !hasGauge) {\n c = this.svgArc.centroid(updated);\n x = isNaN(c[0]) ? 0 : c[0];\n y = isNaN(c[1]) ? 0 : c[1];\n h = Math.sqrt(x * x + y * y);\n\n if ($$.hasType('donut') && config.donut_label_ratio) {\n ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n } else if ($$.hasType('pie') && config.pie_label_ratio) {\n ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n } else {\n ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n }\n\n translate = \"translate(\" + x * ratio + ',' + y * ratio + \")\";\n } else if (updated && hasGauge && $$.filterTargetsToShow($$.data.targets).length > 1) {\n var y1 = Math.sin(updated.endAngle - Math.PI / 2);\n x = Math.cos(updated.endAngle - Math.PI / 2) * ($$.radiusExpanded + 25);\n y = y1 * ($$.radiusExpanded + 15 - Math.abs(y1 * 10)) + 3;\n translate = \"translate(\" + x + ',' + y + \")\";\n }\n\n return translate;\n };\n\n ChartInternal.prototype.getArcRatio = function (d) {\n var $$ = this,\n config = $$.config,\n whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n return d ? (d.endAngle - d.startAngle) / whole : null;\n };\n\n ChartInternal.prototype.convertToArcData = function (d) {\n return this.addName({\n id: d.data.id,\n value: d.value,\n ratio: this.getArcRatio(d),\n index: d.index\n });\n };\n\n ChartInternal.prototype.textForArcLabel = function (d) {\n var $$ = this,\n updated,\n value,\n ratio,\n id,\n format;\n\n if (!$$.shouldShowArcLabel()) {\n return \"\";\n }\n\n updated = $$.updateAngle(d);\n value = updated ? updated.value : null;\n ratio = $$.getArcRatio(updated);\n id = d.data.id;\n\n if (!$$.hasType('gauge') && !$$.meetsArcLabelThreshold(ratio)) {\n return \"\";\n }\n\n format = $$.getArcLabelFormat();\n return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n };\n\n ChartInternal.prototype.textForGaugeMinMax = function (value, isMax) {\n var $$ = this,\n format = $$.getGaugeLabelExtents();\n return format ? format(value, isMax) : value;\n };\n\n ChartInternal.prototype.expandArc = function (targetIds) {\n var $$ = this,\n interval; // MEMO: avoid to cancel transition\n\n if ($$.transiting) {\n interval = window.setInterval(function () {\n if (!$$.transiting) {\n window.clearInterval(interval);\n\n if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n $$.expandArc(targetIds);\n }\n }\n }, 10);\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n if (!$$.shouldExpand(d.data.id)) {\n return;\n }\n\n $$.d3.select(this).selectAll('path').transition().duration($$.expandDuration(d.data.id)).attr(\"d\", $$.svgArcExpanded).transition().duration($$.expandDuration(d.data.id) * 2).attr(\"d\", $$.svgArcExpandedSub).each(function (d) {\n if ($$.isDonutType(d.data)) ;\n });\n });\n };\n\n ChartInternal.prototype.unexpandArc = function (targetIds) {\n var $$ = this;\n\n if ($$.transiting) {\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path').transition().duration(function (d) {\n return $$.expandDuration(d.data.id);\n }).attr(\"d\", $$.svgArc);\n $$.svg.selectAll('.' + CLASS.arc);\n };\n\n ChartInternal.prototype.expandDuration = function (id) {\n var $$ = this,\n config = $$.config;\n\n if ($$.isDonutType(id)) {\n return config.donut_expand_duration;\n } else if ($$.isGaugeType(id)) {\n return config.gauge_expand_duration;\n } else if ($$.isPieType(id)) {\n return config.pie_expand_duration;\n } else {\n return 50;\n }\n };\n\n ChartInternal.prototype.shouldExpand = function (id) {\n var $$ = this,\n config = $$.config;\n return $$.isDonutType(id) && config.donut_expand || $$.isGaugeType(id) && config.gauge_expand || $$.isPieType(id) && config.pie_expand;\n };\n\n ChartInternal.prototype.shouldShowArcLabel = function () {\n var $$ = this,\n config = $$.config,\n shouldShow = true;\n\n if ($$.hasType('donut')) {\n shouldShow = config.donut_label_show;\n } else if ($$.hasType('pie')) {\n shouldShow = config.pie_label_show;\n } // when gauge, always true\n\n\n return shouldShow;\n };\n\n ChartInternal.prototype.meetsArcLabelThreshold = function (ratio) {\n var $$ = this,\n config = $$.config,\n threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n return ratio >= threshold;\n };\n\n ChartInternal.prototype.getArcLabelFormat = function () {\n var $$ = this,\n config = $$.config,\n format = config.pie_label_format;\n\n if ($$.hasType('gauge')) {\n format = config.gauge_label_format;\n } else if ($$.hasType('donut')) {\n format = config.donut_label_format;\n }\n\n return format;\n };\n\n ChartInternal.prototype.getGaugeLabelExtents = function () {\n var $$ = this,\n config = $$.config;\n return config.gauge_label_extents;\n };\n\n ChartInternal.prototype.getArcTitle = function () {\n var $$ = this;\n return $$.hasType('donut') ? $$.config.donut_title : \"\";\n };\n\n ChartInternal.prototype.updateTargetsForArc = function (targets) {\n var $$ = this,\n main = $$.main,\n mainPies,\n mainPieEnter,\n classChartArc = $$.classChartArc.bind($$),\n classArcs = $$.classArcs.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainPies = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc).data($$.pie(targets)).attr(\"class\", function (d) {\n return classChartArc(d) + classFocus(d.data);\n });\n mainPieEnter = mainPies.enter().append(\"g\").attr(\"class\", classChartArc);\n mainPieEnter.append('g').attr('class', classArcs);\n mainPieEnter.append(\"text\").attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\").style(\"opacity\", 0).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\"); // MEMO: can not keep same color..., but not bad to update color in redraw\n //mainPieUpdate.exit().remove();\n };\n\n ChartInternal.prototype.initArc = function () {\n var $$ = this;\n $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n $$.arcs.append('text').attr('class', CLASS.chartArcsTitle).style(\"text-anchor\", \"middle\").text($$.getArcTitle());\n };\n\n ChartInternal.prototype.redrawArc = function (duration, durationForExit, withTransform) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n main = $$.main,\n arcs,\n mainArc,\n arcLabelLines,\n mainArcLabelLine,\n hasGaugeType = $$.hasType('gauge');\n arcs = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc).data($$.arcData.bind($$));\n mainArc = arcs.enter().append('path').attr(\"class\", $$.classArc.bind($$)).style(\"fill\", function (d) {\n return $$.color(d.data);\n }).style(\"cursor\", function (d) {\n return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null;\n }).each(function (d) {\n if ($$.isGaugeType(d.data)) {\n d.startAngle = d.endAngle = config.gauge_startingAngle;\n }\n\n this._current = d;\n }).merge(arcs);\n\n if (hasGaugeType) {\n arcLabelLines = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arcLabelLine).data($$.arcData.bind($$));\n mainArcLabelLine = arcLabelLines.enter().append('rect').attr(\"class\", function (d) {\n return CLASS.arcLabelLine + ' ' + CLASS.target + ' ' + CLASS.target + '-' + d.data.id;\n }).merge(arcLabelLines);\n\n if ($$.filterTargetsToShow($$.data.targets).length === 1) {\n mainArcLabelLine.style(\"display\", \"none\");\n } else {\n mainArcLabelLine.style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data);\n }).style(\"display\", config.gauge_labelLine_show ? \"\" : \"none\").each(function (d) {\n var lineLength = 0,\n lineThickness = 2,\n x = 0,\n y = 0,\n transform = \"\";\n\n if ($$.hiddenTargetIds.indexOf(d.data.id) < 0) {\n var updated = $$.updateAngle(d),\n innerLineLength = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length * (updated.index + 1),\n lineAngle = updated.endAngle - Math.PI / 2,\n arcInnerRadius = $$.radius - innerLineLength,\n linePositioningAngle = lineAngle - (arcInnerRadius === 0 ? 0 : 1 / arcInnerRadius);\n lineLength = $$.radiusExpanded - $$.radius + innerLineLength;\n x = Math.cos(linePositioningAngle) * arcInnerRadius;\n y = Math.sin(linePositioningAngle) * arcInnerRadius;\n transform = \"rotate(\" + lineAngle * 180 / Math.PI + \", \" + x + \", \" + y + \")\";\n }\n\n d3.select(this).attr('x', x).attr('y', y).attr('width', lineLength).attr('height', lineThickness).attr('transform', transform).style(\"stroke-dasharray\", \"0, \" + (lineLength + lineThickness) + \", 0\");\n });\n }\n }\n\n mainArc.attr(\"transform\", function (d) {\n return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\";\n }).on('mouseover', config.interaction_enabled ? function (d) {\n var updated, arcData;\n\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n\n updated = $$.updateAngle(d);\n\n if (updated) {\n arcData = $$.convertToArcData(updated); // transitions\n\n $$.expandArc(updated.data.id);\n $$.api.focus(updated.data.id);\n $$.toggleFocusLegend(updated.data.id, true);\n $$.config.data_onmouseover(arcData, this);\n }\n } : null).on('mousemove', config.interaction_enabled ? function (d) {\n var updated = $$.updateAngle(d),\n arcData,\n selectedData;\n\n if (updated) {\n arcData = $$.convertToArcData(updated), selectedData = [arcData];\n $$.showTooltip(selectedData, this);\n }\n } : null).on('mouseout', config.interaction_enabled ? function (d) {\n var updated, arcData;\n\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n\n updated = $$.updateAngle(d);\n\n if (updated) {\n arcData = $$.convertToArcData(updated); // transitions\n\n $$.unexpandArc(updated.data.id);\n $$.api.revert();\n $$.revertLegend();\n $$.hideTooltip();\n $$.config.data_onmouseout(arcData, this);\n }\n } : null).on('click', config.interaction_enabled ? function (d, i) {\n var updated = $$.updateAngle(d),\n arcData;\n\n if (updated) {\n arcData = $$.convertToArcData(updated);\n\n if ($$.toggleShape) {\n $$.toggleShape(this, arcData, i);\n }\n\n $$.config.data_onclick.call($$.api, arcData, this);\n }\n } : null).each(function () {\n $$.transiting = true;\n }).transition().duration(duration).attrTween(\"d\", function (d) {\n var updated = $$.updateAngle(d),\n interpolate;\n\n if (!updated) {\n return function () {\n return \"M 0 0\";\n };\n } // if (this._current === d) {\n // this._current = {\n // startAngle: Math.PI*2,\n // endAngle: Math.PI*2,\n // };\n // }\n\n\n if (isNaN(this._current.startAngle)) {\n this._current.startAngle = 0;\n }\n\n if (isNaN(this._current.endAngle)) {\n this._current.endAngle = this._current.startAngle;\n }\n\n interpolate = d3.interpolate(this._current, updated);\n this._current = interpolate(0);\n return function (t) {\n var interpolated = interpolate(t);\n interpolated.data = d.data; // data.id will be updated by interporator\n\n return $$.getArc(interpolated, true);\n };\n }).attr(\"transform\", withTransform ? \"scale(1)\" : \"\").style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n }) // Where gauge reading color would receive customization.\n .call($$.endall, function () {\n $$.transiting = false;\n });\n arcs.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n main.selectAll('.' + CLASS.chartArc).select('text').style(\"opacity\", 0).attr('class', function (d) {\n return $$.isGaugeType(d.data) ? CLASS.gaugeValue : '';\n }).text($$.textForArcLabel.bind($$)).attr(\"transform\", $$.transformForArcLabel.bind($$)).style('font-size', function (d) {\n return $$.isGaugeType(d.data) && $$.filterTargetsToShow($$.data.targets).length === 1 ? Math.round($$.radius / 5) + 'px' : '';\n }).transition().duration(duration).style(\"opacity\", function (d) {\n return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0;\n });\n main.select('.' + CLASS.chartArcsTitle).style(\"opacity\", $$.hasType('donut') || hasGaugeType ? 1 : 0);\n\n if (hasGaugeType) {\n var index = 0;\n var backgroundArc = $$.arcs.select('g.' + CLASS.chartArcsBackground).selectAll('path.' + CLASS.chartArcsBackground).data($$.data.targets);\n backgroundArc.enter().append(\"path\").attr(\"class\", function (d, i) {\n return CLASS.chartArcsBackground + ' ' + CLASS.chartArcsBackground + '-' + i;\n }).merge(backgroundArc).attr(\"d\", function (d1) {\n if ($$.hiddenTargetIds.indexOf(d1.id) >= 0) {\n return \"M 0 0\";\n }\n\n var d = {\n data: [{\n value: config.gauge_max\n }],\n startAngle: config.gauge_startingAngle,\n endAngle: -1 * config.gauge_startingAngle * (config.gauge_fullCircle ? Math.PI : 1),\n index: index++\n };\n return $$.getArc(d, true, true);\n });\n backgroundArc.exit().remove();\n $$.arcs.select('.' + CLASS.chartArcsGaugeUnit).attr(\"dy\", \".75em\").text(config.gauge_label_show ? config.gauge_units : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMin).attr(\"dx\", -1 * ($$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_min, false) : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMax).attr(\"dx\", $$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_max, true) : '');\n }\n };\n\n ChartInternal.prototype.initGauge = function () {\n var arcs = this.arcs;\n\n if (this.hasType('gauge')) {\n arcs.append('g').attr(\"class\", CLASS.chartArcsBackground);\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeUnit).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMin).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMax).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n }\n };\n\n ChartInternal.prototype.getGaugeLabelHeight = function () {\n return this.config.gauge_label_show ? 20 : 0;\n };\n\n ChartInternal.prototype.hasCaches = function (ids) {\n for (var i = 0; i < ids.length; i++) {\n if (!(ids[i] in this.cache)) {\n return false;\n }\n }\n\n return true;\n };\n\n ChartInternal.prototype.addCache = function (id, target) {\n this.cache[id] = this.cloneTarget(target);\n };\n\n ChartInternal.prototype.getCaches = function (ids) {\n var targets = [],\n i;\n\n for (i = 0; i < ids.length; i++) {\n if (ids[i] in this.cache) {\n targets.push(this.cloneTarget(this.cache[ids[i]]));\n }\n }\n\n return targets;\n };\n\n ChartInternal.prototype.categoryName = function (i) {\n var config = this.config;\n return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n };\n\n ChartInternal.prototype.generateTargetClass = function (targetId) {\n return targetId || targetId === 0 ? ('-' + targetId).replace(/\\s/g, '-') : '';\n };\n\n ChartInternal.prototype.generateClass = function (prefix, targetId) {\n return \" \" + prefix + \" \" + prefix + this.generateTargetClass(targetId);\n };\n\n ChartInternal.prototype.classText = function (d) {\n return this.generateClass(CLASS.text, d.index);\n };\n\n ChartInternal.prototype.classTexts = function (d) {\n return this.generateClass(CLASS.texts, d.id);\n };\n\n ChartInternal.prototype.classShape = function (d) {\n return this.generateClass(CLASS.shape, d.index);\n };\n\n ChartInternal.prototype.classShapes = function (d) {\n return this.generateClass(CLASS.shapes, d.id);\n };\n\n ChartInternal.prototype.classLine = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n };\n\n ChartInternal.prototype.classLines = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n };\n\n ChartInternal.prototype.classCircle = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n };\n\n ChartInternal.prototype.classCircles = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n };\n\n ChartInternal.prototype.classBar = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n };\n\n ChartInternal.prototype.classBars = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n };\n\n ChartInternal.prototype.classArc = function (d) {\n return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n };\n\n ChartInternal.prototype.classArcs = function (d) {\n return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n };\n\n ChartInternal.prototype.classArea = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n };\n\n ChartInternal.prototype.classAreas = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n };\n\n ChartInternal.prototype.classRegion = function (d, i) {\n return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n };\n\n ChartInternal.prototype.classEvent = function (d) {\n return this.generateClass(CLASS.eventRect, d.index);\n };\n\n ChartInternal.prototype.classTarget = function (id) {\n var $$ = this;\n var additionalClassSuffix = $$.config.data_classes[id],\n additionalClass = '';\n\n if (additionalClassSuffix) {\n additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n }\n\n return $$.generateClass(CLASS.target, id) + additionalClass;\n };\n\n ChartInternal.prototype.classFocus = function (d) {\n return this.classFocused(d) + this.classDefocused(d);\n };\n\n ChartInternal.prototype.classFocused = function (d) {\n return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n };\n\n ChartInternal.prototype.classDefocused = function (d) {\n return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n };\n\n ChartInternal.prototype.classChartText = function (d) {\n return CLASS.chartText + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartLine = function (d) {\n return CLASS.chartLine + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartBar = function (d) {\n return CLASS.chartBar + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartArc = function (d) {\n return CLASS.chartArc + this.classTarget(d.data.id);\n };\n\n ChartInternal.prototype.getTargetSelectorSuffix = function (targetId) {\n return this.generateTargetClass(targetId).replace(/([?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\])/g, '\\\\$1');\n };\n\n ChartInternal.prototype.selectorTarget = function (id, prefix) {\n return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n };\n\n ChartInternal.prototype.selectorTargets = function (ids, prefix) {\n var $$ = this;\n ids = ids || [];\n return ids.length ? ids.map(function (id) {\n return $$.selectorTarget(id, prefix);\n }) : null;\n };\n\n ChartInternal.prototype.selectorLegend = function (id) {\n return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n };\n\n ChartInternal.prototype.selectorLegends = function (ids) {\n var $$ = this;\n return ids && ids.length ? ids.map(function (id) {\n return $$.selectorLegend(id);\n }) : null;\n };\n\n ChartInternal.prototype.getClipPath = function (id) {\n var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n };\n\n ChartInternal.prototype.appendClip = function (parent, id) {\n return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n };\n\n ChartInternal.prototype.getAxisClipX = function (forHorizontal) {\n // axis line width + padding for left\n var left = Math.max(30, this.margin.left);\n return forHorizontal ? -(1 + left) : -(left - 1);\n };\n\n ChartInternal.prototype.getAxisClipY = function (forHorizontal) {\n return forHorizontal ? -20 : -this.margin.top;\n };\n\n ChartInternal.prototype.getXAxisClipX = function () {\n var $$ = this;\n return $$.getAxisClipX(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getXAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipX = function () {\n var $$ = this;\n return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getAxisClipWidth = function (forHorizontal) {\n var $$ = this,\n left = Math.max(30, $$.margin.left),\n right = Math.max(30, $$.margin.right); // width + axis line width + padding for left/right\n\n return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n };\n\n ChartInternal.prototype.getAxisClipHeight = function (forHorizontal) {\n // less than 20 is not enough to show the axis label 'outer' without legend\n return (forHorizontal ? this.margin.bottom : this.margin.top + this.height) + 20;\n };\n\n ChartInternal.prototype.getXAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getXAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n };\n\n ChartInternal.prototype.getYAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.generateColor = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n colors = config.data_colors,\n pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.schemeCategory10,\n callback = config.data_color,\n ids = [];\n return function (d) {\n var id = d.id || d.data && d.data.id || d,\n color; // if callback function is provided\n\n if (colors[id] instanceof Function) {\n color = colors[id](d);\n } // if specified, choose that color\n else if (colors[id]) {\n color = colors[id];\n } // if not specified, choose from pattern\n else {\n if (ids.indexOf(id) < 0) {\n ids.push(id);\n }\n\n color = pattern[ids.indexOf(id) % pattern.length];\n colors[id] = color;\n }\n\n return callback instanceof Function ? callback(color, d) : color;\n };\n };\n\n ChartInternal.prototype.generateLevelColor = function () {\n var $$ = this,\n config = $$.config,\n colors = config.color_pattern,\n threshold = config.color_threshold,\n asValue = threshold.unit === 'value',\n values = threshold.values && threshold.values.length ? threshold.values : [],\n max = threshold.max || 100;\n return notEmpty(threshold) && notEmpty(colors) ? function (value) {\n var i,\n v,\n color = colors[colors.length - 1];\n\n for (i = 0; i < values.length; i++) {\n v = asValue ? value : value * 100 / max;\n\n if (v < values[i]) {\n color = colors[i];\n break;\n }\n }\n\n return color;\n } : null;\n };\n\n ChartInternal.prototype.getDefaultConfig = function () {\n var config = {\n bindto: '#chart',\n svg_classname: undefined,\n size_width: undefined,\n size_height: undefined,\n padding_left: undefined,\n padding_right: undefined,\n padding_top: undefined,\n padding_bottom: undefined,\n resize_auto: true,\n zoom_enabled: false,\n zoom_initialRange: undefined,\n zoom_type: 'scroll',\n zoom_disableDefaultBehavior: false,\n zoom_privileged: false,\n zoom_rescale: false,\n zoom_onzoom: function zoom_onzoom() {},\n zoom_onzoomstart: function zoom_onzoomstart() {},\n zoom_onzoomend: function zoom_onzoomend() {},\n zoom_x_min: undefined,\n zoom_x_max: undefined,\n interaction_brighten: true,\n interaction_enabled: true,\n onmouseover: function onmouseover() {},\n onmouseout: function onmouseout() {},\n onresize: function onresize() {},\n onresized: function onresized() {},\n oninit: function oninit() {},\n onrendered: function onrendered() {},\n transition_duration: 350,\n data_epochs: 'epochs',\n data_x: undefined,\n data_xs: {},\n data_xFormat: '%Y-%m-%d',\n data_xLocaltime: true,\n data_xSort: true,\n data_idConverter: function data_idConverter(id) {\n return id;\n },\n data_names: {},\n data_classes: {},\n data_groups: [],\n data_axes: {},\n data_type: undefined,\n data_types: {},\n data_labels: {},\n data_order: 'desc',\n data_regions: {},\n data_color: undefined,\n data_colors: {},\n data_hide: false,\n data_filter: undefined,\n data_selection_enabled: false,\n data_selection_grouped: false,\n data_selection_isselectable: function data_selection_isselectable() {\n return true;\n },\n data_selection_multiple: true,\n data_selection_draggable: false,\n data_onclick: function data_onclick() {},\n data_onmouseover: function data_onmouseover() {},\n data_onmouseout: function data_onmouseout() {},\n data_onselected: function data_onselected() {},\n data_onunselected: function data_onunselected() {},\n data_url: undefined,\n data_headers: undefined,\n data_json: undefined,\n data_rows: undefined,\n data_columns: undefined,\n data_mimeType: undefined,\n data_keys: undefined,\n // configuration for no plot-able data supplied.\n data_empty_label_text: \"\",\n // subchart\n subchart_show: false,\n subchart_size_height: 60,\n subchart_axis_x_show: true,\n subchart_onbrush: function subchart_onbrush() {},\n // color\n color_pattern: [],\n color_threshold: {},\n // legend\n legend_show: true,\n legend_hide: false,\n legend_position: 'bottom',\n legend_inset_anchor: 'top-left',\n legend_inset_x: 10,\n legend_inset_y: 0,\n legend_inset_step: undefined,\n legend_item_onclick: undefined,\n legend_item_onmouseover: undefined,\n legend_item_onmouseout: undefined,\n legend_equally: false,\n legend_padding: 0,\n legend_item_tile_width: 10,\n legend_item_tile_height: 10,\n // axis\n axis_rotated: false,\n axis_x_show: true,\n axis_x_type: 'indexed',\n axis_x_localtime: true,\n axis_x_categories: [],\n axis_x_tick_centered: false,\n axis_x_tick_format: undefined,\n axis_x_tick_culling: {},\n axis_x_tick_culling_max: 10,\n axis_x_tick_count: undefined,\n axis_x_tick_fit: true,\n axis_x_tick_values: null,\n axis_x_tick_rotate: 0,\n axis_x_tick_outer: true,\n axis_x_tick_multiline: true,\n axis_x_tick_multilineMax: 0,\n axis_x_tick_width: null,\n axis_x_max: undefined,\n axis_x_min: undefined,\n axis_x_padding: {},\n axis_x_height: undefined,\n axis_x_selection: undefined,\n axis_x_label: {},\n axis_x_inner: undefined,\n axis_y_show: true,\n axis_y_type: undefined,\n axis_y_max: undefined,\n axis_y_min: undefined,\n axis_y_inverted: false,\n axis_y_center: undefined,\n axis_y_inner: undefined,\n axis_y_label: {},\n axis_y_tick_format: undefined,\n axis_y_tick_outer: true,\n axis_y_tick_values: null,\n axis_y_tick_rotate: 0,\n axis_y_tick_count: undefined,\n axis_y_tick_time_type: undefined,\n axis_y_tick_time_interval: undefined,\n axis_y_padding: {},\n axis_y_default: undefined,\n axis_y2_show: false,\n axis_y2_max: undefined,\n axis_y2_min: undefined,\n axis_y2_inverted: false,\n axis_y2_center: undefined,\n axis_y2_inner: undefined,\n axis_y2_label: {},\n axis_y2_tick_format: undefined,\n axis_y2_tick_outer: true,\n axis_y2_tick_values: null,\n axis_y2_tick_count: undefined,\n axis_y2_padding: {},\n axis_y2_default: undefined,\n // grid\n grid_x_show: false,\n grid_x_type: 'tick',\n grid_x_lines: [],\n grid_y_show: false,\n // not used\n // grid_y_type: 'tick',\n grid_y_lines: [],\n grid_y_ticks: 10,\n grid_focus_show: true,\n grid_lines_front: true,\n // point - point of each data\n point_show: true,\n point_r: 2.5,\n point_sensitivity: 10,\n point_focus_expand_enabled: true,\n point_focus_expand_r: undefined,\n point_select_r: undefined,\n // line\n line_connectNull: false,\n line_step_type: 'step',\n // bar\n bar_width: undefined,\n bar_width_ratio: 0.6,\n bar_width_max: undefined,\n bar_zerobased: true,\n bar_space: 0,\n // area\n area_zerobased: true,\n area_above: false,\n // pie\n pie_label_show: true,\n pie_label_format: undefined,\n pie_label_threshold: 0.05,\n pie_label_ratio: undefined,\n pie_expand: {},\n pie_expand_duration: 50,\n // gauge\n gauge_fullCircle: false,\n gauge_label_show: true,\n gauge_labelLine_show: true,\n gauge_label_format: undefined,\n gauge_min: 0,\n gauge_max: 100,\n gauge_startingAngle: -1 * Math.PI / 2,\n gauge_label_extents: undefined,\n gauge_units: undefined,\n gauge_width: undefined,\n gauge_arcs_minWidth: 5,\n gauge_expand: {},\n gauge_expand_duration: 50,\n // donut\n donut_label_show: true,\n donut_label_format: undefined,\n donut_label_threshold: 0.05,\n donut_label_ratio: undefined,\n donut_width: undefined,\n donut_title: \"\",\n donut_expand: {},\n donut_expand_duration: 50,\n // spline\n spline_interpolation_type: 'cardinal',\n // stanford\n stanford_lines: [],\n stanford_regions: [],\n stanford_texts: [],\n stanford_scaleMin: undefined,\n stanford_scaleMax: undefined,\n stanford_scaleWidth: undefined,\n stanford_scaleFormat: undefined,\n stanford_scaleValues: undefined,\n stanford_colors: undefined,\n stanford_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n // region - region to change style\n regions: [],\n // tooltip - show when mouseover on each data\n tooltip_show: true,\n tooltip_grouped: true,\n tooltip_order: undefined,\n tooltip_format_title: undefined,\n tooltip_format_name: undefined,\n tooltip_format_value: undefined,\n tooltip_horizontal: undefined,\n tooltip_position: undefined,\n tooltip_contents: function tooltip_contents(d, defaultTitleFormat, defaultValueFormat, color) {\n return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n },\n tooltip_init_show: false,\n tooltip_init_x: 0,\n tooltip_init_position: {\n top: '0px',\n left: '50px'\n },\n tooltip_onshow: function tooltip_onshow() {},\n tooltip_onhide: function tooltip_onhide() {},\n // title\n title_text: undefined,\n title_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n title_position: 'top-center'\n };\n Object.keys(this.additionalConfig).forEach(function (key) {\n config[key] = this.additionalConfig[key];\n }, this);\n return config;\n };\n\n ChartInternal.prototype.additionalConfig = {};\n\n ChartInternal.prototype.loadConfig = function (config) {\n var this_config = this.config,\n target,\n keys,\n read;\n\n function find() {\n var key = keys.shift(); // console.log(\"key =>\", key, \", target =>\", target);\n\n if (key && target && _typeof(target) === 'object' && key in target) {\n target = target[key];\n return find();\n } else if (!key) {\n return target;\n } else {\n return undefined;\n }\n }\n\n Object.keys(this_config).forEach(function (key) {\n target = config;\n keys = key.split('_');\n read = find(); // console.log(\"CONFIG : \", key, read);\n\n if (isDefined(read)) {\n this_config[key] = read;\n }\n });\n };\n\n ChartInternal.prototype.convertUrlToData = function (url, mimeType, headers, keys, done) {\n var $$ = this,\n type = mimeType ? mimeType : 'csv',\n f,\n converter;\n\n if (type === 'json') {\n f = $$.d3.json;\n converter = $$.convertJsonToData;\n } else if (type === 'tsv') {\n f = $$.d3.tsv;\n converter = $$.convertXsvToData;\n } else {\n f = $$.d3.csv;\n converter = $$.convertXsvToData;\n }\n\n f(url, headers).then(function (data) {\n done.call($$, converter.call($$, data, keys));\n }).catch(function (error) {\n throw error;\n });\n };\n\n ChartInternal.prototype.convertXsvToData = function (xsv) {\n var keys = xsv.columns,\n rows = xsv;\n\n if (rows.length === 0) {\n return {\n keys: keys,\n rows: [keys.reduce(function (row, key) {\n return Object.assign(row, _defineProperty({}, key, null));\n }, {})]\n };\n } else {\n // [].concat() is to convert result into a plain array otherwise\n // test is not happy because rows have properties.\n return {\n keys: keys,\n rows: [].concat(xsv)\n };\n }\n };\n\n ChartInternal.prototype.convertJsonToData = function (json, keys) {\n var $$ = this,\n new_rows = [],\n targetKeys,\n data;\n\n if (keys) {\n // when keys specified, json would be an array that includes objects\n if (keys.x) {\n targetKeys = keys.value.concat(keys.x);\n $$.config.data_x = keys.x;\n } else {\n targetKeys = keys.value;\n }\n\n new_rows.push(targetKeys);\n json.forEach(function (o) {\n var new_row = [];\n targetKeys.forEach(function (key) {\n // convert undefined to null because undefined data will be removed in convertDataToTargets()\n var v = $$.findValueInJson(o, key);\n\n if (isUndefined(v)) {\n v = null;\n }\n\n new_row.push(v);\n });\n new_rows.push(new_row);\n });\n data = $$.convertRowsToData(new_rows);\n } else {\n Object.keys(json).forEach(function (key) {\n new_rows.push([key].concat(json[key]));\n });\n data = $$.convertColumnsToData(new_rows);\n }\n\n return data;\n };\n\n ChartInternal.prototype.findValueInJson = function (object, path) {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n\n path = path.replace(/^\\./, ''); // strip a leading dot\n\n var pathArray = path.split('.');\n\n for (var i = 0; i < pathArray.length; ++i) {\n var k = pathArray[i];\n\n if (k in object) {\n object = object[k];\n } else {\n return;\n }\n }\n\n return object;\n };\n /**\n * Converts the rows to normalized data.\n * @param {any[][]} rows The row data\n * @return {Object}\n */\n\n\n ChartInternal.prototype.convertRowsToData = function (rows) {\n var newRows = [];\n var keys = rows[0];\n\n for (var i = 1; i < rows.length; i++) {\n var newRow = {};\n\n for (var j = 0; j < rows[i].length; j++) {\n if (isUndefined(rows[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n\n newRow[keys[j]] = rows[i][j];\n }\n\n newRows.push(newRow);\n }\n\n return {\n keys: keys,\n rows: newRows\n };\n };\n /**\n * Converts the columns to normalized data.\n * @param {any[][]} columns The column data\n * @return {Object}\n */\n\n\n ChartInternal.prototype.convertColumnsToData = function (columns) {\n var newRows = [];\n var keys = [];\n\n for (var i = 0; i < columns.length; i++) {\n var key = columns[i][0];\n\n for (var j = 1; j < columns[i].length; j++) {\n if (isUndefined(newRows[j - 1])) {\n newRows[j - 1] = {};\n }\n\n if (isUndefined(columns[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n\n newRows[j - 1][key] = columns[i][j];\n }\n\n keys.push(key);\n }\n\n return {\n keys: keys,\n rows: newRows\n };\n };\n /**\n * Converts the data format into the target format.\n * @param {!Object} data\n * @param {!Array} data.keys Ordered list of target IDs.\n * @param {!Array} data.rows Rows of data to convert.\n * @param {boolean} appendXs True to append to $$.data.xs, False to replace.\n * @return {!Array}\n */\n\n\n ChartInternal.prototype.convertDataToTargets = function (data, appendXs) {\n var $$ = this,\n config = $$.config,\n targets,\n ids,\n xs,\n keys,\n epochs; // handles format where keys are not orderly provided\n\n if (isArray(data)) {\n keys = Object.keys(data[0]);\n } else {\n keys = data.keys;\n data = data.rows;\n }\n\n xs = keys.filter($$.isX, $$);\n\n if (!$$.isStanfordGraphType()) {\n ids = keys.filter($$.isNotX, $$);\n } else {\n epochs = keys.filter($$.isEpochs, $$);\n ids = keys.filter($$.isNotXAndNotEpochs, $$);\n\n if (xs.length !== 1 || epochs.length !== 1 || ids.length !== 1) {\n throw new Error('You must define the \\'x\\' key name and the \\'epochs\\' for Stanford Diagrams');\n }\n } // save x for update data by load when custom x and c3.x API\n\n\n ids.forEach(function (id) {\n var xKey = $$.getXKey(id);\n\n if ($$.isCustomX() || $$.isTimeSeries()) {\n // if included in input data\n if (xs.indexOf(xKey) >= 0) {\n $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(data.map(function (d) {\n return d[xKey];\n }).filter(isValue).map(function (rawX, i) {\n return $$.generateTargetX(rawX, id, i);\n }));\n } // if not included in input data, find from preloaded data of other id's x\n else if (config.data_x) {\n $$.data.xs[id] = $$.getOtherTargetXs();\n } // if not included in input data, find from preloaded data\n else if (notEmpty(config.data_xs)) {\n $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n } // MEMO: if no x included, use same x of current will be used\n\n } else {\n $$.data.xs[id] = data.map(function (d, i) {\n return i;\n });\n }\n }); // check x is defined\n\n ids.forEach(function (id) {\n if (!$$.data.xs[id]) {\n throw new Error('x is not defined for id = \"' + id + '\".');\n }\n }); // convert to target\n\n targets = ids.map(function (id, index) {\n var convertedId = config.data_idConverter(id);\n return {\n id: convertedId,\n id_org: id,\n values: data.map(function (d, i) {\n var xKey = $$.getXKey(id),\n rawX = d[xKey],\n value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null,\n x,\n returnData; // use x as categories if custom x and categorized\n\n if ($$.isCustomX() && $$.isCategorized() && !isUndefined(rawX)) {\n if (index === 0 && i === 0) {\n config.axis_x_categories = [];\n }\n\n x = config.axis_x_categories.indexOf(rawX);\n\n if (x === -1) {\n x = config.axis_x_categories.length;\n config.axis_x_categories.push(rawX);\n }\n } else {\n x = $$.generateTargetX(rawX, id, i);\n } // mark as x = undefined if value is undefined and filter to remove after mapped\n\n\n if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n x = undefined;\n }\n\n returnData = {\n x: x,\n value: value,\n id: convertedId\n };\n\n if ($$.isStanfordGraphType()) {\n returnData.epochs = d[epochs];\n }\n\n return returnData;\n }).filter(function (v) {\n return isDefined(v.x);\n })\n };\n }); // finish targets\n\n targets.forEach(function (t) {\n var i; // sort values by its x\n\n if (config.data_xSort) {\n t.values = t.values.sort(function (v1, v2) {\n var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n return x1 - x2;\n });\n } // indexing each value\n\n\n i = 0;\n t.values.forEach(function (v) {\n v.index = i++;\n }); // this needs to be sorted because its index and value.index is identical\n\n $$.data.xs[t.id].sort(function (v1, v2) {\n return v1 - v2;\n });\n }); // cache information about values\n\n $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets); // set target types\n\n if (config.data_type) {\n $$.setTargetType($$.mapToIds(targets).filter(function (id) {\n return !(id in config.data_types);\n }), config.data_type);\n } // cache as original id keyed\n\n\n targets.forEach(function (d) {\n $$.addCache(d.id_org, d);\n });\n return targets;\n };\n\n ChartInternal.prototype.isEpochs = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_epochs && key === config.data_epochs;\n };\n\n ChartInternal.prototype.isX = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_x && key === config.data_x || notEmpty(config.data_xs) && hasValue(config.data_xs, key);\n };\n\n ChartInternal.prototype.isNotX = function (key) {\n return !this.isX(key);\n };\n\n ChartInternal.prototype.isNotXAndNotEpochs = function (key) {\n return !this.isX(key) && !this.isEpochs(key);\n };\n\n ChartInternal.prototype.getXKey = function (id) {\n var $$ = this,\n config = $$.config;\n return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n };\n\n ChartInternal.prototype.getXValuesOfXKey = function (key, targets) {\n var $$ = this,\n xValues,\n ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n ids.forEach(function (id) {\n if ($$.getXKey(id) === key) {\n xValues = $$.data.xs[id];\n }\n });\n return xValues;\n };\n\n ChartInternal.prototype.getXValue = function (id, i) {\n var $$ = this;\n return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n };\n\n ChartInternal.prototype.getOtherTargetXs = function () {\n var $$ = this,\n idsForX = Object.keys($$.data.xs);\n return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n };\n\n ChartInternal.prototype.getOtherTargetX = function (index) {\n var xs = this.getOtherTargetXs();\n return xs && index < xs.length ? xs[index] : null;\n };\n\n ChartInternal.prototype.addXs = function (xs) {\n var $$ = this;\n Object.keys(xs).forEach(function (id) {\n $$.config.data_xs[id] = xs[id];\n });\n };\n\n ChartInternal.prototype.addName = function (data) {\n var $$ = this,\n name;\n\n if (data) {\n name = $$.config.data_names[data.id];\n data.name = name !== undefined ? name : data.id;\n }\n\n return data;\n };\n\n ChartInternal.prototype.getValueOnIndex = function (values, index) {\n var valueOnIndex = values.filter(function (v) {\n return v.index === index;\n });\n return valueOnIndex.length ? valueOnIndex[0] : null;\n };\n\n ChartInternal.prototype.updateTargetX = function (targets, x) {\n var $$ = this;\n targets.forEach(function (t) {\n t.values.forEach(function (v, i) {\n v.x = $$.generateTargetX(x[i], t.id, i);\n });\n $$.data.xs[t.id] = x;\n });\n };\n\n ChartInternal.prototype.updateTargetXs = function (targets, xs) {\n var $$ = this;\n targets.forEach(function (t) {\n if (xs[t.id]) {\n $$.updateTargetX([t], xs[t.id]);\n }\n });\n };\n\n ChartInternal.prototype.generateTargetX = function (rawX, id, index) {\n var $$ = this,\n x;\n\n if ($$.isTimeSeries()) {\n x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n } else if ($$.isCustomX() && !$$.isCategorized()) {\n x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n } else {\n x = index;\n }\n\n return x;\n };\n\n ChartInternal.prototype.cloneTarget = function (target) {\n return {\n id: target.id,\n id_org: target.id_org,\n values: target.values.map(function (d) {\n return {\n x: d.x,\n value: d.value,\n id: d.id\n };\n })\n };\n };\n\n ChartInternal.prototype.getMaxDataCount = function () {\n var $$ = this;\n return $$.d3.max($$.data.targets, function (t) {\n return t.values.length;\n });\n };\n\n ChartInternal.prototype.mapToIds = function (targets) {\n return targets.map(function (d) {\n return d.id;\n });\n };\n\n ChartInternal.prototype.mapToTargetIds = function (ids) {\n var $$ = this;\n return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n };\n\n ChartInternal.prototype.hasTarget = function (targets, id) {\n var ids = this.mapToIds(targets),\n i;\n\n for (i = 0; i < ids.length; i++) {\n if (ids[i] === id) {\n return true;\n }\n }\n\n return false;\n };\n\n ChartInternal.prototype.isTargetToShow = function (targetId) {\n return this.hiddenTargetIds.indexOf(targetId) < 0;\n };\n\n ChartInternal.prototype.isLegendToShow = function (targetId) {\n return this.hiddenLegendIds.indexOf(targetId) < 0;\n };\n\n ChartInternal.prototype.filterTargetsToShow = function (targets) {\n var $$ = this;\n return targets.filter(function (t) {\n return $$.isTargetToShow(t.id);\n });\n };\n\n ChartInternal.prototype.mapTargetsToUniqueXs = function (targets) {\n var $$ = this;\n var xs = $$.d3.set($$.d3.merge(targets.map(function (t) {\n return t.values.map(function (v) {\n return +v.x;\n });\n }))).values();\n xs = $$.isTimeSeries() ? xs.map(function (x) {\n return new Date(+x);\n }) : xs.map(function (x) {\n return +x;\n });\n return xs.sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n });\n };\n\n ChartInternal.prototype.addHiddenTargetIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenTargetIds.indexOf(targetIds[i]) < 0) {\n this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds[i]);\n }\n }\n };\n\n ChartInternal.prototype.removeHiddenTargetIds = function (targetIds) {\n this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n ChartInternal.prototype.addHiddenLegendIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenLegendIds.indexOf(targetIds[i]) < 0) {\n this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds[i]);\n }\n }\n };\n\n ChartInternal.prototype.removeHiddenLegendIds = function (targetIds) {\n this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n ChartInternal.prototype.getValuesAsIdKeyed = function (targets) {\n var ys = {};\n targets.forEach(function (t) {\n ys[t.id] = [];\n t.values.forEach(function (v) {\n ys[t.id].push(v.value);\n });\n });\n return ys;\n };\n\n ChartInternal.prototype.checkValueInTargets = function (targets, checker) {\n var ids = Object.keys(targets),\n i,\n j,\n values;\n\n for (i = 0; i < ids.length; i++) {\n values = targets[ids[i]].values;\n\n for (j = 0; j < values.length; j++) {\n if (checker(values[j].value)) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n ChartInternal.prototype.hasNegativeValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v < 0;\n });\n };\n\n ChartInternal.prototype.hasPositiveValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v > 0;\n });\n };\n\n ChartInternal.prototype.isOrderDesc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'desc';\n };\n\n ChartInternal.prototype.isOrderAsc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'asc';\n };\n\n ChartInternal.prototype.getOrderFunction = function () {\n var $$ = this,\n config = $$.config,\n orderAsc = $$.isOrderAsc(),\n orderDesc = $$.isOrderDesc();\n\n if (orderAsc || orderDesc) {\n var reducer = function reducer(p, c) {\n return p + Math.abs(c.value);\n };\n\n return function (t1, t2) {\n var t1Sum = t1.values.reduce(reducer, 0),\n t2Sum = t2.values.reduce(reducer, 0);\n return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\n };\n } else if (isFunction(config.data_order)) {\n return config.data_order;\n } else if (isArray(config.data_order)) {\n var order = config.data_order;\n return function (t1, t2) {\n return order.indexOf(t1.id) - order.indexOf(t2.id);\n };\n }\n };\n\n ChartInternal.prototype.orderTargets = function (targets) {\n var fct = this.getOrderFunction();\n\n if (fct) {\n targets.sort(fct);\n }\n\n return targets;\n };\n\n ChartInternal.prototype.filterByX = function (targets, x) {\n return this.d3.merge(targets.map(function (t) {\n return t.values;\n })).filter(function (v) {\n return v.x - x === 0;\n });\n };\n\n ChartInternal.prototype.filterRemoveNull = function (data) {\n return data.filter(function (d) {\n return isValue(d.value);\n });\n };\n\n ChartInternal.prototype.filterByXDomain = function (targets, xDomain) {\n return targets.map(function (t) {\n return {\n id: t.id,\n id_org: t.id_org,\n values: t.values.filter(function (v) {\n return xDomain[0] <= v.x && v.x <= xDomain[1];\n })\n };\n });\n };\n\n ChartInternal.prototype.hasDataLabel = function () {\n var config = this.config;\n\n if (typeof config.data_labels === 'boolean' && config.data_labels) {\n return true;\n } else if (_typeof(config.data_labels) === 'object' && notEmpty(config.data_labels)) {\n return true;\n }\n\n return false;\n };\n\n ChartInternal.prototype.getDataLabelLength = function (min, max, key) {\n var $$ = this,\n lengths = [0, 0],\n paddingCoef = 1.3;\n $$.selectChart.select('svg').selectAll('.dummy').data([min, max]).enter().append('text').text(function (d) {\n return $$.dataLabelFormat(d.id)(d);\n }).each(function (d, i) {\n lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n }).remove();\n return lengths;\n };\n /**\n * Returns true if the given data point is not arc type, otherwise false.\n * @param {Object} d The data point\n * @return {boolean}\n */\n\n\n ChartInternal.prototype.isNoneArc = function (d) {\n return this.hasTarget(this.data.targets, d.id);\n };\n /**\n * Returns true if the given data point is arc type, otherwise false.\n * @param {Object} d The data point\n * @return {boolean}\n */\n\n\n ChartInternal.prototype.isArc = function (d) {\n return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n };\n\n ChartInternal.prototype.findClosestFromTargets = function (targets, pos) {\n var $$ = this,\n candidates; // map to array of closest points of each target\n\n candidates = targets.map(function (target) {\n return $$.findClosest(target.values, pos);\n }); // decide closest point and return\n\n return $$.findClosest(candidates, pos);\n };\n\n ChartInternal.prototype.findClosest = function (values, pos) {\n var $$ = this,\n minDist = $$.config.point_sensitivity,\n closest; // find mouseovering bar\n\n values.filter(function (v) {\n return v && $$.isBarType(v.id);\n }).forEach(function (v) {\n var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n\n if (!closest && $$.isWithinBar($$.d3.mouse(shape), shape)) {\n closest = v;\n }\n }); // find closest point from non-bar\n\n values.filter(function (v) {\n return v && !$$.isBarType(v.id);\n }).forEach(function (v) {\n var d = $$.config.tooltip_horizontal ? $$.horizontalDistance(v, pos) : $$.dist(v, pos);\n\n if (d < minDist) {\n minDist = d;\n closest = v;\n }\n });\n return closest;\n };\n\n ChartInternal.prototype.dist = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n yIndex = config.axis_rotated ? 0 : 1,\n y = $$.circleY(data, data.index),\n x = $$.x(data.x);\n return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n };\n\n ChartInternal.prototype.horizontalDistance = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n x = $$.x(data.x);\n return Math.abs(x - pos[xIndex]);\n };\n\n ChartInternal.prototype.convertValuesToStep = function (values) {\n var converted = [].concat(values),\n i;\n\n if (!this.isCategorized()) {\n return values;\n }\n\n for (i = values.length + 1; 0 < i; i--) {\n converted[i] = converted[i - 1];\n }\n\n converted[0] = {\n x: converted[0].x - 1,\n value: converted[0].value,\n id: converted[0].id\n };\n converted[values.length + 1] = {\n x: converted[values.length].x + 1,\n value: converted[values.length].value,\n id: converted[values.length].id\n };\n return converted;\n };\n\n ChartInternal.prototype.updateDataAttributes = function (name, attrs) {\n var $$ = this,\n config = $$.config,\n current = config['data_' + name];\n\n if (typeof attrs === 'undefined') {\n return current;\n }\n\n Object.keys(attrs).forEach(function (id) {\n current[id] = attrs[id];\n });\n $$.redraw({\n withLegend: true\n });\n return current;\n };\n\n ChartInternal.prototype.load = function (targets, args) {\n var $$ = this;\n\n if (targets) {\n // filter loading targets if needed\n if (args.filter) {\n targets = targets.filter(args.filter);\n } // set type if args.types || args.type specified\n\n\n if (args.type || args.types) {\n targets.forEach(function (t) {\n var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n $$.setTargetType(t.id, type);\n });\n } // Update/Add data\n\n\n $$.data.targets.forEach(function (d) {\n for (var i = 0; i < targets.length; i++) {\n if (d.id === targets[i].id) {\n d.values = targets[i].values;\n targets.splice(i, 1);\n break;\n }\n }\n });\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n } // Set targets\n\n\n $$.updateTargets($$.data.targets); // Redraw with new targets\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n\n if (args.done) {\n args.done();\n }\n };\n\n ChartInternal.prototype.loadFromArgs = function (args) {\n var $$ = this;\n\n if (args.data) {\n $$.load($$.convertDataToTargets(args.data), args);\n } else if (args.url) {\n $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n $$.load($$.convertDataToTargets(data), args);\n });\n } else if (args.json) {\n $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n } else if (args.rows) {\n $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n } else if (args.columns) {\n $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n } else {\n $$.load(null, args);\n }\n };\n\n ChartInternal.prototype.unload = function (targetIds, done) {\n var $$ = this;\n\n if (!done) {\n done = function done() {};\n } // filter existing target\n\n\n targetIds = targetIds.filter(function (id) {\n return $$.hasTarget($$.data.targets, id);\n }); // If no target, call done and return\n\n if (!targetIds || targetIds.length === 0) {\n done();\n return;\n }\n\n $$.svg.selectAll(targetIds.map(function (id) {\n return $$.selectorTarget(id);\n })).transition().style('opacity', 0).remove().call($$.endall, done);\n targetIds.forEach(function (id) {\n // Reset fadein for future load\n $$.withoutFadeIn[id] = false; // Remove target's elements\n\n if ($$.legend) {\n $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n } // Remove target\n\n\n $$.data.targets = $$.data.targets.filter(function (t) {\n return t.id !== id;\n });\n });\n };\n\n ChartInternal.prototype.getYDomainMin = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasNegativeValue;\n\n if (config.data_groups.length > 0) {\n hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n\n if (idsInGroup.length === 0) {\n continue;\n }\n\n baseId = idsInGroup[0]; // Consider negative values\n\n if (hasNegativeValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v < 0 ? v : 0;\n });\n } // Compute min\n\n\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n\n if (!ys[id]) {\n continue;\n }\n\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n\n return $$.d3.min(Object.keys(ys).map(function (key) {\n return $$.d3.min(ys[key]);\n }));\n };\n\n ChartInternal.prototype.getYDomainMax = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasPositiveValue;\n\n if (config.data_groups.length > 0) {\n hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n\n if (idsInGroup.length === 0) {\n continue;\n }\n\n baseId = idsInGroup[0]; // Consider positive values\n\n if (hasPositiveValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v > 0 ? v : 0;\n });\n } // Compute max\n\n\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n\n if (!ys[id]) {\n continue;\n }\n\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n\n return $$.d3.max(Object.keys(ys).map(function (key) {\n return $$.d3.max(ys[key]);\n }));\n };\n\n ChartInternal.prototype.getYDomain = function (targets, axisId, xDomain) {\n var $$ = this,\n config = $$.config,\n targetsByAxisId = targets.filter(function (t) {\n return $$.axis.getId(t.id) === axisId;\n }),\n yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n yDomainMin = $$.getYDomainMin(yTargets),\n yDomainMax = $$.getYDomainMax(yTargets),\n domain,\n domainLength,\n padding,\n padding_top,\n padding_bottom,\n center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n yDomainAbs,\n lengths,\n diff,\n ratio,\n isAllPositive,\n isAllNegative,\n isZeroBased = $$.hasType('bar', yTargets) && config.bar_zerobased || $$.hasType('area', yTargets) && config.area_zerobased,\n isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated; // MEMO: avoid inverting domain unexpectedly\n\n yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? yDomainMin < yMax ? yDomainMin : yMax - 10 : yDomainMin;\n yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? yMin < yDomainMax ? yDomainMax : yMin + 10 : yDomainMax;\n\n if (yTargets.length === 0) {\n // use current domain if target of axisId is none\n return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n }\n\n if (isNaN(yDomainMin)) {\n // set minimum to zero when not number\n yDomainMin = 0;\n }\n\n if (isNaN(yDomainMax)) {\n // set maximum to have same value as yDomainMin\n yDomainMax = yDomainMin;\n }\n\n if (yDomainMin === yDomainMax) {\n yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n }\n\n isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n isAllNegative = yDomainMin <= 0 && yDomainMax <= 0; // Cancel zerobased if axis_*_min / axis_*_max specified\n\n if (isValue(yMin) && isAllPositive || isValue(yMax) && isAllNegative) {\n isZeroBased = false;\n } // Bar/Area chart should be 0-based if all positive|negative\n\n\n if (isZeroBased) {\n if (isAllPositive) {\n yDomainMin = 0;\n }\n\n if (isAllNegative) {\n yDomainMax = 0;\n }\n }\n\n domainLength = Math.abs(yDomainMax - yDomainMin);\n padding = padding_top = padding_bottom = domainLength * 0.1;\n\n if (typeof center !== 'undefined') {\n yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n yDomainMax = center + yDomainAbs;\n yDomainMin = center - yDomainAbs;\n } // add padding for data label\n\n\n if (showHorizontalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n diff = diffDomain($$.y.range());\n ratio = [lengths[0] / diff, lengths[1] / diff];\n padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n } else if (showVerticalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n }\n\n if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n }\n\n if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n } // Bar/Area chart should be 0-based if all positive|negative\n\n\n if (isZeroBased) {\n if (isAllPositive) {\n padding_bottom = yDomainMin;\n }\n\n if (isAllNegative) {\n padding_top = -yDomainMax;\n }\n }\n\n domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n return isInverted ? domain.reverse() : domain;\n };\n\n ChartInternal.prototype.getXDomainMin = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_min) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min : $$.d3.min(targets, function (t) {\n return $$.d3.min(t.values, function (v) {\n return v.x;\n });\n });\n };\n\n ChartInternal.prototype.getXDomainMax = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_max) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max : $$.d3.max(targets, function (t) {\n return $$.d3.max(t.values, function (v) {\n return v.x;\n });\n });\n };\n\n ChartInternal.prototype.getXDomainPadding = function (domain) {\n var $$ = this,\n config = $$.config,\n diff = domain[1] - domain[0],\n maxDataCount,\n padding,\n paddingLeft,\n paddingRight;\n\n if ($$.isCategorized()) {\n padding = 0;\n } else if ($$.hasType('bar')) {\n maxDataCount = $$.getMaxDataCount();\n padding = maxDataCount > 1 ? diff / (maxDataCount - 1) / 2 : 0.5;\n } else {\n padding = diff * 0.01;\n }\n\n if (_typeof(config.axis_x_padding) === 'object' && notEmpty(config.axis_x_padding)) {\n paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n } else if (typeof config.axis_x_padding === 'number') {\n paddingLeft = paddingRight = config.axis_x_padding;\n } else {\n paddingLeft = paddingRight = padding;\n }\n\n return {\n left: paddingLeft,\n right: paddingRight\n };\n };\n\n ChartInternal.prototype.getXDomain = function (targets) {\n var $$ = this,\n xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n firstX = xDomain[0],\n lastX = xDomain[1],\n padding = $$.getXDomainPadding(xDomain),\n min = 0,\n max = 0; // show center of x domain if min and max are the same\n\n if (firstX - lastX === 0 && !$$.isCategorized()) {\n if ($$.isTimeSeries()) {\n firstX = new Date(firstX.getTime() * 0.5);\n lastX = new Date(lastX.getTime() * 1.5);\n } else {\n firstX = firstX === 0 ? 1 : firstX * 0.5;\n lastX = lastX === 0 ? -1 : lastX * 1.5;\n }\n }\n\n if (firstX || firstX === 0) {\n min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n }\n\n if (lastX || lastX === 0) {\n max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n }\n\n return [min, max];\n };\n\n ChartInternal.prototype.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n var $$ = this,\n config = $$.config;\n\n if (withUpdateOrgXDomain) {\n $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n $$.orgXDomain = $$.x.domain();\n\n if (config.zoom_enabled) {\n $$.zoom.update();\n }\n\n $$.subX.domain($$.x.domain());\n\n if ($$.brush) {\n $$.brush.updateScale($$.subX);\n }\n }\n\n if (withUpdateXDomain) {\n $$.x.domain(domain ? domain : !$$.brush || $$.brush.empty() ? $$.orgXDomain : $$.brush.selectionAsValue());\n } // Trim domain when too big by zoom mousemove event\n\n\n if (withTrim) {\n $$.x.domain($$.trimXDomain($$.x.orgDomain()));\n }\n\n return $$.x.domain();\n };\n\n ChartInternal.prototype.trimXDomain = function (domain) {\n var zoomDomain = this.getZoomDomain(),\n min = zoomDomain[0],\n max = zoomDomain[1];\n\n if (domain[0] <= min) {\n domain[1] = +domain[1] + (min - domain[0]);\n domain[0] = min;\n }\n\n if (max <= domain[1]) {\n domain[0] = +domain[0] - (domain[1] - max);\n domain[1] = max;\n }\n\n return domain;\n };\n\n ChartInternal.prototype.drag = function (mouse) {\n var $$ = this,\n config = $$.config,\n main = $$.main,\n d3 = $$.d3;\n var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n if (!config.data_selection_multiple) {\n return;\n } // skip when single selection because drag is used for multiple selection\n\n\n sx = $$.dragStart[0];\n sy = $$.dragStart[1];\n mx = mouse[0];\n my = mouse[1];\n minX = Math.min(sx, mx);\n maxX = Math.max(sx, mx);\n minY = config.data_selection_grouped ? $$.margin.top : Math.min(sy, my);\n maxY = config.data_selection_grouped ? $$.height : Math.max(sy, my);\n main.select('.' + CLASS.dragarea).attr('x', minX).attr('y', minY).attr('width', maxX - minX).attr('height', maxY - minY); // TODO: binary search when multiple xs\n\n main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).filter(function (d) {\n return config.data_selection_isselectable(d);\n }).each(function (d, i) {\n var shape = d3.select(this),\n isSelected = shape.classed(CLASS.SELECTED),\n isIncluded = shape.classed(CLASS.INCLUDED),\n _x,\n _y,\n _w,\n _h,\n toggle,\n isWithin = false,\n box;\n\n if (shape.classed(CLASS.circle)) {\n _x = shape.attr(\"cx\") * 1;\n _y = shape.attr(\"cy\") * 1;\n toggle = $$.togglePoint;\n isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n } else if (shape.classed(CLASS.bar)) {\n box = getPathBox(this);\n _x = box.x;\n _y = box.y;\n _w = box.width;\n _h = box.height;\n toggle = $$.togglePath;\n isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n } else {\n // line/area selection not supported yet\n return;\n }\n\n if (isWithin ^ isIncluded) {\n shape.classed(CLASS.INCLUDED, !isIncluded); // TODO: included/unincluded callback here\n\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle.call($$, !isSelected, shape, d, i);\n }\n });\n };\n\n ChartInternal.prototype.dragstart = function (mouse) {\n var $$ = this,\n config = $$.config;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n $$.dragStart = mouse;\n $$.main.select('.' + CLASS.chart).append('rect').attr('class', CLASS.dragarea).style('opacity', 0.1);\n $$.dragging = true;\n };\n\n ChartInternal.prototype.dragend = function () {\n var $$ = this,\n config = $$.config;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n $$.main.select('.' + CLASS.dragarea).transition().duration(100).style('opacity', 0).remove();\n $$.main.selectAll('.' + CLASS.shape).classed(CLASS.INCLUDED, false);\n $$.dragging = false;\n };\n\n ChartInternal.prototype.getYFormat = function (forArc) {\n var $$ = this,\n formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n return function (v, ratio, id) {\n var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n return format.call($$, v, ratio);\n };\n };\n\n ChartInternal.prototype.yFormat = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n\n ChartInternal.prototype.y2Format = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n\n ChartInternal.prototype.defaultValueFormat = function (v) {\n return isValue(v) ? +v : \"\";\n };\n\n ChartInternal.prototype.defaultArcValueFormat = function (v, ratio) {\n return (ratio * 100).toFixed(1) + '%';\n };\n\n ChartInternal.prototype.dataLabelFormat = function (targetId) {\n var $$ = this,\n data_labels = $$.config.data_labels,\n format,\n defaultFormat = function defaultFormat(v) {\n return isValue(v) ? +v : \"\";\n }; // find format according to axis id\n\n\n if (typeof data_labels.format === 'function') {\n format = data_labels.format;\n } else if (_typeof(data_labels.format) === 'object') {\n if (data_labels.format[targetId]) {\n format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n } else {\n format = function format() {\n return '';\n };\n }\n } else {\n format = defaultFormat;\n }\n\n return format;\n };\n\n ChartInternal.prototype.initGrid = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n $$.grid = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid);\n\n if (config.grid_x_show) {\n $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n }\n\n if (config.grid_y_show) {\n $$.grid.append('g').attr('class', CLASS.ygrids);\n }\n\n if (config.grid_focus_show) {\n $$.grid.append('g').attr(\"class\", CLASS.xgridFocus).append('line').attr('class', CLASS.xgridFocus);\n }\n\n $$.xgrid = d3.selectAll([]);\n\n if (!config.grid_lines_front) {\n $$.initGridLines();\n }\n };\n\n ChartInternal.prototype.initGridLines = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.gridLines = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n $$.xgridLines = d3.selectAll([]);\n };\n\n ChartInternal.prototype.updateXGrid = function (withoutUpdate) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n $$.xgridAttr = config.axis_rotated ? {\n 'x1': 0,\n 'x2': $$.width,\n 'y1': function y1(d) {\n return $$.x(d) - tickOffset;\n },\n 'y2': function y2(d) {\n return $$.x(d) - tickOffset;\n }\n } : {\n 'x1': function x1(d) {\n return $$.x(d) + tickOffset;\n },\n 'x2': function x2(d) {\n return $$.x(d) + tickOffset;\n },\n 'y1': 0,\n 'y2': $$.height\n };\n\n $$.xgridAttr.opacity = function () {\n var pos = +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1');\n return pos === (config.axis_rotated ? $$.height : 0) ? 0 : 1;\n };\n\n var xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid).data(xgridData);\n var xgridEnter = xgrid.enter().append('line').attr(\"class\", CLASS.xgrid).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", 0);\n $$.xgrid = xgridEnter.merge(xgrid);\n\n if (!withoutUpdate) {\n $$.xgrid.attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n }\n\n xgrid.exit().remove();\n };\n\n ChartInternal.prototype.updateYGrid = function () {\n var $$ = this,\n config = $$.config,\n gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n var ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid).data(gridValues);\n var ygridEnter = ygrid.enter().append('line') // TODO: x1, x2, y1, y2, opacity need to be set here maybe\n .attr('class', CLASS.ygrid);\n $$.ygrid = ygridEnter.merge(ygrid);\n $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0).attr(\"x2\", config.axis_rotated ? $$.y : $$.width).attr(\"y1\", config.axis_rotated ? 0 : $$.y).attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n ygrid.exit().remove();\n $$.smoothLines($$.ygrid, 'grid');\n };\n\n ChartInternal.prototype.gridTextAnchor = function (d) {\n return d.position ? d.position : \"end\";\n };\n\n ChartInternal.prototype.gridTextDx = function (d) {\n return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n };\n\n ChartInternal.prototype.xGridTextX = function (d) {\n return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n };\n\n ChartInternal.prototype.yGridTextX = function (d) {\n return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n };\n\n ChartInternal.prototype.updateGrid = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n xgridLine,\n xgridLineEnter,\n ygridLine,\n ygridLineEnter,\n xv = $$.xv.bind($$),\n yv = $$.yv.bind($$),\n xGridTextX = $$.xGridTextX.bind($$),\n yGridTextX = $$.yGridTextX.bind($$); // hide if arc type\n\n $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n\n if (config.grid_x_show) {\n $$.updateXGrid();\n }\n\n xgridLine = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine).data(config.grid_x_lines); // enter\n\n xgridLineEnter = xgridLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n xgridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 0);\n xgridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").attr(\"x\", config.axis_rotated ? yGridTextX : xGridTextX).attr(\"y\", xv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0); // udpate\n\n $$.xgridLines = xgridLineEnter.merge(xgridLine); // done in d3.transition() of the end of this function\n // exit\n\n xgridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Y-Grid\n\n if (config.grid_y_show) {\n $$.updateYGrid();\n }\n\n ygridLine = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine).data(config.grid_y_lines); // enter\n\n ygridLineEnter = ygridLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n ygridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 0);\n ygridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").attr(\"x\", config.axis_rotated ? xGridTextX : yGridTextX).attr(\"y\", yv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0); // update\n\n $$.ygridLines = ygridLineEnter.merge(ygridLine);\n $$.ygridLines.select('line').transition().duration(duration).attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 1);\n $$.ygridLines.select('text').transition().duration(duration).attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$)).attr(\"y\", yv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1); // exit\n\n ygridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.redrawGrid = function (withTransition, transition) {\n var $$ = this,\n config = $$.config,\n xv = $$.xv.bind($$),\n lines = $$.xgridLines.select('line'),\n texts = $$.xgridLines.select('text');\n return [(withTransition ? lines.transition(transition) : lines).attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 1), (withTransition ? texts.transition(transition) : texts).attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$)).attr(\"y\", xv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.showXGridFocus = function (selectedData) {\n var $$ = this,\n config = $$.config,\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n xx = $$.xx.bind($$);\n\n if (!config.tooltip_show) {\n return;\n } // Hide when scatter plot exists\n\n\n if ($$.hasType('scatter') || $$.hasType('stanford') || $$.hasArcType()) {\n return;\n }\n\n focusEl.style(\"visibility\", \"visible\").data([dataToShow[0]]).attr(config.axis_rotated ? 'y1' : 'x1', xx).attr(config.axis_rotated ? 'y2' : 'x2', xx);\n $$.smoothLines(focusEl, 'grid');\n };\n\n ChartInternal.prototype.hideXGridFocus = function () {\n this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n };\n\n ChartInternal.prototype.updateXgridFocus = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('line.' + CLASS.xgridFocus).attr(\"x1\", config.axis_rotated ? 0 : -10).attr(\"x2\", config.axis_rotated ? $$.width : -10).attr(\"y1\", config.axis_rotated ? -10 : 0).attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n };\n\n ChartInternal.prototype.generateGridData = function (type, scale) {\n var $$ = this,\n gridData = [],\n xDomain,\n firstYear,\n lastYear,\n i,\n tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n\n if (type === 'year') {\n xDomain = $$.getXDomain();\n firstYear = xDomain[0].getFullYear();\n lastYear = xDomain[1].getFullYear();\n\n for (i = firstYear; i <= lastYear; i++) {\n gridData.push(new Date(i + '-01-01 00:00:00'));\n }\n } else {\n gridData = scale.ticks(10);\n\n if (gridData.length > tickNum) {\n // use only int\n gridData = gridData.filter(function (d) {\n return (\"\" + d).indexOf('.') < 0;\n });\n }\n }\n\n return gridData;\n };\n\n ChartInternal.prototype.getGridFilterToRemove = function (params) {\n return params ? function (line) {\n var found = false;\n [].concat(params).forEach(function (param) {\n if ('value' in param && line.value === param.value || 'class' in param && line['class'] === param['class']) {\n found = true;\n }\n });\n return found;\n } : function () {\n return true;\n };\n };\n\n ChartInternal.prototype.removeGridLines = function (params, forX) {\n var $$ = this,\n config = $$.config,\n toRemove = $$.getGridFilterToRemove(params),\n toShow = function toShow(line) {\n return !toRemove(line);\n },\n classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n\n $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove).transition().duration(config.transition_duration).style('opacity', 0).remove();\n\n if (forX) {\n config.grid_x_lines = config.grid_x_lines.filter(toShow);\n } else {\n config.grid_y_lines = config.grid_y_lines.filter(toShow);\n }\n };\n\n ChartInternal.prototype.initEventRect = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.eventRects).style('fill-opacity', 0);\n $$.eventRect = $$.main.select('.' + CLASS.eventRects).append('rect').attr('class', CLASS.eventRect); // event rect handle zoom event as well\n\n if (config.zoom_enabled && $$.zoom) {\n $$.eventRect.call($$.zoom).on(\"dblclick.zoom\", null);\n\n if (config.zoom_initialRange) {\n // WORKAROUND: Add transition to apply transform immediately when no subchart\n $$.eventRect.transition().duration(0).call($$.zoom.transform, $$.zoomTransform(config.zoom_initialRange));\n }\n }\n };\n\n ChartInternal.prototype.redrawEventRect = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n x,\n y,\n w,\n h; // TODO: rotated not supported yet\n\n x = 0;\n y = 0;\n w = $$.width;\n h = $$.height;\n\n function mouseout() {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n $$.hideXGridFocus();\n $$.hideTooltip();\n $$.unexpandCircles();\n $$.unexpandBars();\n } // rects for mouseover\n\n\n $$.main.select('.' + CLASS.eventRects).style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null);\n $$.eventRect.attr('x', x).attr('y', y).attr('width', w).attr('height', h).on('mouseout', config.interaction_enabled ? function () {\n if (!config) {\n return;\n } // chart is destroyed\n\n\n if ($$.hasArcType()) {\n return;\n }\n\n mouseout();\n } : null).on('mousemove', config.interaction_enabled ? function () {\n var targetsToShow, mouse, closest, sameXData, selectedData;\n\n if ($$.dragging) {\n return;\n } // do nothing when dragging\n\n\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n config.data_onmouseout.call($$.api, $$.mouseover);\n $$.mouseover = undefined;\n }\n\n if (!closest) {\n mouseout();\n return;\n }\n\n if ($$.isScatterOrStanfordType(closest) || !config.tooltip_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n } // show tooltip when cursor is close to some point\n\n\n selectedData = sameXData.map(function (d) {\n return $$.addName(d);\n });\n $$.showTooltip(selectedData, this); // expand points\n\n if (config.point_focus_expand_enabled) {\n $$.unexpandCircles();\n selectedData.forEach(function (d) {\n $$.expandCircles(d.index, d.id, false);\n });\n }\n\n $$.expandBars(closest.index, closest.id, true); // Show xgrid focus line\n\n $$.showXGridFocus(selectedData); // Show cursor as pointer if point is close to mouse position\n\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n\n if (!$$.mouseover) {\n config.data_onmouseover.call($$.api, closest);\n $$.mouseover = closest;\n }\n }\n } : null).on('click', config.interaction_enabled ? function () {\n var targetsToShow, mouse, closest, sameXData;\n\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if (!closest) {\n return;\n } // select if selection enabled\n\n\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n if ($$.isScatterOrStanfordType(closest) || !config.data_selection_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n }\n\n sameXData.forEach(function (d) {\n $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.shape + '-' + d.index).each(function () {\n if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n $$.toggleShape(this, d, d.index);\n config.data_onclick.call($$.api, d, this);\n }\n });\n });\n }\n } : null).call(config.interaction_enabled && config.data_selection_draggable && $$.drag ? d3.drag().on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('start', function () {\n $$.dragstart(d3.mouse(this));\n }).on('end', function () {\n $$.dragend();\n }) : function () {});\n };\n\n ChartInternal.prototype.getMousePosition = function (data) {\n var $$ = this;\n return [$$.x(data.x), $$.getYScale(data.id)(data.value)];\n };\n\n ChartInternal.prototype.dispatchEvent = function (type, mouse) {\n var $$ = this,\n selector = '.' + CLASS.eventRect,\n eventRect = $$.main.select(selector).node(),\n box = eventRect.getBoundingClientRect(),\n x = box.left + (mouse ? mouse[0] : 0),\n y = box.top + (mouse ? mouse[1] : 0),\n event = document.createEvent(\"MouseEvents\");\n event.initMouseEvent(type, true, true, window, 0, x, y, x, y, false, false, false, false, 0, null);\n eventRect.dispatchEvent(event);\n };\n\n ChartInternal.prototype.initLegend = function () {\n var $$ = this;\n $$.legendItemTextBox = {};\n $$.legendHasRendered = false;\n $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n\n if (!$$.config.legend_show) {\n $$.legend.style('visibility', 'hidden');\n $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n return;\n } // MEMO: call here to update legend box and tranlate for all\n // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n\n\n $$.updateLegendWithDefaults();\n };\n\n ChartInternal.prototype.updateLegendWithDefaults = function () {\n var $$ = this;\n $$.updateLegend($$.mapToIds($$.data.targets), {\n withTransform: false,\n withTransitionForTransform: false,\n withTransition: false\n });\n };\n\n ChartInternal.prototype.updateSizeForLegend = function (legendHeight, legendWidth) {\n var $$ = this,\n config = $$.config,\n insetLegendPosition = {\n top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n };\n $$.margin3 = {\n top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n right: NaN,\n bottom: 0,\n left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n };\n };\n\n ChartInternal.prototype.transformLegend = function (withTransition) {\n var $$ = this;\n (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n };\n\n ChartInternal.prototype.updateLegendStep = function (step) {\n this.legendStep = step;\n };\n\n ChartInternal.prototype.updateLegendItemWidth = function (w) {\n this.legendItemWidth = w;\n };\n\n ChartInternal.prototype.updateLegendItemHeight = function (h) {\n this.legendItemHeight = h;\n };\n\n ChartInternal.prototype.getLegendWidth = function () {\n var $$ = this;\n return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n };\n\n ChartInternal.prototype.getLegendHeight = function () {\n var $$ = this,\n h = 0;\n\n if ($$.config.legend_show) {\n if ($$.isLegendRight) {\n h = $$.currentHeight;\n } else {\n h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n }\n }\n\n return h;\n };\n\n ChartInternal.prototype.opacityForLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n };\n\n ChartInternal.prototype.opacityForUnfocusedLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n };\n\n ChartInternal.prototype.toggleFocusLegend = function (targetIds, focus) {\n var $$ = this;\n targetIds = $$.mapToTargetIds(targetIds);\n $$.legend.selectAll('.' + CLASS.legendItem).filter(function (id) {\n return targetIds.indexOf(id) >= 0;\n }).classed(CLASS.legendItemFocused, focus).transition().duration(100).style('opacity', function () {\n var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n return opacity.call($$, $$.d3.select(this));\n });\n };\n\n ChartInternal.prototype.revertLegend = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemFocused, false).transition().duration(100).style('opacity', function () {\n return $$.opacityForLegend(d3.select(this));\n });\n };\n\n ChartInternal.prototype.showLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n\n if (!config.legend_show) {\n config.legend_show = true;\n $$.legend.style('visibility', 'visible');\n\n if (!$$.legendHasRendered) {\n $$.updateLegendWithDefaults();\n }\n }\n\n $$.removeHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('visibility', 'visible').transition().style('opacity', function () {\n return $$.opacityForLegend($$.d3.select(this));\n });\n };\n\n ChartInternal.prototype.hideLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n\n if (config.legend_show && isEmpty(targetIds)) {\n config.legend_show = false;\n $$.legend.style('visibility', 'hidden');\n }\n\n $$.addHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('opacity', 0).style('visibility', 'hidden');\n };\n\n ChartInternal.prototype.clearLegendItemTextBoxCache = function () {\n this.legendItemTextBox = {};\n };\n\n ChartInternal.prototype.updateLegend = function (targetIds, options, transitions) {\n var $$ = this,\n config = $$.config;\n var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n var paddingTop = 4,\n paddingRight = 10,\n maxWidth = 0,\n maxHeight = 0,\n posMin = 10,\n tileWidth = config.legend_item_tile_width + 5;\n var l,\n totalLength = 0,\n offsets = {},\n widths = {},\n heights = {},\n margins = [0],\n steps = {},\n step = 0;\n var withTransition, withTransitionForTransform;\n var texts, rects, tiles, background; // Skip elements when their name is set to null\n\n targetIds = targetIds.filter(function (id) {\n return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n });\n options = options || {};\n withTransition = getOption(options, \"withTransition\", true);\n withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n function getTextBox(textElement, id) {\n if (!$$.legendItemTextBox[id]) {\n $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n }\n\n return $$.legendItemTextBox[id];\n }\n\n function updatePositions(textElement, id, index) {\n var reset = index === 0,\n isLast = index === targetIds.length - 1,\n box = getTextBox(textElement, id),\n itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n itemHeight = box.height + paddingTop,\n itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n margin,\n maxLength; // MEMO: care about condifion of step, totalLength\n\n function updateValues(id, withoutStep) {\n if (!withoutStep) {\n margin = (areaLength - totalLength - itemLength) / 2;\n\n if (margin < posMin) {\n margin = (areaLength - itemLength) / 2;\n totalLength = 0;\n step++;\n }\n }\n\n steps[id] = step;\n margins[step] = $$.isLegendInset ? 10 : margin;\n offsets[id] = totalLength;\n totalLength += itemLength;\n }\n\n if (reset) {\n totalLength = 0;\n step = 0;\n maxWidth = 0;\n maxHeight = 0;\n }\n\n if (config.legend_show && !$$.isLegendToShow(id)) {\n widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n return;\n }\n\n widths[id] = itemWidth;\n heights[id] = itemHeight;\n\n if (!maxWidth || itemWidth >= maxWidth) {\n maxWidth = itemWidth;\n }\n\n if (!maxHeight || itemHeight >= maxHeight) {\n maxHeight = itemHeight;\n }\n\n maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n if (config.legend_equally) {\n Object.keys(widths).forEach(function (id) {\n widths[id] = maxWidth;\n });\n Object.keys(heights).forEach(function (id) {\n heights[id] = maxHeight;\n });\n margin = (areaLength - maxLength * targetIds.length) / 2;\n\n if (margin < posMin) {\n totalLength = 0;\n step = 0;\n targetIds.forEach(function (id) {\n updateValues(id);\n });\n } else {\n updateValues(id, true);\n }\n } else {\n updateValues(id);\n }\n }\n\n if ($$.isLegendInset) {\n step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n $$.updateLegendStep(step);\n }\n\n if ($$.isLegendRight) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id];\n };\n\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else if ($$.isLegendInset) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id] + 10;\n };\n\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else {\n xForLegend = function xForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n\n yForLegend = function yForLegend(id) {\n return maxHeight * steps[id];\n };\n }\n\n xForLegendText = function xForLegendText(id, i) {\n return xForLegend(id, i) + 4 + config.legend_item_tile_width;\n };\n\n yForLegendText = function yForLegendText(id, i) {\n return yForLegend(id, i) + 9;\n };\n\n xForLegendRect = function xForLegendRect(id, i) {\n return xForLegend(id, i);\n };\n\n yForLegendRect = function yForLegendRect(id, i) {\n return yForLegend(id, i) - 5;\n };\n\n x1ForLegendTile = function x1ForLegendTile(id, i) {\n return xForLegend(id, i) - 2;\n };\n\n x2ForLegendTile = function x2ForLegendTile(id, i) {\n return xForLegend(id, i) - 2 + config.legend_item_tile_width;\n };\n\n yForLegendTile = function yForLegendTile(id, i) {\n return yForLegend(id, i) + 4;\n }; // Define g for legend area\n\n\n l = $$.legend.selectAll('.' + CLASS.legendItem).data(targetIds).enter().append('g').attr('class', function (id) {\n return $$.generateClass(CLASS.legendItem, id);\n }).style('visibility', function (id) {\n return $$.isLegendToShow(id) ? 'visible' : 'hidden';\n }).style('cursor', 'pointer').on('click', function (id) {\n if (config.legend_item_onclick) {\n config.legend_item_onclick.call($$, id);\n } else {\n if ($$.d3.event.altKey) {\n $$.api.hide();\n $$.api.show(id);\n } else {\n $$.api.toggle(id);\n $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n }\n }\n }).on('mouseover', function (id) {\n if (config.legend_item_onmouseover) {\n config.legend_item_onmouseover.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n\n if (!$$.transiting && $$.isTargetToShow(id)) {\n $$.api.focus(id);\n }\n }\n }).on('mouseout', function (id) {\n if (config.legend_item_onmouseout) {\n config.legend_item_onmouseout.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n $$.api.revert();\n }\n });\n l.append('text').text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }).each(function (id, i) {\n updatePositions(this, id, i);\n }).style(\"pointer-events\", \"none\").attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n l.append('rect').attr(\"class\", CLASS.legendItemEvent).style('fill-opacity', 0).attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n l.append('line').attr('class', CLASS.legendItemTile).style('stroke', $$.color).style(\"pointer-events\", \"none\").attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200).attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200).attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('stroke-width', config.legend_item_tile_height); // Set background for inset legend\n\n background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n\n if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n background = $$.legend.insert('g', '.' + CLASS.legendItem).attr(\"class\", CLASS.legendBackground).append('rect');\n }\n\n texts = $$.legend.selectAll('text').data(targetIds).text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }) // MEMO: needed for update\n .each(function (id, i) {\n updatePositions(this, id, i);\n });\n (withTransition ? texts.transition() : texts).attr('x', xForLegendText).attr('y', yForLegendText);\n rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent).data(targetIds);\n (withTransition ? rects.transition() : rects).attr('width', function (id) {\n return widths[id];\n }).attr('height', function (id) {\n return heights[id];\n }).attr('x', xForLegendRect).attr('y', yForLegendRect);\n tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile).data(targetIds);\n (withTransition ? tiles.transition() : tiles).style('stroke', $$.levelColor ? function (id) {\n return $$.levelColor($$.cache[id].values[0].value);\n } : $$.color).attr('x1', x1ForLegendTile).attr('y1', yForLegendTile).attr('x2', x2ForLegendTile).attr('y2', yForLegendTile);\n\n if (background) {\n (withTransition ? background.transition() : background).attr('height', $$.getLegendHeight() - 12).attr('width', maxWidth * (step + 1) + 10);\n } // toggle legend state\n\n\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemHidden, function (id) {\n return !$$.isTargetToShow(id);\n }); // Update all to reflect change of legend\n\n $$.updateLegendItemWidth(maxWidth);\n $$.updateLegendItemHeight(maxHeight);\n $$.updateLegendStep(step); // Update size and scale\n\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize(); // Update g positions\n\n $$.transformAll(withTransitionForTransform, transitions);\n $$.legendHasRendered = true;\n };\n\n ChartInternal.prototype.initRegion = function () {\n var $$ = this;\n $$.region = $$.main.append('g').attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.regions);\n };\n\n ChartInternal.prototype.updateRegion = function (duration) {\n var $$ = this,\n config = $$.config; // hide if arc type\n\n $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n var mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region).data(config.regions);\n var mainRegionEnter = mainRegion.enter().append('rect').attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", 0);\n $$.mainRegion = mainRegionEnter.merge(mainRegion).attr('class', $$.classRegion.bind($$));\n mainRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.redrawRegion = function (withTransition, transition) {\n var $$ = this,\n regions = $$.mainRegion;\n return [(withTransition ? regions.transition(transition) : regions).attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", function (d) {\n return isValue(d.opacity) ? d.opacity : 0.1;\n })];\n };\n\n ChartInternal.prototype.regionX = function (d) {\n var $$ = this,\n config = $$.config,\n xPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n xPos = config.axis_rotated ? 'start' in d ? yScale(d.start) : 0 : 0;\n } else {\n xPos = config.axis_rotated ? 0 : 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0;\n }\n\n return xPos;\n };\n\n ChartInternal.prototype.regionY = function (d) {\n var $$ = this,\n config = $$.config,\n yPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n yPos = config.axis_rotated ? 0 : 'end' in d ? yScale(d.end) : 0;\n } else {\n yPos = config.axis_rotated ? 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0 : 0;\n }\n\n return yPos;\n };\n\n ChartInternal.prototype.regionWidth = function (d) {\n var $$ = this,\n config = $$.config,\n start = $$.regionX(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? 'end' in d ? yScale(d.end) : $$.width : $$.width;\n } else {\n end = config.axis_rotated ? $$.width : 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width;\n }\n\n return end < start ? 0 : end - start;\n };\n\n ChartInternal.prototype.regionHeight = function (d) {\n var $$ = this,\n config = $$.config,\n start = this.regionY(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? $$.height : 'start' in d ? yScale(d.start) : $$.height;\n } else {\n end = config.axis_rotated ? 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height : $$.height;\n }\n\n return end < start ? 0 : end - start;\n };\n\n ChartInternal.prototype.isRegionOnX = function (d) {\n return !d.axis || d.axis === 'x';\n };\n\n ChartInternal.prototype.getScale = function (min, max, forTimeseries) {\n return (forTimeseries ? this.d3.scaleTime() : this.d3.scaleLinear()).range([min, max]);\n };\n\n ChartInternal.prototype.getX = function (min, max, domain, offset) {\n var $$ = this,\n scale = $$.getScale(min, max, $$.isTimeSeries()),\n _scale = domain ? scale.domain(domain) : scale,\n key; // Define customized scale if categorized axis\n\n\n if ($$.isCategorized()) {\n offset = offset || function () {\n return 0;\n };\n\n scale = function scale(d, raw) {\n var v = _scale(d) + offset(d);\n return raw ? v : Math.ceil(v);\n };\n } else {\n scale = function scale(d, raw) {\n var v = _scale(d);\n\n return raw ? v : Math.ceil(v);\n };\n } // define functions\n\n\n for (key in _scale) {\n scale[key] = _scale[key];\n }\n\n scale.orgDomain = function () {\n return _scale.domain();\n }; // define custom domain() for categorized axis\n\n\n if ($$.isCategorized()) {\n scale.domain = function (domain) {\n if (!arguments.length) {\n domain = this.orgDomain();\n return [domain[0], domain[1] + 1];\n }\n\n _scale.domain(domain);\n\n return scale;\n };\n }\n\n return scale;\n };\n\n ChartInternal.prototype.getY = function (min, max, domain) {\n var scale = this.getScale(min, max, this.isTimeSeriesY());\n\n if (domain) {\n scale.domain(domain);\n }\n\n return scale;\n };\n\n ChartInternal.prototype.getYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n };\n\n ChartInternal.prototype.getSubYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n };\n\n ChartInternal.prototype.updateScales = function () {\n var $$ = this,\n config = $$.config,\n forInit = !$$.x; // update edges\n\n $$.xMin = config.axis_rotated ? 1 : 0;\n $$.xMax = config.axis_rotated ? $$.height : $$.width;\n $$.yMin = config.axis_rotated ? 0 : $$.height;\n $$.yMax = config.axis_rotated ? $$.width : 1;\n $$.subXMin = $$.xMin;\n $$.subXMax = $$.xMax;\n $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n $$.subYMax = config.axis_rotated ? $$.width2 : 1; // update scales\n\n $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () {\n return $$.xAxis.tickOffset();\n });\n $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) {\n return d % 1 ? 0 : $$.subXAxis.tickOffset();\n });\n $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain()); // update axes\n\n $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer); // Set initialized scales to brush and zoom\n\n if (!forInit) {\n if ($$.brush) {\n $$.brush.updateScale($$.subX);\n }\n } // update for arc\n\n\n if ($$.updateArc) {\n $$.updateArc();\n }\n };\n\n ChartInternal.prototype.selectPoint = function (target, d, i) {\n var $$ = this,\n config = $$.config,\n cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n r = $$.pointSelectR.bind($$);\n config.data_onselected.call($$.api, d, target.node()); // add selected-circle on low layer g\n\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).data([d]).enter().append('circle').attr(\"class\", function () {\n return $$.generateClass(CLASS.selectedCircle, i);\n }).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"stroke\", function () {\n return $$.color(d);\n }).attr(\"r\", function (d) {\n return $$.pointSelectR(d) * 1.4;\n }).transition().duration(100).attr(\"r\", r);\n };\n\n ChartInternal.prototype.unselectPoint = function (target, d, i) {\n var $$ = this;\n $$.config.data_onunselected.call($$.api, d, target.node()); // remove selected-circle from low layer g\n\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).transition().duration(100).attr('r', 0).remove();\n };\n\n ChartInternal.prototype.togglePoint = function (selected, target, d, i) {\n selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n };\n\n ChartInternal.prototype.selectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onselected.call($$, d, target.node());\n\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.d3.rgb($$.color(d)).brighter(0.75);\n });\n }\n };\n\n ChartInternal.prototype.unselectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onunselected.call($$, d, target.node());\n\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.color(d);\n });\n }\n };\n\n ChartInternal.prototype.togglePath = function (selected, target, d, i) {\n selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n };\n\n ChartInternal.prototype.getToggle = function (that, d) {\n var $$ = this,\n toggle;\n\n if (that.nodeName === 'circle') {\n if ($$.isStepType(d)) {\n // circle is hidden in step chart, so treat as within the click area\n toggle = function toggle() {}; // TODO: how to select step chart?\n\n } else {\n toggle = $$.togglePoint;\n }\n } else if (that.nodeName === 'path') {\n toggle = $$.togglePath;\n }\n\n return toggle;\n };\n\n ChartInternal.prototype.toggleShape = function (that, d, i) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n shape = d3.select(that),\n isSelected = shape.classed(CLASS.SELECTED),\n toggle = $$.getToggle(that, d).bind($$);\n\n if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n if (!config.data_selection_multiple) {\n $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this);\n\n if (shape.classed(CLASS.SELECTED)) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n });\n }\n\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle(!isSelected, shape, d, i);\n }\n };\n\n ChartInternal.prototype.initBar = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n };\n\n ChartInternal.prototype.updateTargetsForBar = function (targets) {\n var $$ = this,\n config = $$.config,\n mainBars,\n mainBarEnter,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainBars = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', function (d) {\n return classChartBar(d) + classFocus(d);\n });\n mainBarEnter = mainBars.enter().append('g').attr('class', classChartBar).style(\"pointer-events\", \"none\"); // Bars for each data\n\n mainBarEnter.append('g').attr(\"class\", classBars).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n };\n\n ChartInternal.prototype.updateBar = function (durationForExit) {\n var $$ = this,\n barData = $$.barData.bind($$),\n classBar = $$.classBar.bind($$),\n initialOpacity = $$.initialOpacity.bind($$),\n color = function color(d) {\n return $$.color(d.id);\n };\n\n var mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data(barData);\n var mainBarEnter = mainBar.enter().append('path').attr(\"class\", classBar).style(\"stroke\", color).style(\"fill\", color);\n $$.mainBar = mainBarEnter.merge(mainBar).style(\"opacity\", initialOpacity);\n mainBar.exit().transition().duration(durationForExit).style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawBar = function (drawBar, withTransition, transition) {\n return [(withTransition ? this.mainBar.transition(transition) : this.mainBar).attr('d', drawBar).style(\"stroke\", this.color).style(\"fill\", this.color).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.getBarW = function (axis, barTargetsNum) {\n var $$ = this,\n config = $$.config,\n w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? axis.tickInterval() * config.bar_width_ratio / barTargetsNum : 0;\n return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n };\n\n ChartInternal.prototype.getBars = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n };\n\n ChartInternal.prototype.expandBars = function (i, id, reset) {\n var $$ = this;\n\n if (reset) {\n $$.unexpandBars();\n }\n\n $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n };\n\n ChartInternal.prototype.unexpandBars = function (i) {\n var $$ = this;\n $$.getBars(i).classed(CLASS.EXPANDED, false);\n };\n\n ChartInternal.prototype.generateDrawBar = function (barIndices, isSub) {\n var $$ = this,\n config = $$.config,\n getPoints = $$.generateGetBarPoints(barIndices, isSub);\n return function (d, i) {\n // 4 points that make a bar\n var points = getPoints(d, i); // switch points if axis is rotated, not applicable for sub chart\n\n var indexX = config.axis_rotated ? 1 : 0;\n var indexY = config.axis_rotated ? 0 : 1;\n var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' + 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' + 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' + 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' + 'z';\n return path;\n };\n };\n\n ChartInternal.prototype.generateGetBarPoints = function (barIndices, isSub) {\n var $$ = this,\n axis = isSub ? $$.subXAxis : $$.xAxis,\n barTargetsNum = barIndices.__max__ + 1,\n barW = $$.getBarW(axis, barTargetsNum),\n barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n barY = $$.getShapeY(!!isSub),\n barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n barSpaceOffset = barW * ($$.config.bar_space / 2),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = barOffset(d, i) || y0,\n // offset is for stacked bar chart\n posX = barX(d),\n posY = barY(d); // fix posY not to overflow opposite quadrant\n\n if ($$.config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 4 points that make a bar\n\n\n return [[posX + barSpaceOffset, offset], [posX + barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, offset]];\n };\n };\n\n ChartInternal.prototype.isWithinBar = function (mouse, that) {\n var box = that.getBoundingClientRect(),\n seg0 = that.pathSegList.getItem(0),\n seg1 = that.pathSegList.getItem(1),\n x = Math.min(seg0.x, seg1.x),\n y = Math.min(seg0.y, seg1.y),\n w = box.width,\n h = box.height,\n offset = 2,\n sx = x - offset,\n ex = x + w + offset,\n sy = y + h + offset,\n ey = y - offset;\n return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n };\n\n ChartInternal.prototype.getShapeIndices = function (typeFilter) {\n var $$ = this,\n config = $$.config,\n indices = {},\n i = 0,\n j,\n k;\n $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n for (j = 0; j < config.data_groups.length; j++) {\n if (config.data_groups[j].indexOf(d.id) < 0) {\n continue;\n }\n\n for (k = 0; k < config.data_groups[j].length; k++) {\n if (config.data_groups[j][k] in indices) {\n indices[d.id] = indices[config.data_groups[j][k]];\n break;\n }\n }\n }\n\n if (isUndefined(indices[d.id])) {\n indices[d.id] = i++;\n }\n });\n indices.__max__ = i - 1;\n return indices;\n };\n\n ChartInternal.prototype.getShapeX = function (offset, targetsNum, indices, isSub) {\n var $$ = this,\n scale = isSub ? $$.subX : $$.x;\n return function (d) {\n var index = d.id in indices ? indices[d.id] : 0;\n return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n };\n };\n\n ChartInternal.prototype.getShapeY = function (isSub) {\n var $$ = this;\n return function (d) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n return scale(d.value);\n };\n };\n\n ChartInternal.prototype.getShapeOffset = function (typeFilter, indices, isSub) {\n var $$ = this,\n targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n targetIds = targets.map(function (t) {\n return t.id;\n });\n return function (d, i) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n y0 = scale(0),\n offset = y0;\n targets.forEach(function (t) {\n var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n\n if (t.id === d.id || indices[t.id] !== indices[d.id]) {\n return;\n }\n\n if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n // check if the x values line up\n if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {\n // \"+\" for timeseries\n // if not, try to find the value that does line up\n i = -1;\n values.forEach(function (v, j) {\n if (v.x === d.x) {\n i = j;\n }\n });\n }\n\n if (i in values && values[i].value * d.value >= 0) {\n offset += scale(values[i].value) - y0;\n }\n }\n });\n return offset;\n };\n };\n\n ChartInternal.prototype.isWithinShape = function (that, d) {\n var $$ = this,\n shape = $$.d3.select(that),\n isWithin;\n\n if (!$$.isTargetToShow(d.id)) {\n isWithin = false;\n } else if (that.nodeName === 'circle') {\n isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n } else if (that.nodeName === 'path') {\n isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar($$.d3.mouse(that), that) : true;\n }\n\n return isWithin;\n };\n\n ChartInternal.prototype.getInterpolate = function (d) {\n var $$ = this,\n d3 = $$.d3,\n types = {\n 'linear': d3.curveLinear,\n 'linear-closed': d3.curveLinearClosed,\n 'basis': d3.curveBasis,\n 'basis-open': d3.curveBasisOpen,\n 'basis-closed': d3.curveBasisClosed,\n 'bundle': d3.curveBundle,\n 'cardinal': d3.curveCardinal,\n 'cardinal-open': d3.curveCardinalOpen,\n 'cardinal-closed': d3.curveCardinalClosed,\n 'monotone': d3.curveMonotoneX,\n 'step': d3.curveStep,\n 'step-before': d3.curveStepBefore,\n 'step-after': d3.curveStepAfter\n },\n type;\n\n if ($$.isSplineType(d)) {\n type = types[$$.config.spline_interpolation_type] || types.cardinal;\n } else if ($$.isStepType(d)) {\n type = types[$$.config.line_step_type];\n } else {\n type = types.linear;\n }\n\n return type;\n };\n\n ChartInternal.prototype.initLine = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n };\n\n ChartInternal.prototype.updateTargetsForLine = function (targets) {\n var $$ = this,\n config = $$.config,\n mainLines,\n mainLineEnter,\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$),\n classCircles = $$.classCircles.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainLines = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', function (d) {\n return classChartLine(d) + classFocus(d);\n });\n mainLineEnter = mainLines.enter().append('g').attr('class', classChartLine).style('opacity', 0).style(\"pointer-events\", \"none\"); // Lines for each data\n\n mainLineEnter.append('g').attr(\"class\", classLines); // Areas\n\n mainLineEnter.append('g').attr('class', classAreas); // Circles for each data point on lines\n\n mainLineEnter.append('g').attr(\"class\", function (d) {\n return $$.generateClass(CLASS.selectedCircles, d.id);\n });\n mainLineEnter.append('g').attr(\"class\", classCircles).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n }); // Update date for selected circles\n\n targets.forEach(function (t) {\n $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n d.value = t.values[d.index].value;\n });\n }); // MEMO: can not keep same color...\n //mainLineUpdate.exit().remove();\n };\n\n ChartInternal.prototype.updateLine = function (durationForExit) {\n var $$ = this;\n var mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n var mainLineEnter = mainLine.enter().append('path').attr('class', $$.classLine.bind($$)).style(\"stroke\", $$.color);\n $$.mainLine = mainLineEnter.merge(mainLine).style(\"opacity\", $$.initialOpacity.bind($$)).style('shape-rendering', function (d) {\n return $$.isStepType(d) ? 'crispEdges' : '';\n }).attr('transform', null);\n mainLine.exit().transition().duration(durationForExit).style('opacity', 0);\n };\n\n ChartInternal.prototype.redrawLine = function (drawLine, withTransition, transition) {\n return [(withTransition ? this.mainLine.transition(transition) : this.mainLine).attr(\"d\", drawLine).style(\"stroke\", this.color).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.generateDrawLine = function (lineIndices, isSub) {\n var $$ = this,\n config = $$.config,\n line = $$.d3.line(),\n getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n yValue = function yValue(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n\n if (!config.line_connectNull) {\n line = line.defined(function (d) {\n return d.value != null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x = isSub ? $$.subX : $$.x,\n y = yScaleGetter.call($$, d.id),\n x0 = 0,\n y0 = 0,\n path;\n\n if ($$.isLineType(d)) {\n if (config.data_regions[d.id]) {\n path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n } else {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n\n path = line.curve($$.getInterpolate(d))(values);\n }\n } else {\n if (values[0]) {\n x0 = x(values[0].x);\n y0 = y(values[0].value);\n }\n\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n\n return path ? path : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.generateGetLinePoints = function (lineIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n lineTargetsNum = lineIndices.__max__ + 1,\n x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = lineOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d); // fix posY not to overflow opposite quadrant\n\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 1 point that marks the line position\n\n\n return [[posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)] // needed for compatibility\n ];\n };\n };\n\n ChartInternal.prototype.lineWithRegions = function (d, x, y, _regions) {\n var $$ = this,\n config = $$.config,\n prev = -1,\n i,\n j,\n s = \"M\",\n sWithRegion,\n xp,\n yp,\n dx,\n dy,\n dd,\n diff,\n diffx2,\n xOffset = $$.isCategorized() ? 0.5 : 0,\n xValue,\n yValue,\n regions = [];\n\n function isWithinRegions(x, regions) {\n var i;\n\n for (i = 0; i < regions.length; i++) {\n if (regions[i].start < x && x <= regions[i].end) {\n return true;\n }\n }\n\n return false;\n } // Check start/end of regions\n\n\n if (isDefined(_regions)) {\n for (i = 0; i < _regions.length; i++) {\n regions[i] = {};\n\n if (isUndefined(_regions[i].start)) {\n regions[i].start = d[0].x;\n } else {\n regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n }\n\n if (isUndefined(_regions[i].end)) {\n regions[i].end = d[d.length - 1].x;\n } else {\n regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n }\n }\n } // Set scales\n\n\n xValue = config.axis_rotated ? function (d) {\n return y(d.value);\n } : function (d) {\n return x(d.x);\n };\n yValue = config.axis_rotated ? function (d) {\n return x(d.x);\n } : function (d) {\n return y(d.value);\n }; // Define svg generator function for region\n\n function generateM(points) {\n return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n }\n\n if ($$.isTimeSeries()) {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var x0 = d0.x.getTime(),\n x_diff = d1.x - d0.x,\n xv0 = new Date(x0 + x_diff * j),\n xv1 = new Date(x0 + x_diff * (j + diff)),\n points;\n\n if (config.axis_rotated) {\n points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n } else {\n points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n }\n\n return generateM(points);\n };\n } else {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var points;\n\n if (config.axis_rotated) {\n points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n } else {\n points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n }\n\n return generateM(points);\n };\n } // Generate\n\n\n for (i = 0; i < d.length; i++) {\n // Draw as normal\n if (isUndefined(regions) || !isWithinRegions(d[i].x, regions)) {\n s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n } // Draw with region // TODO: Fix for horizotal charts\n else {\n xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n yp = $$.getScale(d[i - 1].value, d[i].value);\n dx = x(d[i].x) - x(d[i - 1].x);\n dy = y(d[i].value) - y(d[i - 1].value);\n dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n diff = 2 / dd;\n diffx2 = diff * 2;\n\n for (j = diff; j <= 1; j += diffx2) {\n s += sWithRegion(d[i - 1], d[i], j, diff);\n }\n }\n\n prev = d[i].x;\n }\n\n return s;\n };\n\n ChartInternal.prototype.updateArea = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n var mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n var mainAreaEnter = mainArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\n return 0;\n });\n $$.mainArea = mainAreaEnter.merge(mainArea).style(\"opacity\", $$.orgAreaOpacity);\n mainArea.exit().transition().duration(durationForExit).style('opacity', 0);\n };\n\n ChartInternal.prototype.redrawArea = function (drawArea, withTransition, transition) {\n return [(withTransition ? this.mainArea.transition(transition) : this.mainArea).attr(\"d\", drawArea).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity)];\n };\n\n ChartInternal.prototype.generateDrawArea = function (areaIndices, isSub) {\n var $$ = this,\n config = $$.config,\n area = $$.d3.area(),\n getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n value0 = function value0(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n },\n value1 = function value1(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n\n if (!config.line_connectNull) {\n area = area.defined(function (d) {\n return d.value !== null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x0 = 0,\n y0 = 0,\n path;\n\n if ($$.isAreaType(d)) {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n\n path = area.curve($$.getInterpolate(d))(values);\n } else {\n if (values[0]) {\n x0 = $$.x(values[0].x);\n y0 = $$.getYScale(d.id)(values[0].value);\n }\n\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n\n return path ? path : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.getAreaBaseValue = function () {\n return 0;\n };\n\n ChartInternal.prototype.generateGetAreaPoints = function (areaIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n areaTargetsNum = areaIndices.__max__ + 1,\n x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = areaOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d); // fix posY not to overflow opposite quadrant\n\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 1 point that marks the area position\n\n\n return [[posX, offset], [posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, offset] // needed for compatibility\n ];\n };\n };\n\n ChartInternal.prototype.updateCircle = function (cx, cy) {\n var $$ = this;\n var mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle).data($$.lineOrScatterOrStanfordData.bind($$));\n var mainCircleEnter = mainCircle.enter().append(\"circle\").attr('shape-rendering', 'crispEdges').attr(\"class\", $$.classCircle.bind($$)).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"r\", $$.pointR.bind($$)).style(\"fill\", $$.isStanfordGraphType() ? $$.getStanfordPointColor.bind($$) : $$.color);\n $$.mainCircle = mainCircleEnter.merge(mainCircle).style(\"opacity\", $$.isStanfordGraphType() ? 1 : $$.initialOpacityForCircle.bind($$));\n mainCircle.exit().style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawCircle = function (cx, cy, withTransition, transition) {\n var $$ = this,\n selectedCircles = $$.main.selectAll('.' + CLASS.selectedCircle);\n return [(withTransition ? $$.mainCircle.transition(transition) : $$.mainCircle).style('opacity', this.opacityForCircle.bind($$)).style(\"fill\", $$.isStanfordGraphType() ? $$.getStanfordPointColor.bind($$) : $$.color).attr(\"cx\", cx).attr(\"cy\", cy), (withTransition ? selectedCircles.transition(transition) : selectedCircles).attr(\"cx\", cx).attr(\"cy\", cy)];\n };\n\n ChartInternal.prototype.circleX = function (d) {\n return d.x || d.x === 0 ? this.x(d.x) : null;\n };\n\n ChartInternal.prototype.updateCircleY = function () {\n var $$ = this,\n lineIndices,\n getPoints;\n\n if ($$.config.data_groups.length > 0) {\n lineIndices = $$.getShapeIndices($$.isLineType), getPoints = $$.generateGetLinePoints(lineIndices);\n\n $$.circleY = function (d, i) {\n return getPoints(d, i)[0][1];\n };\n } else {\n $$.circleY = function (d) {\n return $$.getYScale(d.id)(d.value);\n };\n }\n };\n\n ChartInternal.prototype.getCircles = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n };\n\n ChartInternal.prototype.expandCircles = function (i, id, reset) {\n var $$ = this,\n r = $$.pointExpandedR.bind($$);\n\n if (reset) {\n $$.unexpandCircles();\n }\n\n $$.getCircles(i, id).classed(CLASS.EXPANDED, true).attr('r', r);\n };\n\n ChartInternal.prototype.unexpandCircles = function (i) {\n var $$ = this,\n r = $$.pointR.bind($$);\n $$.getCircles(i).filter(function () {\n return $$.d3.select(this).classed(CLASS.EXPANDED);\n }).classed(CLASS.EXPANDED, false).attr('r', r);\n };\n\n ChartInternal.prototype.pointR = function (d) {\n var $$ = this,\n config = $$.config;\n return $$.isStepType(d) ? 0 : isFunction(config.point_r) ? config.point_r(d) : config.point_r;\n };\n\n ChartInternal.prototype.pointExpandedR = function (d) {\n var $$ = this,\n config = $$.config;\n\n if (config.point_focus_expand_enabled) {\n return isFunction(config.point_focus_expand_r) ? config.point_focus_expand_r(d) : config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75;\n } else {\n return $$.pointR(d);\n }\n };\n\n ChartInternal.prototype.pointSelectR = function (d) {\n var $$ = this,\n config = $$.config;\n return isFunction(config.point_select_r) ? config.point_select_r(d) : config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;\n };\n\n ChartInternal.prototype.isWithinCircle = function (that, r) {\n var d3 = this.d3,\n mouse = d3.mouse(that),\n d3_this = d3.select(that),\n cx = +d3_this.attr(\"cx\"),\n cy = +d3_this.attr(\"cy\");\n return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n };\n\n ChartInternal.prototype.isWithinStep = function (that, y) {\n return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n };\n\n ChartInternal.prototype.getCurrentWidth = function () {\n var $$ = this,\n config = $$.config;\n return config.size_width ? config.size_width : $$.getParentWidth();\n };\n\n ChartInternal.prototype.getCurrentHeight = function () {\n var $$ = this,\n config = $$.config,\n h = config.size_height ? config.size_height : $$.getParentHeight();\n return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1);\n };\n\n ChartInternal.prototype.getCurrentPaddingTop = function () {\n var $$ = this,\n config = $$.config,\n padding = isValue(config.padding_top) ? config.padding_top : 0;\n\n if ($$.title && $$.title.node()) {\n padding += $$.getTitlePadding();\n }\n\n return padding;\n };\n\n ChartInternal.prototype.getCurrentPaddingBottom = function () {\n var config = this.config;\n return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n };\n\n ChartInternal.prototype.getCurrentPaddingLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config;\n\n if (isValue(config.padding_left)) {\n return config.padding_left;\n } else if (config.axis_rotated) {\n return !config.axis_x_show || config.axis_x_inner ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n } else if (!config.axis_y_show || config.axis_y_inner) {\n // && !config.axis_rotated\n return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n } else {\n return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n }\n };\n\n ChartInternal.prototype.getCurrentPaddingRight = function () {\n var $$ = this,\n config = $$.config,\n padding = 0,\n defaultPadding = 10,\n legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n\n if (isValue(config.padding_right)) {\n padding = config.padding_right + 1; // 1 is needed not to hide tick line\n } else if (config.axis_rotated) {\n padding = defaultPadding + legendWidthOnRight;\n } else if (!config.axis_y2_show || config.axis_y2_inner) {\n // && !config.axis_rotated\n padding = 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n } else {\n padding = ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n }\n\n if ($$.colorScale && $$.colorScale.node()) {\n padding += $$.getColorScalePadding();\n }\n\n return padding;\n };\n\n ChartInternal.prototype.getParentRectValue = function (key) {\n var parent = this.selectChart.node(),\n v;\n\n while (parent && parent.tagName !== 'BODY') {\n try {\n v = parent.getBoundingClientRect()[key];\n } catch (e) {\n if (key === 'width') {\n // In IE in certain cases getBoundingClientRect\n // will cause an \"unspecified error\"\n v = parent.offsetWidth;\n }\n }\n\n if (v) {\n break;\n }\n\n parent = parent.parentNode;\n }\n\n return v;\n };\n\n ChartInternal.prototype.getParentWidth = function () {\n return this.getParentRectValue('width');\n };\n\n ChartInternal.prototype.getParentHeight = function () {\n var h = this.selectChart.style('height');\n return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n };\n\n ChartInternal.prototype.getSvgLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config,\n hasLeftAxisRect = config.axis_rotated || !config.axis_rotated && !config.axis_y_inner,\n leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n leftAxis = $$.main.select('.' + leftAxisClass).node(),\n svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {\n right: 0\n },\n chartRect = $$.selectChart.node().getBoundingClientRect(),\n hasArc = $$.hasArcType(),\n svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n return svgLeft > 0 ? svgLeft : 0;\n };\n\n ChartInternal.prototype.getAxisWidthByAxisId = function (id, withoutRecompute) {\n var $$ = this,\n position = $$.axis.getLabelPositionById(id);\n return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n };\n\n ChartInternal.prototype.getHorizontalAxisHeight = function (axisId) {\n var $$ = this,\n config = $$.config,\n h = 30;\n\n if (axisId === 'x' && !config.axis_x_show) {\n return 8;\n }\n\n if (axisId === 'x' && config.axis_x_height) {\n return config.axis_x_height;\n }\n\n if (axisId === 'y' && !config.axis_y_show) {\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n }\n\n if (axisId === 'y2' && !config.axis_y2_show) {\n return $$.rotated_padding_top;\n } // Calculate x axis height when tick rotated\n\n\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180);\n } // Calculate y axis height when tick rotated\n\n\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180);\n }\n\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n ChartInternal.prototype.initBrush = function (scale) {\n var $$ = this,\n d3 = $$.d3; // TODO: dynamically change brushY/brushX according to axis_rotated.\n\n $$.brush = ($$.config.axis_rotated ? d3.brushY() : d3.brushX()).on(\"brush\", function () {\n var event = d3.event.sourceEvent;\n\n if (event && event.type === \"zoom\") {\n return;\n }\n\n $$.redrawForBrush();\n }).on(\"end\", function () {\n var event = d3.event.sourceEvent;\n\n if (event && event.type === \"zoom\") {\n return;\n }\n\n if ($$.brush.empty() && event && event.type !== 'end') {\n $$.brush.clear();\n }\n });\n\n $$.brush.updateExtent = function () {\n var range = this.scale.range(),\n extent;\n\n if ($$.config.axis_rotated) {\n extent = [[0, range[0]], [$$.width2, range[1]]];\n } else {\n extent = [[range[0], 0], [range[1], $$.height2]];\n }\n\n this.extent(extent);\n return this;\n };\n\n $$.brush.updateScale = function (scale) {\n this.scale = scale;\n return this;\n };\n\n $$.brush.update = function (scale) {\n this.updateScale(scale || $$.subX).updateExtent();\n $$.context.select('.' + CLASS.brush).call(this);\n };\n\n $$.brush.clear = function () {\n $$.context.select('.' + CLASS.brush).call($$.brush.move, null);\n };\n\n $$.brush.selection = function () {\n return d3.brushSelection($$.context.select('.' + CLASS.brush).node());\n };\n\n $$.brush.selectionAsValue = function (selectionAsValue, withTransition) {\n var selection, brush;\n\n if (selectionAsValue) {\n if ($$.context) {\n selection = [this.scale(selectionAsValue[0]), this.scale(selectionAsValue[1])];\n brush = $$.context.select('.' + CLASS.brush);\n\n if (withTransition) {\n brush = brush.transition();\n }\n\n $$.brush.move(brush, selection);\n }\n\n return [];\n }\n\n selection = $$.brush.selection() || [0, 0];\n return [this.scale.invert(selection[0]), this.scale.invert(selection[1])];\n };\n\n $$.brush.empty = function () {\n var selection = $$.brush.selection();\n return !selection || selection[0] === selection[1];\n };\n\n return $$.brush.updateScale(scale);\n };\n\n ChartInternal.prototype.initSubchart = function () {\n var $$ = this,\n config = $$.config,\n context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n visibility = config.subchart_show ? 'visible' : 'hidden'; // set style\n\n context.style('visibility', visibility); // Define g for chart area\n\n context.append('g').attr(\"clip-path\", $$.clipPathForSubchart).attr('class', CLASS.chart); // Define g for bar chart area\n\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars); // Define g for line chart area\n\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines); // Add extent rect for Brush\n\n context.append(\"g\").attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.brush); // ATTENTION: This must be called AFTER chart added\n // Add Axis\n\n $$.axes.subx = context.append(\"g\").attr(\"class\", CLASS.axisX).attr(\"transform\", $$.getTranslate('subx')).attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis);\n };\n\n ChartInternal.prototype.initSubchartBrush = function () {\n var $$ = this; // Add extent rect for Brush\n\n $$.initBrush($$.subX).updateExtent();\n $$.context.select('.' + CLASS.brush).call($$.brush);\n };\n\n ChartInternal.prototype.updateTargetsForSubchart = function (targets) {\n var $$ = this,\n context = $$.context,\n config = $$.config,\n contextLineEnter,\n contextLine,\n contextBarEnter,\n contextBar,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$);\n\n if (config.subchart_show) {\n //-- Bar --//\n contextBar = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets);\n contextBarEnter = contextBar.enter().append('g').style('opacity', 0);\n contextBarEnter.merge(contextBar).attr('class', classChartBar); // Bars for each data\n\n contextBarEnter.append('g').attr(\"class\", classBars); //-- Line --//\n\n contextLine = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets);\n contextLineEnter = contextLine.enter().append('g').style('opacity', 0);\n contextLineEnter.merge(contextLine).attr('class', classChartLine); // Lines for each data\n\n contextLineEnter.append(\"g\").attr(\"class\", classLines); // Area\n\n contextLineEnter.append(\"g\").attr(\"class\", classAreas); //-- Brush --//\n\n context.selectAll('.' + CLASS.brush + ' rect').attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n }\n };\n\n ChartInternal.prototype.updateBarForSubchart = function (durationForExit) {\n var $$ = this;\n var contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data($$.barData.bind($$));\n var contextBarEnter = contextBar.enter().append('path').attr(\"class\", $$.classBar.bind($$)).style(\"stroke\", 'none').style(\"fill\", $$.color);\n contextBar.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextBar = contextBarEnter.merge(contextBar).style(\"opacity\", $$.initialOpacity.bind($$));\n };\n\n ChartInternal.prototype.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar).attr('d', drawBarOnSub).style('opacity', 1);\n };\n\n ChartInternal.prototype.updateLineForSubchart = function (durationForExit) {\n var $$ = this;\n var contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n var contextLineEnter = contextLine.enter().append('path').attr('class', $$.classLine.bind($$)).style('stroke', $$.color);\n contextLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextLine = contextLineEnter.merge(contextLine).style(\"opacity\", $$.initialOpacity.bind($$));\n };\n\n ChartInternal.prototype.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine).attr(\"d\", drawLineOnSub).style('opacity', 1);\n };\n\n ChartInternal.prototype.updateAreaForSubchart = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n var contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n var contextAreaEnter = contextArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\n return 0;\n });\n contextArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextArea = contextAreaEnter.merge(contextArea).style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea).attr(\"d\", drawAreaOnSub).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity);\n };\n\n ChartInternal.prototype.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n drawAreaOnSub,\n drawBarOnSub,\n drawLineOnSub;\n $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden'); // subchart\n\n if (config.subchart_show) {\n // reflect main chart to extent on subchart if zoomed\n if (d3.event && d3.event.type === 'zoom') {\n $$.brush.selectionAsValue($$.x.orgDomain());\n } // update subchart elements if needed\n\n\n if (withSubchart) {\n // extent rect\n if (!$$.brush.empty()) {\n $$.brush.selectionAsValue($$.x.orgDomain());\n } // setup drawer - MEMO: this must be called after axis updated\n\n\n drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n drawBarOnSub = $$.generateDrawBar(barIndices, true);\n drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n $$.updateBarForSubchart(duration);\n $$.updateLineForSubchart(duration);\n $$.updateAreaForSubchart(duration);\n $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n }\n }\n };\n\n ChartInternal.prototype.redrawForBrush = function () {\n var $$ = this,\n x = $$.x,\n d3 = $$.d3,\n s;\n $$.redraw({\n withTransition: false,\n withY: $$.config.zoom_rescale,\n withSubchart: false,\n withUpdateXDomain: true,\n withEventRect: false,\n withDimension: false\n }); // update zoom transation binded to event rect\n\n s = d3.event.selection || $$.brush.scale.range();\n $$.main.select('.' + CLASS.eventRect).call($$.zoom.transform, d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0));\n $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n };\n\n ChartInternal.prototype.transformContext = function (withTransition, transitions) {\n var $$ = this,\n subXAxis;\n\n if (transitions && transitions.axisSubX) {\n subXAxis = transitions.axisSubX;\n } else {\n subXAxis = $$.context.select('.' + CLASS.axisX);\n\n if (withTransition) {\n subXAxis = subXAxis.transition();\n }\n }\n\n $$.context.attr(\"transform\", $$.getTranslate('context'));\n subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n };\n\n ChartInternal.prototype.getDefaultSelection = function () {\n var $$ = this,\n config = $$.config,\n selection = isFunction(config.axis_x_selection) ? config.axis_x_selection($$.getXDomain($$.data.targets)) : config.axis_x_selection;\n\n if ($$.isTimeSeries()) {\n selection = [$$.parseDate(selection[0]), $$.parseDate(selection[1])];\n }\n\n return selection;\n };\n\n ChartInternal.prototype.initText = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartTexts);\n $$.mainText = $$.d3.selectAll([]);\n };\n\n ChartInternal.prototype.updateTargetsForText = function (targets) {\n var $$ = this,\n classChartText = $$.classChartText.bind($$),\n classTexts = $$.classTexts.bind($$),\n classFocus = $$.classFocus.bind($$);\n var mainText = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText).data(targets);\n var mainTextEnter = mainText.enter().append('g').attr('class', classChartText).style('opacity', 0).style(\"pointer-events\", \"none\");\n mainTextEnter.append('g').attr('class', classTexts);\n mainTextEnter.merge(mainText).attr('class', function (d) {\n return classChartText(d) + classFocus(d);\n });\n };\n\n ChartInternal.prototype.updateText = function (xForText, yForText, durationForExit) {\n var $$ = this,\n config = $$.config,\n barOrLineData = $$.barOrLineData.bind($$),\n classText = $$.classText.bind($$);\n var mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text).data(barOrLineData);\n var mainTextEnter = mainText.enter().append('text').attr(\"class\", classText).attr('text-anchor', function (d) {\n return config.axis_rotated ? d.value < 0 ? 'end' : 'start' : 'middle';\n }).style(\"stroke\", 'none').attr('x', xForText).attr('y', yForText).style(\"fill\", function (d) {\n return $$.color(d);\n }).style(\"fill-opacity\", 0);\n $$.mainText = mainTextEnter.merge(mainText).text(function (d, i, j) {\n return $$.dataLabelFormat(d.id)(d.value, d.id, i, j);\n });\n mainText.exit().transition().duration(durationForExit).style('fill-opacity', 0).remove();\n };\n\n ChartInternal.prototype.redrawText = function (xForText, yForText, forFlow, withTransition, transition) {\n return [(withTransition ? this.mainText.transition(transition) : this.mainText).attr('x', xForText).attr('y', yForText).style(\"fill\", this.color).style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))];\n };\n\n ChartInternal.prototype.getTextRect = function (text, cls, element) {\n var dummy = this.d3.select('body').append('div').classed('c3', true),\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n font = this.d3.select(element).style('font'),\n rect;\n svg.selectAll('.dummy').data([text]).enter().append('text').classed(cls ? cls : \"\", true).style('font', font).text(text).each(function () {\n rect = this.getBoundingClientRect();\n });\n dummy.remove();\n return rect;\n };\n\n ChartInternal.prototype.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n var $$ = this,\n getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n getBarPoints = $$.generateGetBarPoints(barIndices, false),\n getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n getter = forX ? $$.getXForText : $$.getYForText;\n return function (d, i) {\n var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n return getter.call($$, getPoints(d, i), d, this);\n };\n };\n\n ChartInternal.prototype.getXForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n xPos,\n padding;\n\n if ($$.config.axis_rotated) {\n padding = $$.isBarType(d) ? 4 : 6;\n xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n } else {\n xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n } // show labels regardless of the domain if value is null\n\n\n if (d.value === null) {\n if (xPos > $$.width) {\n xPos = $$.width - box.width;\n } else if (xPos < 0) {\n xPos = 4;\n }\n }\n\n return xPos;\n };\n\n ChartInternal.prototype.getYForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n yPos;\n\n if ($$.config.axis_rotated) {\n yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n } else {\n yPos = points[2][1];\n\n if (d.value < 0 || d.value === 0 && !$$.hasPositiveValue) {\n yPos += box.height;\n\n if ($$.isBarType(d) && $$.isSafari()) {\n yPos -= 3;\n } else if (!$$.isBarType(d) && $$.isChrome()) {\n yPos += 3;\n }\n } else {\n yPos += $$.isBarType(d) ? -3 : -6;\n }\n } // show labels regardless of the domain if value is null\n\n\n if (d.value === null && !$$.config.axis_rotated) {\n if (yPos < box.height) {\n yPos = box.height;\n } else if (yPos > this.height) {\n yPos = this.height - 4;\n }\n }\n\n return yPos;\n };\n\n ChartInternal.prototype.initTitle = function () {\n var $$ = this;\n $$.title = $$.svg.append(\"text\").text($$.config.title_text).attr(\"class\", $$.CLASS.title);\n };\n\n ChartInternal.prototype.redrawTitle = function () {\n var $$ = this;\n $$.title.attr(\"x\", $$.xForTitle.bind($$)).attr(\"y\", $$.yForTitle.bind($$));\n };\n\n ChartInternal.prototype.xForTitle = function () {\n var $$ = this,\n config = $$.config,\n position = config.title_position || 'left',\n x;\n\n if (position.indexOf('right') >= 0) {\n x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n } else if (position.indexOf('center') >= 0) {\n x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n } else {\n // left\n x = config.title_padding.left;\n }\n\n return x;\n };\n\n ChartInternal.prototype.yForTitle = function () {\n var $$ = this;\n return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n };\n\n ChartInternal.prototype.getTitlePadding = function () {\n var $$ = this;\n return $$.yForTitle() + $$.config.title_padding.bottom;\n };\n\n function powerOfTen(d) {\n return d / Math.pow(10, Math.ceil(Math.log(d) / Math.LN10 - 1e-12)) === 1;\n }\n\n ChartInternal.prototype.drawColorScale = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n target = $$.data.targets[0],\n barWidth,\n barHeight,\n axis,\n points,\n legendAxis,\n axisScale,\n inverseScale,\n height;\n barWidth = !isNaN(config.stanford_scaleWidth) ? config.stanford_scaleWidth : 20;\n barHeight = 5;\n\n if (barHeight < 0 || barWidth < 0) {\n throw Error(\"Colorscale's barheight and barwidth must be greater than 0.\");\n }\n\n height = $$.height - config.stanford_padding.bottom - config.stanford_padding.top;\n points = d3.range(config.stanford_padding.bottom, height, barHeight);\n inverseScale = d3.scaleSequential(target.colors).domain([points[points.length - 1], points[0]]);\n\n if ($$.colorScale) {\n $$.colorScale.remove();\n }\n\n $$.colorScale = $$.svg.append(\"g\").attr('width', 50).attr('height', height).attr('class', CLASS.colorScale);\n $$.colorScale.append('g').attr('transform', \"translate(0, \".concat(config.stanford_padding.top, \")\")).selectAll('bars').data(points).enter().append('rect').attr('y', function (d, i) {\n return i * barHeight;\n }).attr('x', 0).attr('width', barWidth).attr('height', barHeight).attr('fill', function (d) {\n return inverseScale(d);\n }); // Legend Axis\n\n axisScale = d3.scaleLog().domain([target.minEpochs, target.maxEpochs]).range([points[0] + config.stanford_padding.top + points[points.length - 1] + barHeight - 1, points[0] + config.stanford_padding.top]);\n legendAxis = d3.axisRight(axisScale);\n\n if (config.stanford_scaleFormat === 'pow10') {\n legendAxis.tickValues([1, 10, 100, 1000, 10000, 100000, 1000000, 10000000]);\n } else if (isFunction(config.stanford_scaleFormat)) {\n legendAxis.tickFormat(config.stanford_scaleFormat);\n } else {\n legendAxis.tickFormat(d3.format(\"d\"));\n }\n\n if (isFunction(config.stanford_scaleValues)) {\n legendAxis.tickValues(config.stanford_scaleValues(target.minEpochs, target.maxEpochs));\n } // Draw Axis\n\n\n axis = $$.colorScale.append(\"g\").attr(\"class\", \"legend axis\").attr(\"transform\", \"translate(\".concat(barWidth, \",0)\")).call(legendAxis);\n\n if (config.stanford_scaleFormat === 'pow10') {\n axis.selectAll(\".tick text\").text(null).filter(powerOfTen).text(10).append(\"tspan\").attr(\"dy\", \"-.7em\") // https://bl.ocks.org/mbostock/6738229\n .text(function (d) {\n return Math.round(Math.log(d) / Math.LN10);\n });\n }\n\n $$.colorScale.attr('transform', \"translate(\".concat($$.currentWidth - $$.xForColorScale(), \", 0)\"));\n };\n\n ChartInternal.prototype.xForColorScale = function () {\n var $$ = this;\n return $$.config.stanford_padding.right + $$.colorScale.node().getBBox().width;\n };\n\n ChartInternal.prototype.getColorScalePadding = function () {\n var $$ = this;\n return $$.xForColorScale() + $$.config.stanford_padding.left + 20;\n };\n\n ChartInternal.prototype.isStanfordGraphType = function () {\n var $$ = this;\n return $$.config.data_type === 'stanford';\n };\n\n ChartInternal.prototype.initStanfordData = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n target = $$.data.targets[0],\n epochs,\n maxEpochs,\n minEpochs; // Make larger values appear on top\n\n target.values.sort(compareEpochs); // Get array of epochs\n\n epochs = target.values.map(function (a) {\n return a.epochs;\n });\n minEpochs = !isNaN(config.stanford_scaleMin) ? config.stanford_scaleMin : d3.min(epochs);\n maxEpochs = !isNaN(config.stanford_scaleMax) ? config.stanford_scaleMax : d3.max(epochs);\n\n if (minEpochs > maxEpochs) {\n throw Error(\"Number of minEpochs has to be smaller than maxEpochs\");\n }\n\n target.colors = isFunction(config.stanford_colors) ? config.stanford_colors : d3.interpolateHslLong(d3.hsl(250, 1, 0.5), d3.hsl(0, 1, 0.5));\n target.colorscale = d3.scaleSequentialLog(target.colors).domain([minEpochs, maxEpochs]);\n target.minEpochs = minEpochs;\n target.maxEpochs = maxEpochs;\n };\n\n ChartInternal.prototype.getStanfordPointColor = function (d) {\n var $$ = this,\n target = $$.data.targets[0];\n return target.colorscale(d.epochs);\n }; // http://jsfiddle.net/Xotic750/KtzLq/\n\n\n ChartInternal.prototype.getCentroid = function (points) {\n var area = getRegionArea(points);\n var x = 0,\n y = 0,\n i,\n j,\n f,\n point1,\n point2;\n\n for (i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {\n point1 = points[i];\n point2 = points[j];\n f = point1.x * point2.y - point2.x * point1.y;\n x += (point1.x + point2.x) * f;\n y += (point1.y + point2.y) * f;\n }\n\n f = area * 6;\n return {\n x: x / f,\n y: y / f\n };\n };\n\n ChartInternal.prototype.getStanfordTooltipTitle = function (d) {\n var $$ = this,\n labelX = $$.axis.getLabelText('x'),\n labelY = $$.axis.getLabelText('y');\n return \"\\n \".concat(labelX ? sanitise(labelX) : \"x\", \"\").concat(d.x, \"\\n \").concat(labelY ? sanitise(labelY) : \"y\", \"\").concat(d.value, \"\\n \");\n };\n\n ChartInternal.prototype.countEpochsInRegion = function (region) {\n var $$ = this,\n target = $$.data.targets[0],\n total,\n count;\n total = target.values.reduce(function (accumulator, currentValue) {\n return accumulator + Number(currentValue.epochs);\n }, 0);\n count = target.values.reduce(function (accumulator, currentValue) {\n if (pointInRegion(currentValue, region)) {\n return accumulator + Number(currentValue.epochs);\n }\n\n return accumulator;\n }, 0);\n return {\n value: count,\n percentage: count !== 0 ? (count / total * 100).toFixed(1) : 0\n };\n };\n\n var getRegionArea = function getRegionArea(points) {\n // thanks to: https://stackoverflow.com/questions/16282330/find-centerpoint-of-polygon-in-javascript\n var area = 0,\n i,\n j,\n point1,\n point2;\n\n for (i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {\n point1 = points[i];\n point2 = points[j];\n area += point1.x * point2.y;\n area -= point1.y * point2.x;\n }\n\n area /= 2;\n return area;\n };\n var pointInRegion = function pointInRegion(point, region) {\n // thanks to: http://bl.ocks.org/bycoffe/5575904\n // ray-casting algorithm based on\n // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n var xi,\n yi,\n yj,\n xj,\n intersect,\n x = point.x,\n y = point.value,\n inside = false;\n\n for (var i = 0, j = region.length - 1; i < region.length; j = i++) {\n xi = region[i].x;\n yi = region[i].y;\n xj = region[j].x;\n yj = region[j].y;\n intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n\n if (intersect) {\n inside = !inside;\n }\n }\n\n return inside;\n };\n var compareEpochs = function compareEpochs(a, b) {\n if (a.epochs < b.epochs) {\n return -1;\n }\n\n if (a.epochs > b.epochs) {\n return 1;\n }\n\n return 0;\n };\n\n ChartInternal.prototype.initStanfordElements = function () {\n var $$ = this; // Avoid blocking eventRect\n\n $$.stanfordElements = $$.main.select('.' + CLASS.chart).append('g').attr('class', CLASS.stanfordElements);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordLines);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordTexts);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordRegions);\n };\n\n ChartInternal.prototype.updateStanfordElements = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n stanfordLine,\n stanfordLineEnter,\n stanfordRegion,\n stanfordRegionEnter,\n stanfordText,\n stanfordTextEnter,\n xvCustom = $$.xvCustom.bind($$),\n yvCustom = $$.yvCustom.bind($$),\n countPointsInRegion = $$.countEpochsInRegion.bind($$); // Stanford-Lines\n\n stanfordLine = main.select('.' + CLASS.stanfordLines).style('shape-rendering', 'geometricprecision').selectAll('.' + CLASS.stanfordLine).data(config.stanford_lines); // enter\n\n stanfordLineEnter = stanfordLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordLine + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordLineEnter.append('line').attr(\"x1\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y1') : xvCustom(d, 'value_x1');\n }).attr(\"x2\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y2') : xvCustom(d, 'value_x2');\n }).attr(\"y1\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x1') : yvCustom(d, 'value_y1');\n }).attr(\"y2\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x2') : yvCustom(d, 'value_y2');\n }).style(\"opacity\", 0); // update\n\n $$.stanfordLines = stanfordLineEnter.merge(stanfordLine);\n $$.stanfordLines.select('line').transition().duration(duration).attr(\"x1\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y1') : xvCustom(d, 'value_x1');\n }).attr(\"x2\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y2') : xvCustom(d, 'value_x2');\n }).attr(\"y1\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x1') : yvCustom(d, 'value_y1');\n }).attr(\"y2\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x2') : yvCustom(d, 'value_y2');\n }).style(\"opacity\", 1); // exit\n\n stanfordLine.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Stanford-Text\n\n stanfordText = main.select('.' + CLASS.stanfordTexts).selectAll('.' + CLASS.stanfordText).data(config.stanford_texts); // enter\n\n stanfordTextEnter = stanfordText.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordText + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordTextEnter.append('text').attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'y') : xvCustom(d, 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'x') : yvCustom(d, 'y');\n }).style(\"opacity\", 0); // update\n\n $$.stanfordTexts = stanfordTextEnter.merge(stanfordText);\n $$.stanfordTexts.select('text').transition().duration(duration).attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'y') : xvCustom(d, 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'x') : yvCustom(d, 'y');\n }).text(function (d) {\n return d.content;\n }).style(\"opacity\", 1); // exit\n\n stanfordText.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Stanford-Regions\n\n stanfordRegion = main.select('.' + CLASS.stanfordRegions).selectAll('.' + CLASS.stanfordRegion).data(config.stanford_regions); // enter\n\n stanfordRegionEnter = stanfordRegion.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordRegion + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordRegionEnter.append('polygon').attr(\"points\", function (d) {\n return d.points.map(function (value) {\n return [config.axis_rotated ? yvCustom(value, 'y') : xvCustom(value, 'x'), config.axis_rotated ? xvCustom(value, 'x') : yvCustom(value, 'y')].join(\",\");\n }).join(\" \");\n }).style(\"opacity\", 0);\n stanfordRegionEnter.append('text').attr(\"x\", function (d) {\n return $$.getCentroid(d.points).x;\n }).attr(\"y\", function (d) {\n return $$.getCentroid(d.points).y;\n }).style(\"opacity\", 0); // update\n\n $$.stanfordRegions = stanfordRegionEnter.merge(stanfordRegion);\n $$.stanfordRegions.select('polygon').transition().duration(duration).attr(\"points\", function (d) {\n return d.points.map(function (value) {\n return [config.axis_rotated ? yvCustom(value, 'y') : xvCustom(value, 'x'), config.axis_rotated ? xvCustom(value, 'x') : yvCustom(value, 'y')].join(\",\");\n }).join(\" \");\n }).style(\"opacity\", function (d) {\n return d.opacity ? d.opacity : 0.2;\n });\n $$.stanfordRegions.select('text').transition().duration(duration).attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom($$.getCentroid(d.points), 'y') : xvCustom($$.getCentroid(d.points), 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom($$.getCentroid(d.points), 'x') : yvCustom($$.getCentroid(d.points), 'y');\n }).text(function (d) {\n if (d.text) {\n var value, percentage, temp;\n\n if ($$.isStanfordGraphType()) {\n temp = countPointsInRegion(d.points);\n value = temp.value;\n percentage = temp.percentage;\n }\n\n return d.text(value, percentage);\n }\n\n return \"\";\n }).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").style(\"opacity\", 1); // exit\n\n stanfordRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.initTooltip = function () {\n var $$ = this,\n config = $$.config,\n i;\n $$.tooltip = $$.selectChart.style(\"position\", \"relative\").append(\"div\").attr('class', CLASS.tooltipContainer).style(\"position\", \"absolute\").style(\"pointer-events\", \"none\").style(\"display\", \"none\"); // Show tooltip if needed\n\n if (config.tooltip_init_show) {\n if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n\n for (i = 0; i < $$.data.targets[0].values.length; i++) {\n if ($$.data.targets[0].values[i].x - config.tooltip_init_x === 0) {\n break;\n }\n }\n\n config.tooltip_init_x = i;\n }\n\n $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n return $$.addName(d.values[config.tooltip_init_x]);\n }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n $$.tooltip.style(\"top\", config.tooltip_init_position.top).style(\"left\", config.tooltip_init_position.left).style(\"display\", \"block\");\n }\n };\n\n ChartInternal.prototype.getTooltipSortFunction = function () {\n var $$ = this,\n config = $$.config;\n\n if (config.data_groups.length === 0 || config.tooltip_order !== undefined) {\n // if data are not grouped or if an order is specified\n // for the tooltip values we sort them by their values\n var order = config.tooltip_order;\n\n if (order === undefined) {\n order = config.data_order;\n }\n\n var valueOf = function valueOf(obj) {\n return obj ? obj.value : null;\n }; // if data are not grouped, we sort them by their value\n\n\n if (isString(order) && order.toLowerCase() === 'asc') {\n return function (a, b) {\n return valueOf(a) - valueOf(b);\n };\n } else if (isString(order) && order.toLowerCase() === 'desc') {\n return function (a, b) {\n return valueOf(b) - valueOf(a);\n };\n } else if (isFunction(order)) {\n // if the function is from data_order we need\n // to wrap the returned function in order to format\n // the sorted value to the expected format\n var sortFunction = order;\n\n if (config.tooltip_order === undefined) {\n sortFunction = function sortFunction(a, b) {\n return order(a ? {\n id: a.id,\n values: [a]\n } : null, b ? {\n id: b.id,\n values: [b]\n } : null);\n };\n }\n\n return sortFunction;\n } else if (isArray(order)) {\n return function (a, b) {\n return order.indexOf(a.id) - order.indexOf(b.id);\n };\n }\n } else {\n // if data are grouped, we follow the order of grouped targets\n var ids = $$.orderTargets($$.data.targets).map(function (i) {\n return i.id;\n }); // if it was either asc or desc we need to invert the order\n // returned by orderTargets\n\n if ($$.isOrderAsc() || $$.isOrderDesc()) {\n ids = ids.reverse();\n }\n\n return function (a, b) {\n return ids.indexOf(a.id) - ids.indexOf(b.id);\n };\n }\n };\n\n ChartInternal.prototype.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n var $$ = this,\n config = $$.config,\n titleFormat = config.tooltip_format_title || defaultTitleFormat,\n nameFormat = config.tooltip_format_name || function (name) {\n return name;\n },\n valueFormat = config.tooltip_format_value || defaultValueFormat,\n text,\n i,\n title,\n value,\n name,\n bgcolor;\n\n var tooltipSortFunction = this.getTooltipSortFunction();\n\n if (tooltipSortFunction) {\n d.sort(tooltipSortFunction);\n }\n\n for (i = 0; i < d.length; i++) {\n if (!(d[i] && (d[i].value || d[i].value === 0))) {\n continue;\n }\n\n if ($$.isStanfordGraphType()) {\n // Custom tooltip for stanford plots\n if (!text) {\n title = $$.getStanfordTooltipTitle(d[i]);\n text = \"\" + title;\n }\n\n bgcolor = $$.getStanfordPointColor(d[i]);\n name = sanitise(config.data_epochs); // Epochs key name\n\n value = d[i].epochs;\n } else {\n // Regular tooltip\n if (!text) {\n title = sanitise(titleFormat ? titleFormat(d[i].x, d[i].index) : d[i].x);\n text = \"
\" + (title || title === 0 ? \"\" : \"\");\n }\n\n value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n\n if (value !== undefined) {\n // Skip elements when their name is set to null\n if (d[i].name === null) {\n continue;\n }\n\n name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n }\n }\n\n if (value !== undefined) {\n text += \"\";\n text += \"\";\n text += \"\";\n text += \"\";\n }\n }\n\n return text + \"
\" + title + \"
\" + name + \"\" + value + \"
\";\n };\n\n ChartInternal.prototype.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n var forArc = $$.hasArcType(),\n mouse = d3.mouse(element); // Determin tooltip position\n\n if (forArc) {\n tooltipLeft = ($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2 + mouse[0];\n tooltipTop = ($$.hasType('gauge') ? $$.height : $$.height / 2) + mouse[1] + 20;\n } else {\n svgLeft = $$.getSvgLeft(true);\n\n if (config.axis_rotated) {\n tooltipLeft = svgLeft + mouse[0] + 100;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = $$.x(dataToShow[0].x) + 20;\n } else {\n tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = mouse[1] + 15;\n }\n\n if (tooltipRight > chartRight) {\n // 20 is needed for Firefox to keep tooltip width\n tooltipLeft -= tooltipRight - chartRight + 20;\n }\n\n if (tooltipTop + tHeight > $$.currentHeight) {\n tooltipTop -= tHeight + 30;\n }\n }\n\n if (tooltipTop < 0) {\n tooltipTop = 0;\n }\n\n return {\n top: tooltipTop,\n left: tooltipLeft\n };\n };\n\n ChartInternal.prototype.showTooltip = function (selectedData, element) {\n var $$ = this,\n config = $$.config;\n var tWidth, tHeight, position;\n var forArc = $$.hasArcType(),\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n positionFunction = config.tooltip_position || ChartInternal.prototype.tooltipPosition;\n\n if (dataToShow.length === 0 || !config.tooltip_show) {\n return;\n }\n\n $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\"); // Get tooltip dimensions\n\n tWidth = $$.tooltip.property('offsetWidth');\n tHeight = $$.tooltip.property('offsetHeight');\n position = positionFunction.call(this, dataToShow, tWidth, tHeight, element); // Set tooltip\n\n $$.tooltip.style(\"top\", position.top + \"px\").style(\"left\", position.left + 'px');\n };\n\n ChartInternal.prototype.hideTooltip = function () {\n this.tooltip.style(\"display\", \"none\");\n };\n\n ChartInternal.prototype.setTargetType = function (targetIds, type) {\n var $$ = this,\n config = $$.config;\n $$.mapToTargetIds(targetIds).forEach(function (id) {\n $$.withoutFadeIn[id] = type === config.data_types[id];\n config.data_types[id] = type;\n });\n\n if (!targetIds) {\n config.data_type = type;\n }\n };\n\n ChartInternal.prototype.hasType = function (type, targets) {\n var $$ = this,\n types = $$.config.data_types,\n has = false;\n targets = targets || $$.data.targets;\n\n if (targets && targets.length) {\n targets.forEach(function (target) {\n var t = types[target.id];\n\n if (t && t.indexOf(type) >= 0 || !t && type === 'line') {\n has = true;\n }\n });\n } else if (Object.keys(types).length) {\n Object.keys(types).forEach(function (id) {\n if (types[id] === type) {\n has = true;\n }\n });\n } else {\n has = $$.config.data_type === type;\n }\n\n return has;\n };\n\n ChartInternal.prototype.hasArcType = function (targets) {\n return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n };\n\n ChartInternal.prototype.isLineType = function (d) {\n var config = this.config,\n id = isString(d) ? d : d.id;\n return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isStepType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isSplineType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isAreaType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isBarType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'bar';\n };\n\n ChartInternal.prototype.isScatterType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'scatter';\n };\n\n ChartInternal.prototype.isStanfordType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'stanford';\n };\n\n ChartInternal.prototype.isScatterOrStanfordType = function (d) {\n return this.isScatterType(d) || this.isStanfordType(d);\n };\n\n ChartInternal.prototype.isPieType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'pie';\n };\n\n ChartInternal.prototype.isGaugeType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'gauge';\n };\n\n ChartInternal.prototype.isDonutType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'donut';\n };\n\n ChartInternal.prototype.isArcType = function (d) {\n return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n };\n\n ChartInternal.prototype.lineData = function (d) {\n return this.isLineType(d) ? [d] : [];\n };\n\n ChartInternal.prototype.arcData = function (d) {\n return this.isArcType(d.data) ? [d] : [];\n };\n /* not used\n function scatterData(d) {\n return isScatterType(d) ? d.values : [];\n }\n */\n\n\n ChartInternal.prototype.barData = function (d) {\n return this.isBarType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.lineOrScatterOrStanfordData = function (d) {\n return this.isLineType(d) || this.isScatterType(d) || this.isStanfordType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.barOrLineData = function (d) {\n return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.isSafari = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n };\n\n ChartInternal.prototype.isChrome = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Chrome') >= 0;\n };\n\n ChartInternal.prototype.initZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n startEvent;\n $$.zoom = d3.zoom().on(\"start\", function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n }\n\n startEvent = e;\n config.zoom_onzoomstart.call($$.api, e);\n }).on(\"zoom\", function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n }\n\n $$.redrawForZoom();\n config.zoom_onzoom.call($$.api, $$.x.orgDomain());\n }).on('end', function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n } // if click, do nothing. otherwise, click interaction will be canceled.\n\n\n if (e && startEvent.clientX === e.clientX && startEvent.clientY === e.clientY) {\n return;\n }\n\n config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n });\n\n $$.zoom.updateDomain = function () {\n if (d3.event && d3.event.transform) {\n $$.x.domain(d3.event.transform.rescaleX($$.subX).domain());\n }\n\n return this;\n };\n\n $$.zoom.updateExtent = function () {\n this.scaleExtent([1, Infinity]).translateExtent([[0, 0], [$$.width, $$.height]]).extent([[0, 0], [$$.width, $$.height]]);\n return this;\n };\n\n $$.zoom.update = function () {\n return this.updateExtent().updateDomain();\n };\n\n return $$.zoom.updateExtent();\n };\n\n ChartInternal.prototype.zoomTransform = function (range) {\n var $$ = this,\n s = [$$.x(range[0]), $$.x(range[1])];\n return $$.d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0);\n };\n\n ChartInternal.prototype.initDragZoom = function () {\n var $$ = this;\n var d3 = $$.d3;\n var config = $$.config;\n var context = $$.context = $$.svg;\n var brushXPos = $$.margin.left + 20.5;\n var brushYPos = $$.margin.top + 0.5;\n\n if (!(config.zoom_type === 'drag' && config.zoom_enabled)) {\n return;\n }\n\n var getZoomedDomain = function getZoomedDomain(selection) {\n return selection && selection.map(function (x) {\n return $$.x.invert(x);\n });\n };\n\n var brush = $$.dragZoomBrush = d3.brushX().on(\"start\", function () {\n $$.api.unzoom();\n $$.svg.select(\".\" + CLASS.dragZoom).classed(\"disabled\", false);\n config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n }).on(\"brush\", function () {\n config.zoom_onzoom.call($$.api, getZoomedDomain(d3.event.selection));\n }).on(\"end\", function () {\n if (d3.event.selection == null) {\n return;\n }\n\n var zoomedDomain = getZoomedDomain(d3.event.selection);\n\n if (!config.zoom_disableDefaultBehavior) {\n $$.api.zoom(zoomedDomain);\n }\n\n $$.svg.select(\".\" + CLASS.dragZoom).classed(\"disabled\", true);\n config.zoom_onzoomend.call($$.api, zoomedDomain);\n });\n context.append(\"g\").classed(CLASS.dragZoom, true).attr(\"clip-path\", $$.clipPath).attr(\"transform\", \"translate(\" + brushXPos + \",\" + brushYPos + \")\").call(brush);\n };\n\n ChartInternal.prototype.getZoomDomain = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n return [min, max];\n };\n\n ChartInternal.prototype.redrawForZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n zoom = $$.zoom,\n x = $$.x;\n\n if (!config.zoom_enabled) {\n return;\n }\n\n if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n return;\n }\n\n zoom.update();\n\n if (config.zoom_disableDefaultBehavior) {\n return;\n }\n\n if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n }\n\n $$.redraw({\n withTransition: false,\n withY: config.zoom_rescale,\n withSubchart: false,\n withEventRect: false,\n withDimension: false\n });\n\n if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'mousemove') {\n $$.cancelClick = true;\n }\n };\n\n return c3;\n\n}));\n","export function testObject(input) {\n if (input !== null && typeof input.getTime === 'function' && !isNaN(input.getTime())) {\n return true;\n }\n return false;\n}\n\nexport function testString(input) {\n const ISO_8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n return ISO_8601.test(input);\n}\n\nexport default function (input) {\n if (typeof input === 'object') {\n return testObject(input);\n } else if (typeof input === 'string') {\n return testString(input);\n }\n return false;\n}\n","// Modifiers\nimport * as append from './modifiers/append';\nimport * as del from './modifiers/delete';\nimport * as filter from './modifiers/filter';\nimport * as insert from './modifiers/insert';\nimport * as select from './modifiers/select';\nimport * as sort from './modifiers/sort';\nimport * as update from './modifiers/update';\n\n// Utils\nimport analyses from './utils/analyses';\nimport { extend } from '../utils/extend';\nimport parsers from './utils/parsers';\n\nexport const Dataset = function (config = {}) {\n if (this instanceof Dataset === false) {\n return new Dataset(config);\n }\n\n this.matrix = [\n ['Index']\n ];\n this.meta = {\n type: undefined\n };\n this.config = config;\n}\n\nDataset.prototype.data = function (arr) {\n if (!arguments.length) return this.matrix;\n this.matrix = (arr instanceof Array ? arr : null);\n return this;\n};\n\nDataset.prototype.set = function (coords, value) {\n if (arguments.length < 2 || coords.length < 2) {\n throw Error('Incorrect arguments provided for #set method');\n }\n\n var colIndex = 'number' === typeof coords[0] ? coords[0] : this.matrix[0].indexOf(coords[0]),\n rowIndex = 'number' === typeof coords[1] ? coords[1] : select.selectColumn.call(this, 0).indexOf(coords[1]);\n\n var colResult = select.selectColumn.call(this, coords[0]),\n rowResult = select.selectRow.call(this, coords[1]);\n\n // Column doesn't exist, create and reset colIndex\n if (colResult.length < 1) {\n append.appendColumn.call(this, String(coords[0]));\n colIndex = this.matrix[0].length - 1;\n }\n\n // Row doesn't exist, create and reset rowIndex\n if (rowResult.length < 1) {\n append.appendRow.call(this, String(coords[1]));\n rowIndex = this.matrix.length - 1;\n }\n\n // Set provided value\n this.matrix[ rowIndex ][ colIndex ] = value;\n return this;\n};\n\nDataset.prototype.type = function(str){\n if (!arguments.length) return this.meta['type'];\n this.meta['type'] = (str ? String(str) : undefined);\n return this;\n};\n\nextend(Dataset.prototype, append);\nextend(Dataset.prototype, del);\nextend(Dataset.prototype, filter);\nextend(Dataset.prototype, insert);\nextend(Dataset.prototype, select);\nextend(Dataset.prototype, sort);\nextend(Dataset.prototype, update);\nextend(Dataset.prototype, analyses);\nDataset.parser = parsers(Dataset);\n\nexport default Dataset;\n","import { each } from '../../utils/each';\nimport { extend } from '../../utils/extend';\n\nfunction average(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0,\n avg = null;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum / set.length;\n}\n\nfunction maximum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.max.apply(Math, nums);\n}\n\nfunction minimum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.min.apply(Math, nums);\n}\n\nfunction sum(arr, start, end){\n // Copy set with given range\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum;\n}\n\nconst getColumnAverage = function (arr) {\n return average(arr, 1);\n};\nconst getRowAverage = getColumnAverage;\n\nconst getColumnSum = function (arr) {\n return sum(arr, 1);\n};\nconst getRowSum = getColumnSum;\n\nconst getColumnMaximum = function (arr) {\n return maximum(arr, 1);\n};\nconst getRowMaximum = getColumnMaximum;\n\nconst getColumnMinimum = function (arr) {\n return minimum(arr, 1);\n};\nconst getRowMinimum = getColumnMinimum;\n\nconst getColumnLabel = function (arr) {\n return arr[0];\n};\nconst getRowIndex = getColumnLabel;\n\nexport default {\n average,\n maximum,\n minimum,\n sum,\n getColumnAverage,\n getRowAverage,\n getColumnSum,\n getRowSum,\n getColumnMaximum,\n getRowMaximum,\n getColumnMinimum,\n getRowMinimum,\n getColumnLabel,\n getRowIndex,\n};\n","/**\n * Strip html tags from string\n *\n * @param {string} string The string to strip\n * @return {string}\n * @public\n */\n\nexport function stripHtmlTags(inputString) {\n if (typeof inputString !== 'string') {\n return inputString;\n }\n return inputString.replace(/(<([^>]+)>)/ig, '');\n}\n","import { each } from './each';\n\nexport function extendDeep(target) {\n for (var i = 1; i < arguments.length; i++) {\n each(arguments[i], function(prop, key){\n if (( typeof target[key] !== 'undefined' && typeof prop !== 'undefined' ) &&\n ( typeof target[key] === 'object' && typeof prop === 'object' ) &&\n ( target[key] !== null && prop !== null )) {\n extendDeep(target[key], prop);\n }\n else {\n target[key] = prop;\n }\n });\n }\n return target;\n}\n","import downloadResults from './download-results';\n\nexport default function renderDownloadButton({\n element,\n label = 'Download',\n type = 'json',\n data,\n} = {}) {\n const btnClass = 'keen-dataviz-button';\n const isBtnRendered = [...element.parentNode.children]\n .find(child => child.className === btnClass);\n if (isBtnRendered) return;\n\n const button = document.createElement('button');\n button.innerText = label;\n button.className = btnClass;\n button.addEventListener('click', event => downloadResults({ event, type, data}));\n element.parentNode.insertBefore(button, element.nextSibling);\n};","import domtoimage from 'dom-to-image';\nimport { saveAs } from 'file-saver';\n\nexport default function exportImage(obj) {\n const { node, quality, bgcolor } = obj;\n if (quality) {\n if (quality < 0 || quality > 1) throw Error('Please provide image quality between 0 and 1');\n domtoimage.toBlob(node, { quality, bgcolor })\n .then((blob) => {\n saveAs(blob, 'chart.jpeg');\n });\n }\n\n if (!quality) {\n domtoimage.toBlob(node)\n .then((blob) => {\n saveAs(blob, 'chart.png');\n });\n }\n}\n","function generateCsvContent(data) {\n let csvContent = '';\n\n data.forEach((row, i) => {\n row.forEach((cell, j) => {\n csvContent += String(cell).replace(/,/g, '');\n if (row.length > j + 1) {\n csvContent += ',';\n }\n });\n if (data.length > i + 1) {\n csvContent += '\\n';\n }\n });\n return `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n}\n\nexport default function exportData(obj) {\n const { type, data } = obj;\n const supportedFormats = ['json', 'csv'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = supportedFormats[0];\n let content = '';\n\n if (format === 'json') {\n content = `data:text/json;charset=utf-8, ${encodeURIComponent(JSON.stringify(data))}`;\n }\n\n if (format === 'csv') {\n content = generateCsvContent(data);\n fileFormat = format;\n }\n\n const htmlElement = document.createElement('a');\n htmlElement.setAttribute('href', content);\n htmlElement.setAttribute('download', `${fileName}.${fileFormat}`);\n document.body.appendChild(htmlElement);\n htmlElement.click();\n document.body.removeChild(htmlElement);\n}\n","/*!\n *\n * Rangeable\n * Copyright (c) 2018 Karl Saunders (mobius1(at)gmx(dot)com)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.1.6\n *\n */\n(function(i,j){\"object\"==typeof exports?module.exports=j(\"Rangeable\"):\"function\"==typeof define&&define.amd?define([],j):i.Rangeable=j(\"Rangeable\")})(\"undefined\"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&\"function\"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=[\"ruler\"],\"string\"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:\"single\",tooltips:\"always\",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:\"rangeable-input\",container:\"rangeable-container\",vertical:\"rangeable-vertical\",progress:\"rangeable-progress\",handle:\"rangeable-handle\",track:\"rangeable-track\",multiple:\"rangeable-multiple\",disabled:\"rangeable-disabled\",tooltips:\"rangeable-tooltips\",tooltip:\"rangeable-tooltip\",visible:\"rangeable-tooltips--visible\"}},t),this.mouseAxis={x:\"clientX\",y:\"clientY\"},this.trackSize={x:\"width\",y:\"height\"},this.trackPos={x:\"left\",y:\"top\"},this.lastPos=0,this.double=\"double\"===this.config.type||Array.isArray(this.config.value),this.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version=\"0.1.6\",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?\"y\":\"x\",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i(\"div\",u.container),w=i(\"div\",u.track),x=i(\"div\",u.progress),y=i(\"div\",u.handle),z=i(\"div\",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i(\"div\",u.handle),i(\"div\",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i(\"div\",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+\"px\"),t.tooltips&&(v.classList.add(u.tooltips),\"string\"==typeof t.tooltips&&\"always\"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i(\"div\",\"rangeable-buffers\");this.input.values.forEach(function(C,D){var E=i(\"div\",\"rangeable-buffer\");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i(\"div\",\"rangeable-buffer\"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return\"mousedown\"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add(\"dragging\"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add(\"active\"),this.setValueFromPosition(s),this.touch?(document.addEventListener(\"touchmove\",this.events.move,!1),document.addEventListener(\"touchend\",this.events.stop,!1),document.addEventListener(\"touchcancel\",this.events.stop,!1)):(document.addEventListener(\"mousemove\",this.events.move,!1),document.addEventListener(\"mouseup\",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove(\"dragging\"),this.onEnd(),this.activeHandle.classList.remove(\"active\"),this.activeHandle=!1,this.touch?(document.removeEventListener(\"touchmove\",this.events.move),document.removeEventListener(\"touchend\",this.events.stop),document.removeEventListener(\"touchcancel\",this.events.stop)):(document.removeEventListener(\"mousemove\",this.events.move),document.removeEventListener(\"mouseup\",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event(\"change\")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case\"ArrowRight\":case\"ArrowUp\":t.stepUp(v);break;case\"ArrowLeft\":case\"ArrowDown\":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle(\"combined-tooltip\",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+\" - \"+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event(\"input\")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?\"bottom\":\"left\"]=s+\"px\",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+\"px\"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest(\".\"+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute(\"tabindex\")}):this.nodes.handle.removeAttribute(\"tabindex\"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},\"start move stop update reset native keydown\".split(\" \").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener(\"scroll\",this.events.scroll,!1),window.addEventListener(\"resize\",this.events.resize,!1),document.addEventListener(\"keydown\",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.input.addEventListener(\"input\",this.events.native,!1),this.input.form&&this.input.form.addEventListener(\"reset\",this.events.reset,!1)},r.unbind=function(){document.removeEventListener(\"scroll\",this.events.scroll),window.removeEventListener(\"resize\",this.events.resize),document.removeEventListener(\"keydown\",this.events.keydown),this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.input.removeEventListener(\"input\",this.events.native),this.input.form&&this.input.form.removeEventListener(\"reset\",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q});","import { Dataviz, Dataset } from './index';\n\nconst env = typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {};\n\nexport const extendKeenGlobalObject = function(env) {\n env.KeenDataviz = Dataviz;\n env.KeenDataset = Dataset;\n\n // just for backward compatibility\n env.Keen = env.Keen || {};\n env.Keen.Dataset = Dataset;\n env.Keen.Dataviz = Dataviz;\n};\n\nif (typeof KEEN_GLOBAL_OBJECT !== 'undefined'\n && KEEN_GLOBAL_OBJECT) {\n extendKeenGlobalObject(env);\n}\n\nexport let keenGlobals = undefined;\nif (typeof webpackKeenGlobals !== 'undefined') {\n keenGlobals = webpackKeenGlobals;\n}\n\nexport { Dataviz, Dataset } from './index';\nexport default Dataviz;\n","/* eslint-env browser */\nimport * as d3 from 'd3';\nimport c3 from 'c3';\n\nimport pkg from '../package.json';\nimport data from './data';\nimport { Dataset } from './dataset';\n\n// Utils\nimport { each } from './utils/each';\nimport isDateString from './utils/assert-date-string';\nimport { stripHtmlTags } from './utils/strip-html-tags';\nimport { escapeHtml } from './utils/escape-html';\nimport libraries from './libraries';\nimport { extendDeep } from './utils/extend-deep';\nimport exportImage from './utils/export-svg';\nimport exportData from './utils/export-data';\nimport renderDownloadButton from './utils/render-download-btn';\nimport renderExecutionMetadata from './utils/render-execution-metadata';\nimport copyToClipboard from './utils/copy-to-clipboard';\n\nimport palettes from './palettes/index';\n\n// Constructor\nexport const Dataviz = function (options = {}) {\n if (this instanceof Dataviz === false) {\n return new Dataviz(options);\n }\n\n this.c3 = c3; // expose for use outside\n this.d3 = d3;\n\n const datavizInstance = this;\n const defaultOptions = {\n showDeprecationWarnings: true,\n showLoadingSpinner: false,\n\n container: undefined, // querySelector of container, for example '#someDiv'\n containerElement: undefined, // HTML parent element for the chart\n\n // width: undefined, *deprecated* - use CSS\n // height: undefined, *deprecated* - use CSS\n\n title: undefined,\n showTitle: true,\n\n subtitle: undefined,\n\n notes: undefined,\n theme: 'keen-dataviz',\n\n colors: [\n '#00bbde', '#fe6672', '#eeb058', '#8a8ad6', '#ff855c', '#00cfbb',\n '#5a9eed', '#73d483', '#c879bb', '#0099b6', '#d74d58', '#cb9141',\n '#6b6bb6', '#d86945', '#00aa99', '#4281c9', '#57b566', '#ac5c9e',\n '#27cceb', '#ff818b', '#f6bf71', '#9b9be1', '#ff9b79', '#26dfcd',\n '#73aff4', '#87e096', '#d88bcb',\n ],\n\n colorMapping: {},\n ui: {\n executionMetadata: true,\n },\n utils: {\n clickToCopyToClipboard: true,\n },\n\n indexBy: 'timeframe.start',\n labels: [],\n labelMapping: {},\n labelMappingRegExp: undefined,\n errorMapping: {},\n showErrorMessages: true,\n library: 'default',\n sortGroups: undefined,\n sortIntervals: undefined,\n\n results: undefined, // raw data\n\n // C3 chartOptions\n type: undefined,\n stacked: false,\n dateFormat: undefined,\n legend: {\n show: true,\n position: 'right',\n alignment: 'top',\n label: {\n textMaxLength: 12\n },\n pagination: {\n offset: 0, // start from\n limit: 5 // items per page\n },\n tooltip: {\n show: true,\n pointer: true\n },\n sort: undefined\n },\n\n axis: {},\n color: {},\n size: {\n // control it with CSS of .c3-chart\n },\n padding: {\n top: 15\n },\n point: {\n focus: {\n expand: {\n enabled: false\n }\n },\n r: 2,\n show: true,\n sensitivity: 300\n },\n tooltip: {\n horizontal: true,\n format: {\n // https://c3js.org/samples/tooltip_format.html\n }\n },\n transition: {\n // duration: 0\n },\n data: {\n order: null,\n selection: {\n enabled: true,\n draggable: true,\n multiple: true\n },\n onselected: (d, element) => {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n },\n },\n grid: {\n y: {\n show: true\n }\n },\n partialIntervalIndicator: {\n show: undefined,\n className: 'partial-interval-indicator'\n },\n timezone: 'UTC',\n table: {\n schema: 'static',\n },\n renderOnVisible: false,\n funnel: {\n lines: true,\n resultValues: true,\n percents: {\n show: false,\n countingMethod: 'absolute',\n decimals: 0\n },\n marginBetweenElements: false,\n hover: true,\n effect3d: 'both-sides',\n minimalSize: false,\n },\n react: false,\n range: false,\n sparkline: false,\n choropleth: {\n map: 'world',\n borders: {\n show: true,\n size: 0.5,\n color: '#000'\n },\n showSlider: false\n },\n heatmap: {},\n };\n\n this.config = { ...extendDeep(defaultOptions, options) };\n\n if (options.palette) {\n if (!palettes[options.palette]){\n console.log('Colors pallete not found', options.palette);\n }\n this.config.colors = palettes[options.palette].colors;\n }\n\n if (this.config.type) {\n // backward compatibility with v2016... areachart -> area\n this.config.type = convertChartTypes(this.config.type);\n }\n\n // overwriting options for range chart\n if(this.config.type && this.config.type.includes('-range')) {\n this.config.range = true;\n this.config.type = this.config.type.replace('-range', '');\n this.config.legend.show = false;\n this.config.stacking = 'normal';\n this.config.labels = ['Max', 'Min'];\n this.config.colors = [\n this.config.colors[0],\n this.config.colors[0],\n ];\n }\n\n // overwriting stacked when stacking added\n if (this.config.stacking) {\n this.config.stacked = true;\n }\n\n // overwriting options for sparkline chart\n if (this.config.sparkline) {\n this.config.legend.show = false;\n this.config.axis = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n this.config.grid = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n }\n\n // get DOM node by query\n if (this.config.container) {\n this.el(this.config.container);\n }\n\n if (options.legend !== undefined && !options.legend) {\n this.config.legend = {\n ...options,\n show: false\n };\n }\n\n if (options.color && options.color.pattern) {\n // to match c3 options\n this.config.colors = options.color.pattern;\n }\n\n if (this.config.legend\n && this.config.legend.tooltip\n && this.config.legend.tooltip.show === false\n && this.config.tooltip.show === undefined) {\n this.config.tooltip = { show: false };\n }\n\n this.dataset = new Dataset(this.config);\n this.view = {\n _prepared: false,\n _rendered: false,\n _artifacts: { /* state bin */ }\n };\n\n Dataviz.visuals.push(this);\n\n if (this.config.showLoadingSpinner) {\n this.prepare();\n }\n\n if (!!this.config.results) {\n this.render(this.config.results);\n }\n this.config.firstVisibilityState = document.visibilityState;\n\n if (!this.config.utils.clickToCopyToClipboard) {\n this.config.data.onselected = () => {};\n }\n\n if (options.data && options.data.onselected) {\n this.config.data.onselected = (d, element) => {\n const callback = options.data.onselected.bind(null, d, element);\n callback();\n\n if (this.config.utils.clickToCopyToClipboard) {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n }\n };\n }\n\n};\n\n\nDataviz.libraries = { default: {} };\nif (typeof window !== 'undefined') {\n Dataviz.libraries.default = libraries(Dataviz);\n}\nDataviz.visuals = [];\n\nDataviz.register = function (name, actions) {\n Dataviz.libraries[name] = Dataviz.libraries[name] || {};\n each(actions, function(method, key){\n Dataviz.libraries[name][key] = method;\n });\n};\n\nDataviz.find = function(target){\n if (!arguments.length) return Dataviz.visuals;\n const el = target.nodeName ? target : document.querySelector(target);\n let match = null;\n each(Dataviz.visuals, function(visual){\n if (el == visual.config.container){\n match = visual;\n return false;\n }\n });\n return match;\n};\n\n\n // Prototype\n // ------------\n\nDataviz.prototype.attributes = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n const view = this.config;\n each(obj, function(prop, key){\n // Handle deprecated property names\n if (key === 'chartType') {\n key = 'type';\n }\n view[key] = prop;\n });\n return this;\n};\n\nDataviz.prototype.call = function(fn){\n fn.call(this);\n return this;\n};\n\nDataviz.prototype.chartOptions = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n this.config = extendDeep(this.config, obj);\n return this;\n};\n\nDataviz.prototype.colors = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.colors;\n this.config.colors = (arr instanceof Array ? arr : []);\n return this;\n};\n\nDataviz.prototype.colorMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })');\n }\n const datavizInstance = this;\n if (!arguments.length) return this.config.colorMapping;\n if (obj === null) {\n this.config.colorMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n datavizInstance.config.colorMapping[key] = (value ? value : null);\n });\n }\n return this;\n};\n\nDataviz.prototype.data = data;\n\nDataviz.prototype.dateFormat = function(val){\n if (this.config.showDeprecationWarnings) {\n console.log('.dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.dateFormat;\n if (typeof val === 'string' || typeof val === 'function') {\n this.config.dateFormat = val;\n }\n else {\n this.config.dateFormat = undefined;\n }\n return this;\n};\n\nDataviz.prototype.destroy = function(){\n const library = this.library();\n const type = this.config.type;\n const element = this.el();\n\n // Call destroy method if present\n if (Dataviz.libraries[library]\n && Dataviz.libraries[library][type]){\n Dataviz.libraries[library][type].destroy.call(this);\n }\n\n // Clear rendered artifacts, state bin\n if (element) {\n element.innerHTML = '';\n }\n this.view._prepared = false;\n this.view._rendered = false;\n this.view._artifacts = {};\n return this;\n};\n\nDataviz.prototype.el = function(target){\n const datavizInstance = this;\n if (!arguments.length) return this.config.containerElement;\n domReady(function(){\n if (target && target !== null) {\n if (target.nodeName) {\n datavizInstance.config.containerElement = target;\n }\n else if (document.querySelector) {\n datavizInstance.config.containerElement = document.querySelector(target);\n }\n }\n else {\n datavizInstance.config.containerElement = undefined;\n }\n });\n return this;\n};\n\nDataviz.prototype.height = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.height() is deprecated - use CSS classes');\n }\n return this;\n};\n\n// IMPORTANT: Must be run before data parsing\nDataviz.prototype.indexBy = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.indexBy;\n this.config.indexBy = (str ? String(str) : 'timeframe.start');\n return this;\n};\n\nDataviz.prototype.labels = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })');\n }\n\n if (!arguments.length) return this.config.labels;\n this.config.labels = (arr instanceof Array ? arr : []);\n\n setLabels(this);\n\n return this;\n};\n\nfunction setLabels(datavizInstance){\n // Write labels\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.updateColumn(0, function(value, index){\n if (datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n else {\n datavizInstance.dataset.updateRow(0, function(value, index){\n if (index > 0 && datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.labelMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.labelMapping;\n if (obj === null) {\n this.config.labelMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n this.config.labelMapping[key] = (value ? value : null);\n }.bind(this));\n }\n\n mapLabels(this);\n\n return this;\n};\n\nfunction mapLabelsExec({ datavizInstance, value }){\n if (datavizInstance.config.labelMappingRegExp){\n let valueAfterMatching = value;\n datavizInstance.config.labelMappingRegExp.forEach(regExpAndLabel => {\n if (regExpAndLabel.length > 1) {\n let regExpObj = regExpAndLabel[0];\n if (regExpObj.test(value)){\n valueAfterMatching = regExpAndLabel[1];\n }\n }\n });\n return stripHtmlTags(valueAfterMatching);\n }\n if (datavizInstance.config.labelMapping[value]) {\n return stripHtmlTags(String(datavizInstance.config.labelMapping[value]));\n }\n return stripHtmlTags(value);\n}\n\nfunction mapLabels(datavizInstance){\n // Write labels\n if (!datavizInstance.config.labelMappingDimension) {\n // if not defined use deprecated auto-detecting\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.config.labelMappingDimension = 'row';\n } else {\n datavizInstance.config.labelMappingDimension = 'column';\n }\n }\n\n if (datavizInstance.config.labelMappingDimension === 'row'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateColumn(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n\n if (datavizInstance.config.labelMappingDimension === 'column'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateRow(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.library = function(str){\n if (!arguments.length) return this.config['library'];\n this.config['library'] = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.message = function(){\n if (this.view._rendered) {\n this.destroy();\n }\n if (this.el()) {\n this.el().innerHTML = '';\n const message = Dataviz.libraries.default.message;\n if (message.render) {\n message.render.apply(this, arguments);\n }\n }\n return this;\n};\n\nDataviz.prototype.notes = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.notes;\n this.config.notes = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.prepare = function(){\n const datavizInstance = this;\n\n if (!this.el()) {\n throw `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n return;\n }\n\n domReady(function(){\n if (datavizInstance.view._rendered) {\n datavizInstance.destroy();\n }\n if (datavizInstance.el()) {\n datavizInstance.el().innerHTML = '';\n const loader = Dataviz.libraries.default.spinner;\n if (loader.render) {\n loader.render.call(datavizInstance);\n }\n datavizInstance.view._prepared = true;\n }\n });\n\n return this;\n};\n\nDataviz.prototype.render = function(results = undefined){\n const datavizInstance = this;\n\n if (!!results) {\n const firstResult = results[0] || results;\n if (\n firstResult.query\n && firstResult.query.interval\n && firstResult.query.timeframe\n && typeof firstResult.query.timeframe === 'string'\n && firstResult.query.timeframe.includes('this_')\n && this.config.partialIntervalIndicator\n && this.config.partialIntervalIndicator.show === undefined\n )\n {\n this.config.partialIntervalIndicator.show = true;\n }\n\n if (Array.isArray(results)) {\n const timeframes = results.map(resultItem => resultItem.query.timeframe);\n timeframes.forEach(resultTimeframe => {\n let foundDifferent = timeframes.find(timeframeItem =>\n JSON.stringify(timeframeItem) !== JSON.stringify(resultTimeframe)\n );\n if (foundDifferent){\n const msg = 'Timeframes of the queries should be the same';\n console.error(msg);\n throw msg;\n }\n });\n // first result is important to prepare X on the chart\n return datavizInstance\n .data(results[0])\n .call(() => {\n const input = results[0];\n this.dataset.deleteColumn(1);\n for (let result of results) {\n let label = `${input.query.event_collection} ${input.query.analysis_type}`;\n let ds2 = Dataset.parser('interval')(result);\n datavizInstance.dataset.appendColumn(label, ds2.selectColumn(1).slice(1));\n }\n })\n .render();\n }\n\n return datavizInstance.data(results).render();\n }\n if (\n (!!this.config.labelMapping && Object.keys(this.config.labelMapping).length > 0)\n ||\n (!!this.config.labelMappingRegExp && this.config.labelMappingRegExp.length > 0)\n ){\n mapLabels(datavizInstance);\n }\n if (!!this.config.labels && Object.keys(this.config.labels).length > 0){\n setLabels(datavizInstance);\n }\n if (!!this.config.sortGroups) {\n sortGroups(datavizInstance);\n }\n if (!!this.config.sortIntervals) {\n sortIntervals(datavizInstance);\n }\n\n const loader = Dataviz.libraries.default.spinner;\n const library = this.config.library;\n const type = this.config.type;\n const containerElement = this.el();\n\n if (!containerElement || containerElement === undefined) {\n const msg = `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n console.error(msg);\n throw msg;\n return;\n }\n\n let returnValue = datavizInstance;\n\n if (datavizInstance.config.renderAsPromise) {\n returnValue = new Promise((resolve, reject) => {\n const customCallback = this.config.onrendered;\n datavizInstance.config.onrendered = () => {\n if (customCallback) {\n customCallback();\n }\n resolve(datavizInstance);\n }\n });\n }\n\n domReady(function(){\n const shouldRenderExecutionMetadata = datavizInstance.execution_metadata\n && datavizInstance.config.ui\n && datavizInstance.config.ui.executionMetadata;\n const shouldRenderDownloadBtn = datavizInstance.config.ui\n && datavizInstance.config.ui.buttons\n && datavizInstance.config.ui.buttons.download\n && datavizInstance.config.ui.buttons.download.type;\n if (datavizInstance.view._prepared && loader.destroy) {\n loader.destroy.apply(datavizInstance, arguments);\n }\n containerElement.innerHTML = '';\n\n if (Dataviz.libraries[library] === 'undefined'){\n // Error: Unregistered library\n const msg = `Incorrect library`;\n datavizInstance.message(msg);\n throw msg;\n return;\n }\n else {\n if (typeof Dataviz.libraries[library][type] === 'undefined') {\n const msg = `Incorrect chart type`;\n const mappedMsg = this.config.errorMapping[msg] || msg;\n datavizInstance.message(mappedMsg);\n throw msg;\n return;\n }\n else {\n buildDomWrapper(containerElement,\n datavizInstance.config\n );\n if (shouldRenderDownloadBtn) {\n renderDownloadButton({\n element: containerElement,\n data: datavizInstance.dataset.matrix,\n type: datavizInstance.config.ui.buttons.download.type,\n label: datavizInstance.config.ui.buttons.download.label,\n })\n }\n if (shouldRenderExecutionMetadata) {\n renderExecutionMetadata({\n element: containerElement,\n data: datavizInstance.execution_metadata,\n })\n }\n const { renderOnVisible } = datavizInstance.config;\n if(renderOnVisible){\n if(typeof IntersectionObserver !== 'undefined'){\n const chartVisibleCallback = (events, observer) => {\n events.forEach(el => {\n if(el.isIntersecting){\n if(!datavizInstance.view._rendered){\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n })\n }\n const observer = new IntersectionObserver(chartVisibleCallback);\n observer.observe(containerElement);\n return;\n }\n }\n if(datavizInstance.config.firstVisibilityState === 'hidden'){\n if(typeof document !== 'undefined') {\n let hidden, visibilityChange;\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n const handleVisibilityChange = () => {\n if(!document[hidden] && datavizInstance.view._artifacts.c3) {\n datavizInstance.view._artifacts.c3.load(datavizInstance.dataset.matrix);\n }\n }\n if(typeof document.addEventListener !== \"undefined\" ||\n hidden !== undefined){\n document.addEventListener(visibilityChange, handleVisibilityChange, {\n once: true\n });\n }\n }\n }\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n });\n\n return returnValue;\n};\n\nDataviz.prototype.sortGroups = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortGroups;\n this.config.sortGroups = (str ? String(str) : null);\n\n sortGroups(this, str);\n\n return this;\n};\n\nfunction sortGroups(datavizInstance){\n // Sort groups\n if (datavizInstance.config.sortGroups && datavizInstance.data().length > 1) {\n if (isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.sortColumns(datavizInstance.config.sortGroups, datavizInstance.dataset.getColumnSum);\n }\n else {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortGroups, datavizInstance.dataset.getRowSum);\n }\n }\n}\n\nDataviz.prototype.sortIntervals = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortIntervals;\n this.config.sortIntervals = (str ? String(str) : null);\n\n sortIntervals(this);\n\n return this;\n};\n\nfunction sortIntervals(datavizInstance){\n if (datavizInstance.config.sortIntervals) {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortIntervals);\n }\n}\n\nDataviz.prototype.stacked = function(bool){\n if (this.config.showDeprecationWarnings) {\n console.log('.stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.stacked;\n this.config.stacked = bool ? true : false;\n return this;\n};\n\nDataviz.prototype.theme = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.theme;\n this.config.theme = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.title = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.title;\n this.config.title = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.type = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.type;\n this.config.type = (str ? convertChartTypes(str) : null);\n return this;\n};\n\nDataviz.prototype.update = function(){\n const library = this.config.library;\n const type = this.config.type;\n const element = this.el();\n if (library && type && element && Dataviz.libraries[library][type].update) {\n Dataviz.libraries[library][type].update.apply(this, arguments);\n }\n return this;\n};\n\nDataviz.prototype.width = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.width() is deprecated - use CSS classes');\n }\n return this;\n};\n\nDataviz.prototype.exportImage = function({ quality = 0, bgcolor = '#fff' } = {}) {\n exportImage({\n node: this.config.containerElement,\n quality,\n bgcolor,\n });\n};\n\nDataviz.prototype.exportData = function(type='json') {\n exportData({\n data: this.dataset.matrix,\n type,\n });\n};\n\n// Deprecations\nDataviz.prototype.chartType = Dataviz.prototype.type;\nDataviz.prototype.error = Dataviz.prototype.message;\nDataviz.prototype.parseRawData = Dataviz.prototype.data;\nDataviz.prototype.parseRequest = function(){\n // this.emit('error', 'This method is no longer supported. Use .data() instead: https://github.com/keen/keen-dataviz.js#data');\n return this;\n};\nDataviz.prototype.initialize = function(){\n // this.emit('error', 'This method is no longer supported, and can be omitted as it has no impact');\n return this;\n};\n\nDataviz.version = pkg.version;\n\n// Private\n\nfunction buildDomWrapper(el, options) {\n let html = '';\n let chart100percentWide = '';\n let rangeChart = '';\n if (options.legend.position === 'top' || options.legend.position === 'bottom') {\n chart100percentWide = 'c3-chart-100-percent';\n }\n if (options.range) {\n rangeChart = 'keen-dataviz-range';\n }\n let container = `
`;\n const verticalAlignment = ['top', 'middle', 'bottom'];\n const horizontalAlignment = ['left', 'center', 'right'];\n let align = 'horizontal';\n let legendItemsAlign = 'center';\n if (horizontalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n if (options.legend.position === 'left' || options.legend.position === 'right') {\n align = 'vertical';\n if (verticalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n }\n if (options.legend && options.legend.show) {\n if (options.legend.position === 'top' || options.legend.position === 'left') {\n container = `
${container}`;\n } else {\n container = `${container}
`;\n }\n }\n if(!options.react){\n html += `
`;\n }\n if (options.title && options.showTitle) {\n html += `
${options.title}
`;\n }\n if (options.subtitle) {\n html += `
${options.subtitle}
`;\n }\n html += `
${container}
`;\n if (options.notes) {\n html += `
${options.notes}
`;\n }\n if(!options.react){\n html += '
';\n }\n\n el.innerHTML = html;\n}\n\nfunction convertChartTypes(str) {\n const map = {\n areachart: 'area',\n barchart: 'horizontal-bar',\n columnchart: 'bar',\n linechart: 'line',\n piechart: 'pie',\n };\n return map[str] || str;\n}\n\nfunction testDom(fn) {\n if (/in/.test(document.readyState)) {\n setTimeout(() => {\n testDom(fn);\n }, 9);\n } else {\n fn();\n }\n}\n\nfunction domReady(fn) {\n if (typeof document !== 'undefined' || typeof window === 'undefined') {\n fn();\n return;\n }\n // Firefox 3.5 shim\n if (document.readyState == null && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', function DOMContentLoaded() {\n document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);\n document.readyState = 'complete';\n }, false);\n document.readyState = 'loading';\n }\n testDom(fn);\n}\n\nexport { Dataset } from './dataset';\n\nexport default Dataviz;\n","import { each } from '../../utils/each';\n\nexport function deleteColumn(q) {\n const self = this;\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n each(self.matrix, function(row, i){\n self.matrix[i].splice(index, 1);\n });\n }\n return self;\n}\n\nexport function deleteRow(q) {\n var index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n this.matrix.splice(index, 1);\n }\n return this;\n}\n","import { each } from '../../utils/each';\n\nexport function filterColumns(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i) {\n clone.push([]);\n });\n\n each(self.matrix[0], function(col, i){\n var selectedColumn = self.selectColumn(i);\n if (i == 0 || fn.call(self, selectedColumn, i)) {\n each(selectedColumn, function(cell, ri){\n clone[ri].push(cell);\n });\n }\n });\n\n self.data(clone);\n return self;\n}\n\nexport function filterRows(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i){\n if (i == 0 || fn.call(self, row, i)) {\n clone.push(row);\n }\n });\n\n self.data(clone);\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function insertColumn(index, str, input) {\n const self = this;\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n\n self.matrix[0].splice(index, 0, label);\n each(self.matrix, function(row, i) {\n var cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].splice(index, 0, cell);\n }\n });\n\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat( createNullList(self.matrix.length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n self.matrix[0].splice(index, 0, label);\n each(input, function(value, i){\n self.matrix[i+1].splice(index, 0, value);\n });\n\n }\n return self;\n}\n\nexport function insertRow(index, str, input) {\n const self = this;\n const newRow = [];\n const label = (str !== undefined) ? str : null;\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i) {\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.splice(index, 0, newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n self.matrix.splice(index, 0, newRow.concat(input) );\n }\n\n return self;\n}\n","import { each } from '../../utils/each';\n\nexport function selectColumn(q) {\n const result = [];\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1 && typeof this.matrix[0][index] !== 'undefined') {\n each(this.matrix, function(row, i) {\n result.push(row[index]);\n });\n }\n return result;\n}\n\nexport function selectRow(q) {\n let result = [];\n const index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1 && typeof this.matrix[index] !== 'undefined') {\n result = this.matrix[index];\n }\n return result;\n}\n","import { each } from '../../utils/each';\nimport analysesUtilMethods from '../utils/analyses';\n\nexport function sortColumns(str, comp) {\n var self = this,\n head = this.matrix[0].slice(1), // minus index\n cols = [],\n clone = [],\n fn = comp || analysesUtilMethods.getColumnLabel;\n\n // Isolate each column (except the index)\n each(head, function(cell, i) {\n cols.push(self.selectColumn(i+1).slice(0));\n });\n cols.sort(function(a,b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n each(cols, function(col, i) {\n self\n .deleteColumn(i+1)\n .insertColumn(i+1, col[0], col.slice(1));\n });\n return self;\n}\n\nexport function sortRows(str, comp) {\n var self = this,\n head = this.matrix.slice(0,1),\n body = this.matrix.slice(1),\n fn = comp || analysesUtilMethods.getRowIndex;\n body.sort(function(a, b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n self.data(head.concat(body));\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function updateColumn(q, input) {\n var self = this,\n index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data(), function(row, i){\n var cell;\n if (i > 0) {\n cell = input.call(self, row[index], i, row);\n if (typeof cell !== 'undefined') {\n self.matrix[i][index] = cell;\n }\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.data().length - 1) {\n input = input.concat( createNullList(self.data().length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[i+1][index] = value;\n });\n\n }\n\n }\n return self;\n}\n\nexport function updateRow(q, input){\n var self = this,\n index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data()[index], function(value, i){\n var col = self.selectColumn(i),\n cell = input.call(self, value, i, col);\n if (typeof cell !== 'undefined') {\n self.matrix[index][i] = cell;\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[index][i+1] = value;\n });\n }\n\n }\n return self;\n}\n","let Dataset; /* injected */\n\nimport { each } from '../../utils/each';\nimport { flatten } from '../utils/flatten';\nimport { valueAtDeepKey } from '../utils/object';\n\nexport default function initialize(lib){\n Dataset = lib;\n return function(name){\n var options = Array.prototype.slice.call(arguments, 1);\n\n if (!parsers[name]) {\n throw 'Requested parser does not exist';\n }\n else {\n return parsers[name].apply(this, options);\n }\n };\n}\n\nfunction parseMetric(){\n return function(res){\n return new Dataset()\n .set(['Value', 'Result'], res.result)\n .type('metric');\n }\n}\n\n//var myParser = Dataset.parser('interval', 'timeframe.end');\nfunction parseInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n dataset.set(['Result', index], record.value);\n });\n return dataset;\n }\n}\n\nfunction parseGroupedMetric(){\n return function(res){\n var dataset = new Dataset()\n .type('grouped-metric');\n each(res.result, function(record, i){\n var label;\n each(record, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set(['Result', String(record[label])], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('grouped-interval', 'timeframe.end');\nfunction parseGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('grouped-interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n if (record.value.length) {\n each(record.value, function(group, j){\n var label;\n each(group, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set([ String(group[label]), index ], group.result);\n });\n }\n else {\n dataset.appendRow(index);\n }\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-metric', ['first', 'second']);\nfunction parseDoubleGroupedMetric(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-metric');\n each(res.result, function(record, i){\n var rowLabel = record[options[0][0]] + ' ' + record[options[0][1]];\n dataset.set([ 'Result', rowLabel ], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-interval', ['first', 'second'], 'timeframe.end');\nfunction parseDoubleGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-interval');\n each(res.result, function(record, i){\n var index = options[1] && options[1] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n each(record['value'], function(value, j){\n var label = value[options[0][0]] + ' ' + value[options[0][1]];\n dataset.set([ label, index ], value.result);\n });\n });\n return dataset;\n }\n}\n\nfunction parseFunnel(){\n return function(res){\n var result, steps, dataset;\n if (typeof res.steps !== 'undefined'\n && typeof res.result !== 'undefined'\n && res.result instanceof Array) {\n // Ad-hoc funnel response\n result = res.result;\n steps = res.steps;\n }\n else if (typeof res.result.steps !== 'undefined'\n && typeof res.result.result !== 'undefined'\n && res.result.result instanceof Array) {\n // Saved funnel response\n result = res.result.result;\n steps = res.result.steps;\n }\n dataset = new Dataset().type('funnel');\n dataset.appendColumn('Step Value');\n each(result, function(value, i){\n if (typeof steps !== 'undefined' && steps[i]) {\n dataset.appendRow(String(steps[i].event_collection), [value]);\n }\n });\n return dataset;\n }\n}\n\nfunction parseList(){\n return function(res){\n var dataset = new Dataset()\n .type('list');\n each(res.result, function(value, i){\n dataset.set( [ 'Result', String(i+1) ], value );\n });\n return dataset;\n }\n}\n\nfunction parseExtraction(){\n let config = this.config;\n return function(res){\n const datasetExtraction = new Dataset()\n .type('extraction');\n\n // get keys of the Object, static schema\n let names = Object.keys(flatten(res.result[0]));\n\n const tableConfig = config && config.table;\n if (tableConfig && tableConfig.schema === 'dynamic') {\n const results = res.result;\n const keys = {};\n results.forEach(resultItem => {\n const resultKeys = Object.keys(flatten(resultItem));\n if (resultKeys && resultKeys.length) {\n resultKeys.forEach(keyName => {\n if (!keys[keyName]) {\n keys[keyName] = true;\n }\n });\n }\n });\n names = Object.keys(keys);\n }\n \n let nameI = 0;\n names.forEach(value => {\n datasetExtraction.set([ value, '0' ], value);\n nameI++;\n });\n \n if (Dataset) {\n if (config\n && config.table\n && config.table.columns) {\n names = config.table.columns;\n }\n }\n\n for (let i=0; i 1) {\n parser = 'double-grouped-metric';\n parserArgs.push(query.group_by);\n }\n else {\n parser = 'grouped-metric';\n }\n }\n else if (query.interval && !query.group_by) {\n parser = 'interval';\n parserArgs.push(indexBy);\n }\n else if (query.group_by && query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-interval';\n parserArgs.push(query.group_by);\n parserArgs.push(indexBy);\n }\n else {\n parser = 'grouped-interval';\n parserArgs.push(indexBy);\n }\n }\n }\n\n if (!parser) {\n\n // Metric\n // -------------------------------\n if (typeof response.result === 'number'){\n parser = 'metric';\n }\n\n // Everything else\n // -------------------------------\n if (response.result instanceof Array && response.result.length > 0){\n\n // Interval w/ single value\n // -------------------------------\n if (response.result[0].timeframe && (typeof response.result[0].value == 'number' || response.result[0].value == null)) {\n parser = 'interval';\n parserArgs.push(indexBy)\n }\n\n // Static GroupBy\n // -------------------------------\n if (typeof response.result[0].result == 'number'){\n parser = 'grouped-metric';\n }\n\n // x, y, value for heatmap\n if (this.config.type === 'heatmap' && Object.keys(response.result[0] === 3 && typeof response.result[0].result === 'number')) {\n parser = 'heatmap-axis';\n }\n\n // Grouped Interval\n // -------------------------------\n if (response.result[0].value instanceof Array){\n parser = 'grouped-interval';\n parserArgs.push(indexBy)\n }\n\n // Funnel\n // -------------------------------\n if (typeof response.result[0] === 'number'\n && typeof response.steps !== 'undefined'){\n parser = 'funnel';\n // Move steps into query object\n query.steps = response.steps;\n }\n\n // Select Unique\n // -------------------------------\n if ((typeof response.result[0] === 'string' || typeof response.result[0] == 'number') && typeof response.steps === 'undefined'){\n parser = 'list';\n }\n\n // Extraction\n // -------------------------------\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n // Set title from saved query body, or create a default title\n if (this.config.title === undefined) {\n if (meta.display_name) {\n title = meta.display_name;\n }\n else {\n title = getDefaultTitle(query);\n }\n this.config.title = title;\n }\n\n // Set type from saved query body, or use a default type\n if (!this.config.type) {\n if (meta.visualization && meta.visualization.chart_type) {\n type = meta.visualization.chart_type;\n }\n else {\n type = getDefaultType(parser);\n }\n this.config.type = type;\n }\n\n // Define the appropriate parser\n selectedParser = Dataset.parser.apply(this, [parser].concat(parserArgs));\n\n // Parse the response with augmented query body\n dataset = selectedParser(extend(response, { 'query': query }));\n\n // Set true dates for 'interval' data\n if (parser.indexOf('interval') > -1) {\n dataset.updateColumn(0, function(value, i){\n return new Date(value);\n });\n }\n\n dataset.updateRow(0, function(value, i){\n return stripHtmlTags(value);\n });\n\n this.dataset = dataset;\n\n if (response.execution_metadata) {\n this.execution_metadata = response.execution_metadata;\n }\n\n return this;\n}\n\nfunction getDefaultTitle(query) {\n var analysis = query.analysis_type ? query.analysis_type.replace('_', ' ') : '',\n title;\n\n title = analysis.replace( /\\b./g, function(a){\n return a.toUpperCase();\n });\n\n if (query.event_collection) {\n title += ' - ' + query.event_collection;\n }\n return title;\n}\n\nfunction getDefaultType(parser) {\n let type;\n switch (parser) {\n case 'metric':\n type = 'metric';\n break;\n case 'interval':\n type = 'area';\n break;\n case 'grouped-metric':\n case 'double-grouped-metric':\n type = 'bar';\n break;\n case 'grouped-interval':\n case 'double-grouped-interval':\n type = 'line';\n break;\n case 'funnel':\n type = 'horizontal-bar';\n break;\n case 'list':\n case 'extraction':\n default:\n type = 'table';\n }\n return type;\n}\n","import c3 from 'c3';\n\nimport { each } from '../utils/each';\nimport { extend } from '../utils/extend';\nimport { extendDeep } from '../utils/extend-deep';\nimport isDateString from '../utils/assert-date-string';\nimport c3DefaultDateFormat from './c3/extensions/default-date-format';\nimport c3PaginatingLegend from './c3/extensions/paginating-legend';\nimport c3TooltipContents from './c3/extensions/tooltip-contents';\n\nimport calculateRange from '../dataset/utils/calculate-range';\nimport { calculateSumForPercents, calculatePercents } from '../dataset/utils/calculate-percents';\n\nimport message from './default/message';\nimport metric from './default/metric';\nimport table from './default/table';\nimport spinner from './default/spinner';\nimport Funnel from './default/funnel';\nimport Funnel3d from './default/funnel-3d';\nimport HorizontalFunnel from './default/horizontal-funnel';\nimport HorizontalFunnel3d from './default/horizontal-funnel-3d';\nimport MetricCombo from './default/metric-combo';\nimport Heatmap from './default/heatmap';\nimport Choropleth from './default/choropleth';\n\nexport default function(lib) {\n let timer;\n bindResizeListener(function(){\n if (timer) {\n clearTimeout(timer);\n }\n const delay = (lib.visuals.length > 12) ? 1000 : 250;\n timer = setTimeout(function(){\n each(lib.visuals, function(chart){\n const c3Chart = chart.view._artifacts.c3;\n if (c3Chart) {\n const parentWidth = c3Chart.element.parentNode.parentNode.offsetWidth;\n let width = parentWidth;\n if (chart.config.legend && chart.config.legend.show && (chart.config.legend.position === 'left' || chart.config.legend.position === 'right')) {\n const nextSiblingWidth = c3Chart.element.nextSibling ? c3Chart.element.nextSibling.offsetWidth : 0;\n const prevSiblingWidth = c3Chart.element.previousSibling ? c3Chart.element.previousSibling.offsetWidth : 0;\n width = parentWidth - prevSiblingWidth - nextSiblingWidth;\n }\n\n c3Chart.resize({\n width,\n });\n\n }\n });\n }, delay);\n });\n\n return defineC3();\n};\n\nfunction defineC3(){\n const types = {\n message,\n metric,\n table,\n spinner,\n 'funnel': new Funnel,\n 'funnel-3d': new Funnel3d,\n 'horizontal-funnel': new HorizontalFunnel,\n 'horizontal-funnel-3d': new HorizontalFunnel3d,\n 'metric-combo': new MetricCombo,\n 'heatmap': new Heatmap,\n 'choropleth': new Choropleth\n };\n\n const c3Types = [\n // Standard types\n 'area',\n 'area-spline',\n 'area-step',\n 'bar',\n 'donut',\n 'gauge',\n 'line',\n 'pie',\n 'step',\n 'spline',\n\n // Horizontal variant types\n 'horizontal-area',\n 'horizontal-area-spline',\n 'horizontal-area-step',\n 'horizontal-bar',\n 'horizontal-line',\n 'horizontal-step',\n 'horizontal-spline',\n ];\n\n const getPaddings = (element, paddingName) => {\n return parseInt(window.getComputedStyle(element)[`padding${paddingName}`].replace('px', ''));\n }\n\n function getDefaultOptions(){\n const ENFORCED_OPTIONS = {\n bindto: this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'),\n color: {\n pattern: this.config.colors\n },\n data: {\n colors: { ...this.config.colorMapping },\n columns: [],\n type: this.config.type.replace('horizontal-', '')\n },\n };\n\n const renderingElement = this.el();\n\n let height = renderingElement.offsetHeight;\n\n height -= (getPaddings(renderingElement, 'Top') + getPaddings(renderingElement, 'Bottom'));\n\n if (this.config.showTitle) {\n const titleElement = this.el().querySelector('.keen-dataviz-title');\n if (titleElement) {\n height -= titleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.subtitle) {\n const subtitleElement = this.el().querySelector('.keen-dataviz-subtitle');\n if (subtitleElement) {\n height -= subtitleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.notes) {\n const notesElement = this.el().querySelector('.keen-dataviz-notes');\n if (notesElement) {\n height -= notesElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n let width = this.el().querySelector('.c3-chart').offsetWidth\n - (getPaddings(renderingElement, 'Left') + getPaddings(renderingElement, 'Right'));\n if (width < 0) {\n width = 0;\n }\n\n const DEFAULT_OPTIONS = {\n size: {\n width,\n height:\n height > 0 ?\n height\n : undefined,\n }\n };\n\n const extendedConfig = extendDeep({}, DEFAULT_OPTIONS, this.config, ENFORCED_OPTIONS);\n\n return extendedConfig;\n }\n\n each(c3Types, function(type, index) {\n types[type] = {\n render: function(){\n const options = getDefaultOptions.call(this);\n\n // 100% for charts\n const sumArray = calculateSumForPercents(this.dataset.matrix);\n let oldMatrix = [];\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' || type === 'area-step' || type === 'area-spline')) {\n oldMatrix = this.dataset.matrix;\n this.dataset.matrix = [this.dataset.matrix[0], ...calculatePercents(this.dataset.matrix, sumArray)];\n if(!options.sparkline){\n options.axis = {\n y: {\n padding: {\n top: 0,\n },\n tick: {\n format: d => `${d}%`,\n },\n },\n };\n }\n }\n\n // range charts\n if (options.range) {\n this.dataset.matrix = [this.dataset.matrix[0], ...calculateRange(this.dataset.matrix)];\n }\n\n if (!!this.config.clearOnRender && options.data.columns.length && this.dataset && this.dataset.meta) {\n const datasetMeta = this.dataset.meta || {};\n const { type = '' } = datasetMeta;\n let spliceFrom = 0;\n const intervalTypes = ['interval'];\n if (intervalTypes.includes(type)) {\n spliceFrom = 1;\n }\n options.data.columns.splice(spliceFrom);\n }\n\n if (this.data()[0].length === 1 || this.data().length === 1) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n let removeLegend = false;\n\n if (type === 'gauge') {\n // Accommodate a neat bug:\n options.legend.show = false;\n options.data.columns = [[\n this.config.title || this.data()[1][0],\n this.data()[1][1]\n ]];\n removeLegend = true;\n }\n else if (type === 'pie' || type === 'donut') {\n options.data.columns = this.data().slice(1);\n }\n else {\n\n // Apply formatting for horizontal variant types\n if (type.indexOf('horizontal-') > -1) {\n options.axis.rotated = type.indexOf('horizontal-') > -1;\n }\n\n if (isDateString(this.data()[1][0])) {\n // TIMESERIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'timeseries';\n options.axis.x.tick = options.axis.x.tick || {\n format: this.config.dateFormat || c3DefaultDateFormat(this.data()[1][0], this.data()[2] ? this.data()[2][0] : this.data()[1][0]),\n culling: { max: 5 }\n };\n\n options.data.columns[0] = [];\n each(this.dataset.selectColumn(0), function(cell, i){\n if (i > 0) {\n cell = new Date(cell);\n }\n options.data.columns[0][i] = cell;\n });\n options.data.columns[0][0] = 'x';\n options.data.x = 'x';\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n else {\n // CATEGORIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'category';\n options.axis.x.categories = this.dataset.selectColumn(0).slice(1);\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n\n if (this.data()[0].length === 2) {\n options.legend.show = false;\n removeLegend = true;\n }\n\n each(this.data()[0], function(cell, i){\n if (i > 0) {\n options.data.columns.push(this.dataset.selectColumn(i));\n }\n }.bind(this));\n }\n\n if (removeLegend){\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n legendElement.remove();\n options.size.width = this.el().querySelector('.c3-chart').offsetWidth;\n }\n options.legend.show = false;\n }\n\n const chartTypesWithPartialIntervalIndicator = ['area', 'area-spline', 'area-step', 'line', 'spline', 'step'];\n\n if (options.partialIntervalIndicator\n && options.partialIntervalIndicator.show\n && chartTypesWithPartialIntervalIndicator.indexOf(options.type) > -1\n ) {\n const results = options.data.columns && options.data.columns[0];\n if (results && results.length > 1) {\n const partialResultsRegion = {\n axis: 'x',\n start: new Date(results[results.length - 2]),\n class: options.partialIntervalIndicator.className\n };\n options.regions = [...(options.regions || []), partialResultsRegion];\n }\n }\n \n if (\n !(options.tooltip && options.tooltip.show === false)\n &&\n (options.legend.show === true ||\n (options.legend\n && options.legend.tooltip\n && options.legend.tooltip.show)\n )) {\n \n // Apply custom tooltip\n options.tooltip = {\n contents: c3TooltipContents,\n format: {\n title: this.config.tooltip.format.title,\n value: (value, ratio, id, index) => {\n let valueFormatted = c3CustomTooltipFiltering.call(this, value, ratio, id, index);\n if (this.config.tooltip && this.config.tooltip.format && this.config.tooltip.format.value)\n {\n valueFormatted = this.config.tooltip.format.value.call(this, valueFormatted, ratio, id, index);\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = parseFloat(((valueFormatted / 100) * sumArray[index]).toFixed(2));\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = ((valueFormatted / 100) * sumArray[index]).toFixed(2);\n return parseFloat(valueFormatted);\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n }\n };\n }\n\n if (options.legend.show === true) {\n const c3options = { ...options };\n // Apply custom color handling\n c3options.data.color = c3CustomDataMapping.bind(this);\n\n c3options.legend.hide = true; // hide default c3 legend\n\n // Render artifacts\n this.view._artifacts['c3'] = c3.generate(c3options);\n\n c3PaginatingLegend.call(this, {...options, onLegendRendered: () => {\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n if (\n options.legend.position === 'top' ||\n options.legend.position === 'bottom'\n ) {\n c3options.size.height -= legendElement.offsetHeight;\n this.view._artifacts['c3'].resize({ height: c3options.size.height });\n } else {\n if (c3options.size.width === 0) {\n c3options.size.width = this.el().offsetWidth\n - getPaddings(this.el(), 'Left')\n - getPaddings(this.el(), 'Right');\n }\n c3options.size.width -= legendElement.offsetWidth;\n this.view._artifacts['c3'].resize({ width: c3options.size.width });\n }\n }\n },\n onPaginated: () => {\n this.view._artifacts['c3'].flush();\n }\n });\n }\n else {\n this.view._artifacts['c3'] = c3.generate(options);\n }\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts['c3']) {\n this.view._artifacts['c3'].destroy();\n this.view._artifacts['c3'] = null;\n }\n }\n };\n });\n\n return types;\n}\n\nfunction c3CustomDataMapping(color, d) {\n const type = this.config.type;\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if ((d.id && scope.indexOf(d.id) > -1)\n || (d && !d.id && scope.indexOf(d) > -1)) {\n return color;\n }\n else {\n if (type === 'donut' || type === 'pie') {\n return 'rgba(0,0,0,.1)';\n }\n else {\n return 'rgba(0,0,0,.07)';\n }\n }\n }\n else {\n return color;\n }\n}\n\nfunction c3CustomTooltipFiltering(value, ratio, id, index) {\n const type = this.config.type;\n\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if (scope.indexOf(id) > -1) {\n return value;\n }\n }\n else {\n return value;\n }\n}\n\nfunction bindResizeListener(fn){\n if (typeof window === 'undefined') return;\n window.onresize = window.resize = function(){};\n if (window.addEventListener) {\n window.addEventListener('resize', fn, true);\n }\n else if (window.attachEvent) {\n window.attachEvent('onresize', fn);\n }\n}\n","export default function (startDate, endDate) {\n const timeDiff = Math.abs(new Date(startDate).getTime() - new Date(endDate).getTime());\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'June',\n 'July',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n // Yearly (31536000000) + Monthly\n if (timeDiff >= 2419200000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getFullYear();\n };\n }\n // Daily\n else if (timeDiff >= 86400000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getDate();\n };\n }\n // Hourly\n else if (timeDiff >= 3600000) {\n return '%I:%M %p';\n }\n // Minutely\n else {\n return '%I:%M:%S %p';\n }\n}\n","import * as d3 from 'd3';\n\nimport isDateString from '../../../utils/assert-date-string';\n\nexport default function (options) {\n const cols = options.data.columns;\n const datavizInstance = this;\n const chart = this.view._artifacts.c3;\n let columns = [];\n const domNode = this.el().querySelector('.' + datavizInstance.config.theme + '-rendering');\n const legendConfig = datavizInstance.config.legend;\n\n const pagination = this.view._artifacts.pagination = {\n ...{\n hidden: [],\n labels: [],\n offset: 0,\n limit: Math.round((domNode.offsetHeight - 78) / 20),\n total: 0\n },\n ...legendConfig.pagination\n };\n\n if (options.legend.sort) {\n columns = options.legend.sort(cols);\n\n // update column order in the data, so tooltip will be the same order\n const columnsSorted = [];\n const dataColumnsSorted = [];\n if (cols[0][0] === 'x') {\n dataColumnsSorted.push(cols[0]);\n }\n columns.forEach(column => {\n let columnData = options.data.columns.find(item => item[0] === column);\n dataColumnsSorted.push(columnData);\n });\n options.data.columns = dataColumnsSorted;\n } else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i][0] !== 'x' && !isDateString(cols[i][1])) {\n columns.push(cols[i][0]);\n }\n }\n }\n\n const legendElement = this.el().querySelector('.keen-c3-legend');\n\n let align = 'vertical';\n if (legendConfig.position === 'top' || legendConfig.position === 'bottom') {\n align = 'horizontal';\n }\n\n const paginateHorizontalLeftElement = document.createElement('div');\n paginateHorizontalLeftElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-left');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalLeftElement);\n }\n\n const legendItemsElement = document.createElement('div');\n legendItemsElement.setAttribute('class', `keen-c3-legend-items keen-c3-legend-${align}-items`);\n legendElement.append(legendItemsElement);\n\n const paginateVerticalElement = document.createElement('div');\n paginateVerticalElement.setAttribute('class', 'keen-c3-legend-pagination keen-c3-legend-pagination-icons');\n if (align === 'vertical') {\n legendElement.append(paginateVerticalElement);\n }\n\n const paginateHorizontalRightElement = document.createElement('div');\n paginateHorizontalRightElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalRightElement);\n }\n\n paginateData();\n\n function paginateData(){\n pagination.labels = columns.slice(pagination.offset, pagination.offset + pagination.limit);\n pagination.total = columns.length;\n renderLegendComponent.call(datavizInstance, pagination.labels);\n if (pagination.total > pagination.limit) {\n renderPaginationComponent.call(datavizInstance);\n }\n if (options.onPaginated){\n options.onPaginated();\n }\n }\n\n function renderLegendComponent(){\n legendItemsElement.innerHTML = '';\n\n pagination.labels.forEach(label => {\n const labelShortened = legendConfig.label.textMaxLength ? label.slice(0, legendConfig.label.textMaxLength - 1) : label;\n const legendItem = document.createElement(\"div\");\n legendItem.innerHTML = `${labelShortened}`;\n legendItem.chartPartId = label;\n legendItem.setAttribute('class', 'legend-item');\n legendItemsElement.append(legendItem);\n\n const legendItemColorSample = document.createElement(\"span\");\n legendItemColorSample.setAttribute('class', 'legend-item-color-sample');\n legendItemColorSample.style.backgroundColor = chart.color(legendItem.chartPartId);\n legendItem.prepend(legendItemColorSample);\n\n const tooltipElement = document.createElement(\"div\");\n legendItem.addEventListener('mouseover', (event) => {\n chart.focus(legendItem.chartPartId);\n if (legendConfig.tooltip.show && legendItem.chartPartId.length > legendConfig.label.textMaxLength) {\n tooltipElement.setAttribute('class', `keen-c3-legend-label-overlay keen-c3-legend-position-${legendConfig.position}`);\n tooltipElement.innerHTML =\n `${\n options.legend.tooltip.pointer ? `
` : ``\n }${legendItem.chartPartId}`;\n legendItem.append(tooltipElement);\n }\n });\n legendItem.addEventListener('mouseout', (event) => {\n chart.revert();\n tooltipElement.remove();\n });\n legendItem.addEventListener('click', (event) => {\n let opacity = 1;\n const isHidden = pagination.hidden.indexOf(legendItem.chartPartId);\n if (isHidden < 0) {\n pagination.hidden.push(legendItem.chartPartId);\n opacity = .35;\n }\n else {\n pagination.hidden.splice(isHidden, 1);\n opacity = 1;\n }\n legendItem.style.opacity = opacity;\n chart.toggle(legendItem.chartPartId);\n });\n });\n\n if (options.onLegendRendered){\n options.onLegendRendered();\n options.onLegendRendered = null;\n }\n\n }\n\n function renderPaginationComponent(){\n paginateVerticalElement.innerHTML = '';\n paginateHorizontalLeftElement.innerHTML = '';\n paginateHorizontalRightElement.innerHTML = '';\n\n const arrowUp = document.createElement('i');\n const arrowDown = document.createElement('i');\n\n const paginate = (direction) => {\n if (direction === 'forward') {\n const diff = pagination.offset + pagination.limit;\n if (diff < pagination.total) {\n pagination.offset = diff;\n return;\n }\n pagination.offset = 0;\n return;\n }\n\n const diff = pagination.offset - pagination.limit;\n if (diff >= 0) {\n pagination.offset = diff;\n return;\n }\n\n pagination.offset = Math.floor(pagination.total/pagination.limit) * pagination.limit;\n };\n\n arrowDown.addEventListener('click', () => {\n paginate('forward');\n paginateData();\n clearSelectedText();\n });\n\n arrowUp.addEventListener('click', () => {\n paginate('backward');\n paginateData();\n clearSelectedText();\n });\n\n if (legendConfig.position === 'left' || legendConfig.position === 'right') {\n arrowUp.setAttribute('class', 'up');\n arrowDown.setAttribute('class', 'down');\n paginateVerticalElement.append(arrowDown);\n paginateVerticalElement.append(arrowUp);\n } else {\n // bottom top\n arrowUp.setAttribute('class', 'left');\n arrowDown.setAttribute('class', 'right');\n paginateHorizontalLeftElement.append(arrowUp);\n paginateHorizontalRightElement.append(arrowDown);\n }\n\n }\n\n function clearSelectedText() {\n let selection;\n if (document.selection && document.selection.empty) {\n selection = document.selection;\n selection.empty();\n }\n else if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n }\n }\n}\n","import { escapeHtml } from '../../../utils/escape-html';\n\nexport default function (d, defaultTitleFormat, defaultValueFormat, color) {\n let text;\n let title;\n // Set config options or defaults\n const nameFormat = this.config.tooltip_format_name || function (name) { return name; };\n const titleFormat = this.config.tooltip_format_title || defaultTitleFormat;\n const valueFormat = this.config.tooltip_format_value || defaultValueFormat;\n\n // Reverse list to match legend\n for (let i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n if (!text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n let name = nameFormat(d[i].name);\n let value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n let bgcolor = this.levelColor ? this.levelColor(d[i].value) : color(d[i].id);\n if (value && !isNaN(value)) {\n text += \"\";\n if (name.indexOf('__tooltip_ignore_name_field__') === -1) {\n text += \"\";\n }\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + escapeHtml(title) + \"
\" + escapeHtml(name) + \"\" + escapeHtml(value) + \"
\";\n}\n","export default function calculateRange(matrix) {\n const newValues = matrix.slice(1).map(d => d.map((e, i) => {\n if (typeof e === 'number') {\n if (i === 1) {\n return e - d[i + 1];\n }\n }\n return e;\n }));\n return newValues;\n}","export function calculateSumForPercents(matrix) {\n const sumArray = [];\n matrix.slice(1).forEach((d, i) => {\n d.forEach((e) => {\n if (typeof e === 'number') {\n if (!sumArray[i]) {\n sumArray[i] = e;\n return sumArray[i];\n }\n sumArray[i] += e;\n }\n return sumArray[i];\n });\n });\n return sumArray;\n}\n\nexport function calculatePercents(matrix, sumArray) {\n const newValues = matrix.slice(1).map((d, i) => d.map((e) => {\n if (typeof e === 'number') {\n return (e / sumArray[i]) * 100;\n }\n return e;\n }));\n return newValues;\n}\n","import { escapeHtml } from '../../utils/escape-html';\nimport renderDownloadButton from '../../utils/render-download-btn';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default {\n render: function(text){\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n const msg = document.createElement('span');\n\n const titleContainer = document.createElement('div');\n const subtitleContainer = document.createElement('div');\n const notesContainer = document.createElement('div');\n\n outer.className = this.config.theme + ' keen-dataviz-box';\n inner.className = this.config.theme + '-message';\n\n // Create title and notes for message\n titleContainer.className = this.config.theme + '-title';\n titleContainer.innerHTML = escapeHtml(this.config.title || '');\n subtitleContainer.className = this.config.theme + '-subtitle';\n subtitleContainer.innerHTML = escapeHtml(this.config.subtitle || '');\n notesContainer.className = this.config.theme + '-notes';\n notesContainer.innerHTML = escapeHtml(this.config.notes || '');\n\n msg.innerHTML = escapeHtml(text) || '';\n inner.appendChild(msg);\n\n if (this.config.title && this.config.showTitle) {\n outer.appendChild(titleContainer);\n }\n\n if (this.config.subtitle) {\n outer.appendChild(subtitleContainer);\n }\n\n outer.appendChild(inner);\n\n if (this.config.notes) {\n outer.appendChild(notesContainer);\n }\n\n if (this.config.ui\n && this.config.ui.buttons\n && this.config.ui.buttons.download\n && this.config.ui.buttons.download.type) {\n renderDownloadButton({\n element: this.el(),\n data: escapeHtml(text) || '',\n type: this.config.ui.buttons.download.type,\n label: this.config.ui.buttons.download.label,\n })\n }\n\n if (this.config.utils\n && this.config.utils.clickToCopyToClipboard) {\n titleContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n notesContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n msg.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n\n this.el().innerHTML = '';\n this.el().appendChild(outer);\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import exportImage from './export-svg';\nimport exportData from './export-data';\n\nexport default function downloadResults(obj) {\n const { event, type, data } = obj;\n event.preventDefault();\n const supportedFormats = ['json', 'csv', 'jpg', 'jpeg', 'png'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = '';\n let content = '';\n\n if (format === 'png') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n });\n return;\n }\n\n if (format === 'jpg' || format === 'jpeg') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n quality: 1,\n bgcolor: '#fff',\n });\n return;\n }\n\n if (format === 'json') {\n exportData({ type: format, data });\n }\n\n if (format === 'csv') {\n exportData({ type: format, data });\n }\n}\n","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { prettyNumber } from '../../utils/pretty-number';\nimport { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nfunction formatExtractionData(res, prop) {\n const { query, result } = res;\n const formattedResult = [];\n if (query.analysis_type !== 'extraction') throw new Error('Analysis type is not an extraction!');\n if (Array.isArray(result)) {\n result.forEach((item) => {\n const itemProp = prop.split('.').reduce((acc, val) => (acc && acc[val]) || null, item);\n const obj = {\n query,\n result: itemProp,\n };\n formattedResult.push(obj);\n });\n }\n return formattedResult;\n}\n\nexport default {\n render: function(){\n let color = this.config.colors[0];\n const theme = this.config.theme;\n const title = this.config.title;\n const subtitle = this.config.subtitle;\n const opts = this.config;\n let value = '-';\n let prevValue= '';\n let html = '';\n let prefix = '';\n let suffix = '';\n let formattedNum;\n let flexDifferenceStyle = '';\n let resultDifference = '';\n let differenceStyle = '';\n let smallerValue = '';\n const { results, previousResults, isExtraction, comparedProp } = this.config;\n if(results && previousResults){\n flexDifferenceStyle = previousResults ? ' metric-comparison' : '';\n smallerValue = previousResults && title ? '-smaller' : '';\n resultDifference = results.result - previousResults.result;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n if (this.data() && this.data()[1] && this.data()[1][1] && typeof this.data()[1][1] === 'number') {\n value = this.data()[1][1];\n }\n\n if (isExtraction && comparedProp) {\n const formattedResult = formatExtractionData(results, comparedProp);\n \n value = formattedResult[0].result;\n prevValue = formattedResult[1].result;\n\n flexDifferenceStyle = prevValue ? ' metric-comparison' : '';\n smallerValue = prevValue && title ? '-smaller' : '';\n resultDifference = value - prevValue;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n formattedNum = value;\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(value)) ) {\n formattedNum = prettyNumber(value);\n if(results && previousResults){\n resultDifference = prettyNumber(resultDifference);\n }\n }\n\n if (opts['prefix']) {\n prefix = '' + opts['prefix'] + '';\n }\n if (opts['suffix']) {\n suffix = '' + opts['suffix'] + '';\n }\n html += '
';\n html += '
';\n if (results && previousResults) {\n html += '
' + escapeHtml(resultDifference) + '
';\n }\n if (isExtraction && comparedProp) {\n if (value && prevValue) {\n html += '
' + escapeHtml(resultDifference) + '
';\n html += '' + prevValue + '';\n } else {\n html += '

No data to display

';\n }\n }\n html += '
' + prefix + escapeHtml(formattedNum) + suffix + '
';\n if (title) {\n html += '
' + escapeHtml(title) + '
';\n }\n if (subtitle) {\n html += '
' + escapeHtml(subtitle) + '
';\n }\n html += '
';\n html += '
';\n\n this.el().innerHTML = html;\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const resultClassName = `.${theme}-metric-value${smallerValue}`;\n document.querySelector(resultClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n\n if (results && previousResults) {\n const previousResultsClassName = `.${theme}-metric${differenceStyle}`;\n document.querySelector(previousResultsClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n }\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nlet currentPage;\nfunction _generateTableRows(datavizInstance, dataset) {\n let html = '';\n const defaultConfig = {\n page: 1,\n limit: 0,\n arrows: true\n };\n let customConfig = {};\n if (datavizInstance.config.table && datavizInstance.config.table.pagination) {\n customConfig = datavizInstance.config.table.pagination;\n }\n const config = {\n ...defaultConfig,\n ...customConfig\n };\n\n if (!currentPage){\n currentPage = config.page;\n }\n\n let datasetPaginated;\n let pages = 0;\n if (config.limit === 0) {\n datasetPaginated = dataset.slice(1); // remove header\n } else {\n const start = config.limit * (currentPage - 1) + 1;\n const end = start + config.limit;\n datasetPaginated = dataset.slice(start, end);\n pages = Math.ceil((dataset.length - 1) / config.limit);\n }\n\n let columnsArray = datavizInstance.config.table.columns ?\n datavizInstance.config.table.columns :\n datavizInstance.dataset.matrix[0];\n\n const colNamesToMap = {};\n const {\n mapValues,\n mapDates,\n } = datavizInstance.config.table;\n for (let key in mapValues){\n colNamesToMap[columnsArray.indexOf(key)] = key;\n }\n\n for (let row of datasetPaginated) {\n html += '';\n for (let [index, rowColValue] of row.entries()) {\n if (mapDates && rowColValue instanceof Date) {\n rowColValue = mapDates(rowColValue);\n }\n\n let rowColValueEscaped = escapeHtml(rowColValue);\n if(colNamesToMap[index]){\n html += `${mapValues[colNamesToMap[index]](rowColValueEscaped)}`;\n continue;\n }\n html += `${rowColValueEscaped}`\n }\n html += '';\n }\n\n if (pages > 1){\n html += ``;\n let pageNumber = 1;\n const prevPage = (currentPage === 1) ? 1 : (currentPage - 1);\n const nextPage = (currentPage === pages) ? pages : (currentPage + 1);\n if (config.arrows){\n html += `«`;\n }\n while (pageNumber <= pages){\n html += `${pageNumber}`;\n pageNumber++;\n }\n if (config.arrows){\n html += `»`;\n }\n html += '';\n }\n\n return html;\n}\n\nfunction _generateTableHeader(datavizInstance, dataset) {\n let html = '';\n let fieldNumber = -1;\n const tableConfig = datavizInstance.config.table;\n const columnNames =\n (tableConfig && tableConfig.columns)\n || dataset[0];\n for (let colName of columnNames) {\n let colNameEscaped = escapeHtml(colName);\n fieldNumber +=1;\n html += `${colNameEscaped}`;\n }\n return html;\n}\n\n\n const render = function() {\n const dataset = this.dataset.matrix;\n\n const el = this.el();\n const theme = this.config.theme;\n const datavizInstance = this;\n\n let html = '';\n\n const isEmpty = dataset.length === 1 && dataset[0].length === 0;\n if (isEmpty) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n // Open wrapper\n html += `
`;\n\n // Static, scrollable table\n html += ``;\n html += '';\n html += '';\n html += _generateTableHeader(datavizInstance, dataset);\n html += '';\n html += '';\n // Table data\n html += '';\n html += _generateTableRows(datavizInstance, dataset);\n html += '';\n html += '
';\n/* */\n // Close wrapper\n html += '
';\n\n // Inject HTML string\n el.querySelector(`.${theme}-rendering`).innerHTML = html;\n\n el\n .querySelectorAll(`.${theme}-rendering th`)\n .forEach((item) => {\n item.addEventListener('click', (event) => {\n let sortOrder = event.target.getAttribute('order') || 'asc';\n let fieldNumber = event.target.getAttribute('fieldNumber');\n let checker = function (a, b) {\n let sortOrderNumber = (sortOrder === 'asc') ? 1 : -1;\n\n if (typeof a[fieldNumber] === 'string') {\n let nameA = a[fieldNumber].toUpperCase(); // ignore upper and lowercase\n let nameB = b[fieldNumber].toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1 * sortOrderNumber;\n }\n if (nameA > nameB) {\n return 1* sortOrderNumber;\n }\n\n // names must be equal\n return 0;\n }\n return (a[fieldNumber] - b[fieldNumber]) * sortOrderNumber;\n };\n\n if (sortOrder === 'asc') {\n sortOrder = 'desc';\n } else {\n sortOrder = 'asc'\n }\n event.target.setAttribute('order', sortOrder);\n\n const first = this.dataset.matrix.shift();\n this.dataset.matrix.sort(checker);\n this.dataset.matrix.unshift(first);\n\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n });\n });\n\n\n const attachBtnEventListeners = () => {\n el.querySelectorAll('.btn').forEach(btn => {\n btn.addEventListener('click', (event) => {\n currentPage = parseInt(event.target.getAttribute('data-page'));\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n }, true);\n });\n };\n\n attachBtnEventListeners(datavizInstance, el, theme);\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const tableClass = `.${theme}-table-dataset`;\n document.querySelector(tableClass)\n .addEventListener('click', (e) => {\n const { nodeName, innerText } = e.target;\n if (nodeName === 'TD') {\n copyToClipboard(innerText, e);\n }\n });\n }\n };\n\n\n\nconst update = function(){\n // no special update handling\n this.render();\n };\n\nconst destroy= function(){};\n\nexport default { render, update, destroy };\n","export default {\n render: function(){\n let html = '';\n const artifacts = this.view._artifacts.spinner = {};\n\n // Build DOM element\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n this.el().innerHTML = html;\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts.spinner) {\n if (this.view._artifacts.spinner.interval) {\n clearInterval(this.view._artifacts.spinner.interval);\n }\n this.view._artifacts.spinner.radius = 0;\n try {\n delete this.view._artifacts.spinner;\n }\n catch (e) {\n this.view._artifacts.spinner = undefined;\n }\n }\n this.el().innerHTML = '';\n }\n};\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 30, left: 200 };\n let yMarginElement = 0;\n if(marginBetweenSteps){\n yMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if (countingMethod === \"relative\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth =\n (prevElemWidth * d[1]) / matrix[i][1]);\n percent = ((d[1] / matrix[i][1]) * 100).toFixed(decimals);\n }\n if (countingMethod === \"absolute\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth = (svgWidth * d[1]) / matrix[1][1]);\n percent = ((d[1] / matrix[1][1]) * 100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n \n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('x2', (d) => { return d.points[1].x + margin.left; })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('x2', polygons[polygons.length-1].points[2].x + margin.left)\n .attr('y2', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2)\n + (margin.left * 0.9);\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 16\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 12\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top;\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement - 5;\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 60, left: 200 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n const yMarginElement = elemHeight * 0.3;\n const shadowCut = (yMarginElement * 2.5);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = prevElemWidth * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = svgWidth * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[3].x,\n y: d.points[3].y\n },\n {\n x: d.points[2].x,\n y: d.points[2].y\n },\n {\n x: effect3d === 'left'\n ? d.points[2].x\n : d.points[2].x - shadowCut < svgWidth/2\n ? svgWidth/2 + 5\n : d.points[2].x - shadowCut,\n y: effect3d === 'left'\n ? d.points[2].y\n : d.points[2].y + (yMarginElement/1.5)\n },\n {\n x: effect3d === 'right'\n ? d.points[3].x\n : d.points[3].x + shadowCut > svgWidth/2\n ? svgWidth/2 - 5\n : d.points[3].x + shadowCut,\n y: effect3d === 'right'\n ? d.points[3].y\n : d.points[3].y + (yMarginElement/1.5)\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('x2', (d, i) => {\n if(i === 0){\n return d.points[1].x + margin.left;\n }\n return d.points[1].x + margin.left - shadowCut;\n })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('x2', polygons[polygons.length-1].points[2].x\n + margin.left - shadowCut )\n .attr('y2', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5 + (yMarginElement/4)\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2) + 130;\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 18\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 3\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n let xMarginElement = 0;\n if(marginBetweenSteps){\n xMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined'\n || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left - (xMarginElement/2))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/2))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight + (margin.bottom * 0.5) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', (d) => {\n if(d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) > svgHeight + margin.bottom - 40 + margin.top){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n return d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n const xMarginElement = elemWidth * 0.3;\n const shadowCut = (xMarginElement/1.5);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[0].x,\n y: d.points[0].y\n },\n {\n x: d.points[1].x,\n y: d.points[1].y\n },\n {\n x: effect3d === 'top'\n ? d.points[1].x\n : d.points[1].x - shadowCut,\n y: effect3d === 'top'\n ? d.points[1].y\n : d.points[1].y - xMarginElement < svgHeight/2\n ? svgHeight/2 + 5\n : d.points[1].y - xMarginElement\n },\n {\n x: effect3d === 'bottom'\n ? d.points[0].x\n : d.points[0].x - shadowCut,\n y: effect3d === 'bottom'\n ? d.points[0].y\n : d.points[0].y + xMarginElement > svgHeight/2\n ? svgHeight/2 - 5\n : d.points[0].y + xMarginElement\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left + (xMarginElement/4))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/4))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', svgHeight + (margin.bottom * 0.4) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', (d) => {\n if(d.points[2].y + (elemWidth/4) >\n svgHeight + margin.bottom - 40){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n if(d.points[2].y + (elemWidth/4) < d.points[1].y){\n return d.points[1].y + 20 + margin.top;\n }\n return d.points[2].y + (elemWidth/4) + 10 + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","/* eslint-env browser */\nimport c3 from 'c3';\nimport { each } from '../../utils/each';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class MetricCombo {\n render() {\n const {\n container,\n metricResults,\n title,\n showTitle,\n subtitle,\n tooltip,\n utils,\n } = this.config;\n\n const colors = ['#c3c4cc'];\n const columns = [];\n columns[0] = [];\n each(this.dataset.selectColumn(0), (c, i) => {\n let cell;\n if (i > 0) {\n cell = new Date(c);\n }\n columns[0][i] = cell;\n });\n columns[0][0] = 'x';\n\n each(this.data()[0], (c, i) => {\n if (i > 0) {\n columns.push(this.dataset.selectColumn(i));\n }\n });\n\n const prevResult = (metricResults && metricResults.previous && metricResults.previous.result)\n || 0;\n const currResult = (metricResults && metricResults.current && metricResults.current.result)\n || 0;\n const count = currResult - prevResult;\n const percentDifference = prevResult === 0 ? '-' : prettyNumber(Math.round((count / prevResult) * 100));\n let labelClass = 'keen-dataviz-metric-green';\n let iconClass = 'arrow-green';\n\n if (percentDifference < 0) {\n labelClass = 'keen-dataviz-metric-red';\n iconClass = 'arrow-red';\n }\n\n const containerTitle = (showTitle && title) ? `
${title}
` : '';\n const containerSubtitle = subtitle ? `
${subtitle}
` : '';\n const containerElement = document.querySelector(container);\n containerElement.innerHTML = `\n
\n
\n
\n ${containerTitle}\n ${containerSubtitle}\n
${percentDifference} %
\n
${prettyNumber(count)}
\n
\n
\n
\n
\n
\n
`;\n const chartRoot = containerElement.querySelector('.c3-chart');\n const chart = c3.generate({\n bindto: chartRoot,\n color: {\n pattern: colors,\n },\n title,\n legend: {\n show: false,\n },\n data: {\n x: 'x',\n columns,\n type: 'area-spline',\n selection: {\n draggable: false,\n enabled: true,\n multiple: true,\n },\n },\n point: {\n r: 0,\n focus: {\n expand: {\n r: 5,\n enabled: true,\n },\n },\n select: {\n r: 5,\n enabled: true,\n },\n },\n axis: {\n y: {\n show: false,\n },\n x: {\n show: false,\n },\n },\n grid: {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n },\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: -4,\n },\n tooltip,\n });\n\n if (utils && utils.clickToCopyToClipboard) {\n const currentCount = document.querySelector('.current-count').innerText;\n document.querySelector('.keen-dataviz-metric-combo')\n .addEventListener('click', e => copyToClipboard(currentCount, e));\n }\n }\n\n update() {\n this.destroy();\n this.render();\n }\n\n destroy() {\n const { container } = this.config;\n const containerElement = document.querySelector(container);\n const chartContainer = containerElement.querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport Rangeable from 'rangeable';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Heatmap {\n render() {\n const {\n colors,\n container,\n heatmap: { showSlider, simpleTooltip },\n } = this.config;\n const {\n matrix,\n meta,\n } = this.dataset;\n const margin = {\n top: 10,\n right: 10,\n bottom: 50,\n left: 50,\n };\n const baseWidth = 600;\n const baseHeight = 600;\n const heatmapContainer = d3.select(container);\n const containerWidth = parseInt(heatmapContainer.style('width'), 10) || baseWidth;\n const containerHeight = parseInt(heatmapContainer.style('height'), 10) || baseHeight;\n const chartContainer = this.el().querySelector('.c3-chart');\n const svgWidth = containerWidth - margin.right - margin.left;\n const svgHeight = containerHeight - margin.top - margin.bottom;\n\n const xLabel = new Set();\n const yLabel = new Set();\n\n const formatData = () => {\n const dateFormat = d3.timeFormat('%B %d');\n const timeFormat = d3.timeFormat('%H:%M');\n const arr = [];\n matrix.forEach((element) => {\n if (meta.type === 'heatmap') {\n if (typeof element[0][2] === 'number') {\n const obj = {\n x: element[0][0],\n y: element[0][1],\n value: element[0][2],\n };\n arr.push(obj);\n }\n } else {\n const timestamp = Date.parse(element[0]);\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(timestamp)) {\n const obj = {\n x: dateFormat(new Date(element[0])),\n y: timeFormat(new Date(element[0])),\n value: element[1],\n };\n arr.push(obj);\n }\n }\n });\n return arr;\n };\n\n const formattedData = formatData();\n\n formattedData.forEach((item) => {\n xLabel.add(item.x);\n yLabel.add(item.y);\n });\n\n const refValue = formattedData[0].value;\n const minRange = formattedData\n .reduce((min, curr) => (curr.value < min ? curr.value : min), refValue);\n const maxRange = formattedData\n .reduce((max, curr) => (curr.value > max ? curr.value : max), refValue);\n\n const getColor = () => {\n const defaultColor = '#00BBDE';\n const baseColor = colors[0];\n let rgb = d3.rgb(defaultColor);\n if (d3.color(baseColor)) {\n rgb = d3.rgb(baseColor);\n }\n return rgb;\n };\n\n const getColorAlpha = d3.scaleLinear()\n .domain([0, d3.max(formattedData, d => d.value)])\n .range([0, 1]);\n\n const convertRGBAtoRGB = (color, bg = [255, 255, 255]) => {\n const opacity = color[3];\n\n return [Math.floor(((1 - opacity) * bg[0]) + (opacity * color[0]) + 0.5),\n Math.floor(((1 - opacity) * bg[1]) + (opacity * color[1]) + 0.5),\n Math.floor(((1 - opacity) * bg[2]) + (opacity * color[2]) + 0.5)];\n };\n\n const getTileColor = (value) => {\n const alpha = getColorAlpha(value);\n const rgb = getColor();\n const solidColor = convertRGBAtoRGB([rgb.r, rgb.g, rgb.b, alpha]);\n const color = `rgb(${solidColor[0]}, ${solidColor[1]}, ${solidColor[2]})`;\n return color;\n };\n\n const svg = d3.select(chartContainer)\n .append('svg')\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${containerWidth} ${containerHeight}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr(\n 'transform',\n `translate(${margin.left},${margin.top})`,\n );\n\n if (showSlider) {\n // eslint-disable-next-line no-unused-vars\n const rangeableInput = d3.select(container)\n .append('input')\n .attr('type', 'range')\n .attr('class', 'keen-dataviz-slider');\n\n const handleSliderChange = (data) => {\n const rects = svg.selectAll('rect');\n const [min, max] = data;\n\n rects.each((d, i, nodes) => {\n d3.select(nodes[i])\n .style('visibility', () => ((d.value > max || d.value < min) ? 'hidden' : 'visible'));\n });\n };\n\n // eslint-disable-next-line no-unused-vars\n const rangeable = new Rangeable('.keen-dataviz-slider', {\n multiple: true,\n min: minRange,\n max: maxRange,\n value: [minRange, maxRange],\n onChange: data => handleSliderChange(data),\n });\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${getColor()};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${getColor()} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${getColor()};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement('style');\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector('script');\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const xLabelBase = 5;\n const yLabelBase = 10;\n\n const getAxisLabelRatio = (base, labelSize) => Math.floor(labelSize / base) + 1;\n const xAxis = d3.scaleBand()\n .range([0, svgWidth])\n .domain([...xLabel])\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .attr('transform', `translate(0, ${svgHeight})`)\n .call(d3.axisBottom(xAxis).tickSize(0))\n .selectAll('text')\n .attr('dy', '1em')\n .filter((d, i) => i % getAxisLabelRatio(xLabelBase, xLabel.size))\n .style('display', 'none');\n\n const yAxis = d3.scaleBand()\n .range([svgHeight, 0])\n .domain([...yLabel].sort())\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .call(d3.axisLeft(yAxis).tickSize(0))\n .selectAll('text')\n .filter((d, i) => i % getAxisLabelRatio(yLabelBase, yLabel.size))\n .style('display', 'none');\n\n const chartTooltip = d3.select(container)\n .append('div')\n .attr('class', 'keen-dataviz-tooltip')\n .style('opacity', 0)\n .style('background-color', 'white')\n .style('border', `2px solid ${getColor().toString()}`)\n .style('font-size', '14px')\n .style('padding', '2px 8px')\n .style('box-shadow', '2px 2px 4px rgba(0,0,0,0.25')\n .style('display', 'none')\n .style('position', 'fixed');\n\n const handleMouseOver = () => {\n d3.select(d3.event.target)\n .raise()\n .style('transition', 'transform 150ms ease-out')\n .style('outline', `1px solid ${getColor()}`)\n .style('transform', 'translate(0px, -4px)');\n\n chartTooltip\n .style('opacity', 1)\n .style('display', 'block');\n };\n\n const handleMouseMove = (d) => {\n let tooltipContent = `\n \n value:\n ${d.value}\n `;\n if (!simpleTooltip) {\n tooltipContent = `\n \n xAxis:\n ${d.x}\n \n \n yAxis:\n ${d.y}\n \n ${tooltipContent}\n `;\n }\n chartTooltip\n .html(`\n \n ${tooltipContent}\n
\n `)\n .style('left', `${d3.event.clientX + 10}px`)\n .style('top', `${d3.event.clientY + 10}px`);\n };\n\n const handleMouseLeave = () => {\n d3.select(d3.event.target)\n .style('outline', 'none')\n .style('transform', 'none');\n\n chartTooltip\n .style('opacity', 0)\n .style('display', 'none');\n };\n\n const handleClick = d => copyToClipboard(d.value);\n\n svg.selectAll()\n .data(formattedData, d => `${d.x}:${d.y}`)\n .enter()\n .append('rect')\n .attr('x', d => xAxis(d.x))\n .attr('y', d => yAxis(d.y))\n .attr('width', xAxis.bandwidth())\n .attr('height', yAxis.bandwidth())\n .style('fill', d => getTileColor(d.value))\n .style('cursor', 'pointer')\n .on('mouseover', handleMouseOver)\n .on('mousemove', handleMouseMove)\n .on('mouseleave', handleMouseLeave)\n .on('click', handleClick);\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = this.el().querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from \"d3\";\nimport Rangeable from \"rangeable\";\nimport { prettyNumber } from \"../../utils/pretty-number\";\nimport copyToClipboard from \"../../utils/copy-to-clipboard\";\n\nexport default class Choropleth {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n utils,\n title,\n choropleth: {\n map,\n borders: { show, size, color },\n showSlider\n }\n } = this.config;\n const opts = this.config;\n const choroplethContainer = d3.select(container);\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n const width = Number(choroplethContainer.style(\"width\").slice(0, -2));\n const height = Number(choroplethContainer.style(\"height\").slice(0, -2));\n let heightChanges = 0;\n if (title) heightChanges += 31;\n if (showSlider) heightChanges += 20;\n const chart = chartContainer\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height - heightChanges);\n\n const onlyValues = matrix.slice(1).map(el => el[1]);\n let minVal = d3.min(onlyValues);\n const maxVal = d3.max(onlyValues);\n if(minVal === maxVal) minVal = 0;\n const lightColor = d3.hsl(colors[0]).brighter(1);\n lightColor.l = 0.95;\n const darkColor = colors[0];\n const ramp = d3\n .scaleLinear()\n .domain([minVal === undefined ? 0 : minVal, maxVal === undefined ? 0 : maxVal])\n .range([lightColor, darkColor]);\n\n d3.json(\n `https://cdn.jsdelivr.net/npm/keen-dataviz-maps@1.0.0/maps/${map}.json`\n ).then(data => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 5])\n .translateExtent([[0, 0], [width, height - 50]])\n .on(\"zoom\", zoomed);\n\n let projection;\n switch (map) {\n case \"world\":\n projection = d3.geoMercator().fitSize([width, height - 50], data);\n break;\n case \"us\":\n projection = d3\n .geoAlbersUsa()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n\n default:\n projection = d3\n .geoMercator()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n }\n\n const path = d3.geoPath().projection(projection);\n\n const usData = data.features.map(el => {\n const theOne = matrix.filter(d => d[0] === el.properties.name);\n if (theOne[0])\n return {\n ...el,\n properties: { ...el.properties, result: theOne[0][1] }\n };\n return {\n ...el,\n properties: { ...el.properties, result: 0 }\n };\n });\n\n if (showSlider) {\n const handleSliderChange = data => {\n const el = chart.selectAll(`.${elementName}`);\n const [min, max] = data;\n\n el.each((d, i, nodes) => {\n d3.select(nodes[i]).style(\"visibility\", () =>\n d.properties.result > max || d.properties.result < min\n ? \"hidden\"\n : \"visible\"\n );\n });\n };\n\n chartContainer\n .style(\"display\", \"flex\")\n .style(\"flex-direction\", \"column\")\n .style(\"justify-content\", \"center\");\n\n const rangeContainer = chartContainer\n .append(\"div\")\n .style(\"width\", \"95%\")\n .style(\"margin\", \"auto\");\n rangeContainer.append(\"input\").attr(\"id\", \"rangeSlider\");\n\n const rangeable = new Rangeable(\"#rangeSlider\", {\n type: \"double\",\n tooltips: true,\n min: 0,\n max: maxVal,\n onChange: data => handleSliderChange(data)\n });\n\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${colors[0]};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${colors[0]} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${colors[0]};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement(\"style\");\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector(\"script\");\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const elementName = map === \"world\" ? \"country\" : \"state\";\n\n chart\n .selectAll(\"path\")\n .data(usData)\n .enter()\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"class\", elementName)\n .attr(\n \"id\",\n d =>\n `${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .attr(\"cursor\", \"pointer\")\n .on(\"mouseover\", handleMouseOver)\n .on(\"mousemove\", handleMouseMove)\n .on(\"mouseout\", handleMouseOut);\n\n //borders\n if (show) {\n chart\n .selectAll(`.${elementName}`)\n .style(\"stroke\", color)\n .style(\"stroke-width\", size);\n }\n\n //tooltip\n const tooltip = d3\n .select(\".c3-chart\")\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"c3-tooltip-container\")\n .style(\"display\", \"none\")\n .style(\"position\", \"fixed\");\n\n //hover handling\n function handleMouseOver(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(1.2 * maxVal))\n .style(\"stroke-width\", 1.5 * size);\n\n tooltip.style(\"opacity\", 1).style(\"display\", \"block\");\n }\n\n function handleMouseMove(d) {\n let result = d.properties.result;\n if (\n (typeof opts[\"prettyNumber\"] === \"undefined\" ||\n opts[\"prettyNumber\"] === true) &&\n !isNaN(parseInt(d.properties.result))\n ) {\n result = prettyNumber(d.properties.result);\n }\n tooltip\n .html(\n `\n \n \n \n \n \n \n \n
${d.properties.name}
${result}
\n `\n )\n .style(\"left\", `${d3.event.clientX + 10}px`)\n .style(\"top\", `${d3.event.clientY + 10}px`);\n }\n function handleMouseOut(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .style(\"stroke-width\", size);\n\n tooltip.style(\"opacity\", 0).style(\"display\", \"none\");\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll(`.${elementName}`);\n\n label.on(\"click\", handleClickToCopy);\n\n function handleClickToCopy(data) {\n const {\n properties: { result }\n } = data;\n copyToClipboard(result, d3.event);\n }\n }\n function zoomed() {\n chart\n .selectAll(`.${elementName}`)\n .attr(\"transform\", d3.event.transform);\n }\n chart.call(zoom);\n chart.call(zoom).on(\"mousedown.zoom\", null);\n });\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n chartContainer.remove();\n }\n}\n","import copyToClipboard from './copy-to-clipboard';\n\nfunction removeClassWithTimeOut(element, className = 'copied', ms = 1000) {\n setTimeout(() => {\n element.classList.remove(className);\n }, ms);\n}\n\nfunction handleCopyToClipboard(event) {\n const { target, target: { nodeName } } = event;\n\n let value;\n if (nodeName === 'DD') {\n value = target.innerText;\n if (!target.classList.contains('copied')) {\n target.classList.add('copied');\n removeClassWithTimeOut(target);\n }\n }\n if (nodeName === 'DT') {\n value = target.nextSibling.innerText;\n if (!target.nextSibling.classList.contains('copied')) {\n target.nextSibling.classList.add('copied');\n removeClassWithTimeOut(target.nextSibling);\n }\n }\n\n copyToClipboard(value);\n}\n\nexport default function renderExecutionMetadata({\n element,\n data,\n} = {}) {\n const dataList = document.createElement('dl');\n dataList.classList = 'keen-dataviz-execution-meta';\n\n if (Object.keys(data).length) {\n Object.keys(data).forEach((item) => {\n const dt = document.createElement('dt');\n dt.innerText = item.replace(/_/g, ' ');\n dt.addEventListener('click', e => handleCopyToClipboard(e));\n\n const dd = document.createElement('dd');\n dd.innerText = data[item];\n dd.addEventListener('click', e => handleCopyToClipboard(e));\n\n dataList.append(dt);\n dataList.append(dd);\n });\n } else {\n dataList.innerText = 'No execution metadata available';\n }\n\n element.append(dataList);\n}\n","import autocollector from './autocollector';\nimport modern from './modern';\nimport dracula from './dracula';\n\nexport default {\n autocollector,\n modern,\n dracula,\n};","const palette = {\n colors: [\n '#5E77FF',\n '#9C60FE',\n '#F162FE',\n '#FD65B7',\n '#FD6768',\n '#FDB86A',\n '#F2FC6C',\n '#A5FC6E',\n '#71FB85',\n '#73FBD0',\n '#76DDFA',\n '#76f4fa',\n '#bb76fa',\n '#fa76bf'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#45B2E8',\n '#D9540D',\n '#2CAB72',\n '#2C4BAB',\n '#EDDD02',\n '#E84545',\n '#E845CE',\n '#5FCEC9',\n '#E89F45',\n '#28E43F',\n '#B765C0',\n '#458AE8',\n '#AB2C2C',\n '#AB2C75',\n '#27E5FF',\n '#7168F2',\n '#FF932B',\n '#855D00',\n '#ACE845',\n '#1C91B4'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#8be9fd',\n '#50fa7b',\n '#ffb86c',\n '#ff79c6',\n '#bd93f9',\n '#ff5555',\n '#f1fa8c',\n ]\n};\n\nexport default palette;"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./lib/utils/each.js","webpack:///./lib/utils/copy-to-clipboard.js","webpack:///./node_modules/d3/dist/package.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/pairs.js","webpack:///./node_modules/d3-array/src/cross.js","webpack:///./node_modules/d3-array/src/descending.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-array/src/variance.js","webpack:///./node_modules/d3-array/src/deviation.js","webpack:///./node_modules/d3-array/src/extent.js","webpack:///./node_modules/d3-array/src/array.js","webpack:///./node_modules/d3-array/src/constant.js","webpack:///./node_modules/d3-array/src/identity.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/threshold/sturges.js","webpack:///./node_modules/d3-array/src/histogram.js","webpack:///./node_modules/d3-array/src/quantile.js","webpack:///./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack:///./node_modules/d3-array/src/threshold/scott.js","webpack:///./node_modules/d3-array/src/max.js","webpack:///./node_modules/d3-array/src/mean.js","webpack:///./node_modules/d3-array/src/median.js","webpack:///./node_modules/d3-array/src/merge.js","webpack:///./node_modules/d3-array/src/min.js","webpack:///./node_modules/d3-array/src/permute.js","webpack:///./node_modules/d3-array/src/scan.js","webpack:///./node_modules/d3-array/src/shuffle.js","webpack:///./node_modules/d3-array/src/sum.js","webpack:///./node_modules/d3-array/src/transpose.js","webpack:///./node_modules/d3-array/src/zip.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-axis/src/identity.js","webpack:///./node_modules/d3-axis/src/axis.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-selection/src/create.js","webpack:///./node_modules/d3-selection/src/local.js","webpack:///./node_modules/d3-selection/src/sourceEvent.js","webpack:///./node_modules/d3-selection/src/point.js","webpack:///./node_modules/d3-selection/src/mouse.js","webpack:///./node_modules/d3-selection/src/selectAll.js","webpack:///./node_modules/d3-selection/src/touch.js","webpack:///./node_modules/d3-selection/src/touches.js","webpack:///./node_modules/d3-drag/src/noevent.js","webpack:///./node_modules/d3-drag/src/nodrag.js","webpack:///./node_modules/d3-drag/src/constant.js","webpack:///./node_modules/d3-drag/src/event.js","webpack:///./node_modules/d3-drag/src/drag.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-color/src/math.js","webpack:///./node_modules/d3-color/src/lab.js","webpack:///./node_modules/d3-color/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-interpolate/src/discrete.js","webpack:///./node_modules/d3-interpolate/src/hue.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-interpolate/src/hsl.js","webpack:///./node_modules/d3-interpolate/src/lab.js","webpack:///./node_modules/d3-interpolate/src/hcl.js","webpack:///./node_modules/d3-interpolate/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/piecewise.js","webpack:///./node_modules/d3-interpolate/src/quantize.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-timer/src/interval.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-ease/src/linear.js","webpack:///./node_modules/d3-ease/src/quad.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-ease/src/poly.js","webpack:///./node_modules/d3-ease/src/sin.js","webpack:///./node_modules/d3-ease/src/exp.js","webpack:///./node_modules/d3-ease/src/circle.js","webpack:///./node_modules/d3-ease/src/bounce.js","webpack:///./node_modules/d3-ease/src/back.js","webpack:///./node_modules/d3-ease/src/elastic.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-transition/src/active.js","webpack:///./node_modules/d3-brush/src/constant.js","webpack:///./node_modules/d3-brush/src/event.js","webpack:///./node_modules/d3-brush/src/noevent.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-chord/src/math.js","webpack:///./node_modules/d3-chord/src/chord.js","webpack:///./node_modules/d3-chord/src/array.js","webpack:///./node_modules/d3-chord/src/constant.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-chord/src/ribbon.js","webpack:///./node_modules/d3-collection/src/map.js","webpack:///./node_modules/d3-collection/src/nest.js","webpack:///./node_modules/d3-collection/src/set.js","webpack:///./node_modules/d3-collection/src/keys.js","webpack:///./node_modules/d3-collection/src/values.js","webpack:///./node_modules/d3-collection/src/entries.js","webpack:///./node_modules/d3-contour/src/array.js","webpack:///./node_modules/d3-contour/src/ascending.js","webpack:///./node_modules/d3-contour/src/area.js","webpack:///./node_modules/d3-contour/src/constant.js","webpack:///./node_modules/d3-contour/src/contains.js","webpack:///./node_modules/d3-contour/src/noop.js","webpack:///./node_modules/d3-contour/src/contours.js","webpack:///./node_modules/d3-contour/src/blur.js","webpack:///./node_modules/d3-contour/src/density.js","webpack:///./node_modules/d3-dsv/src/dsv.js","webpack:///./node_modules/d3-dsv/src/csv.js","webpack:///./node_modules/d3-dsv/src/tsv.js","webpack:///./node_modules/d3-dsv/src/autoType.js","webpack:///./node_modules/d3-fetch/src/blob.js","webpack:///./node_modules/d3-fetch/src/buffer.js","webpack:///./node_modules/d3-fetch/src/text.js","webpack:///./node_modules/d3-fetch/src/dsv.js","webpack:///./node_modules/d3-fetch/src/image.js","webpack:///./node_modules/d3-fetch/src/json.js","webpack:///./node_modules/d3-fetch/src/xml.js","webpack:///./node_modules/d3-force/src/center.js","webpack:///./node_modules/d3-force/src/constant.js","webpack:///./node_modules/d3-force/src/jiggle.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-force/src/collide.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-force/src/link.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-force/src/manyBody.js","webpack:///./node_modules/d3-force/src/radial.js","webpack:///./node_modules/d3-force/src/x.js","webpack:///./node_modules/d3-force/src/y.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-geo/src/adder.js","webpack:///./node_modules/d3-geo/src/math.js","webpack:///./node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3-geo/src/stream.js","webpack:///./node_modules/d3-geo/src/area.js","webpack:///./node_modules/d3-geo/src/cartesian.js","webpack:///./node_modules/d3-geo/src/bounds.js","webpack:///./node_modules/d3-geo/src/centroid.js","webpack:///./node_modules/d3-geo/src/constant.js","webpack:///./node_modules/d3-geo/src/compose.js","webpack:///./node_modules/d3-geo/src/rotation.js","webpack:///./node_modules/d3-geo/src/circle.js","webpack:///./node_modules/d3-geo/src/clip/buffer.js","webpack:///./node_modules/d3-geo/src/pointEqual.js","webpack:///./node_modules/d3-geo/src/clip/rejoin.js","webpack:///./node_modules/d3-geo/src/polygonContains.js","webpack:///./node_modules/d3-geo/src/clip/index.js","webpack:///./node_modules/d3-geo/src/clip/antimeridian.js","webpack:///./node_modules/d3-geo/src/clip/circle.js","webpack:///./node_modules/d3-geo/src/clip/line.js","webpack:///./node_modules/d3-geo/src/clip/rectangle.js","webpack:///./node_modules/d3-geo/src/clip/extent.js","webpack:///./node_modules/d3-geo/src/length.js","webpack:///./node_modules/d3-geo/src/distance.js","webpack:///./node_modules/d3-geo/src/contains.js","webpack:///./node_modules/d3-geo/src/graticule.js","webpack:///./node_modules/d3-geo/src/interpolate.js","webpack:///./node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3-geo/src/identity.js","webpack:///./node_modules/d3-geo/src/path/bounds.js","webpack:///./node_modules/d3-geo/src/path/centroid.js","webpack:///./node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3-geo/src/path/index.js","webpack:///./node_modules/d3-geo/src/transform.js","webpack:///./node_modules/d3-geo/src/projection/fit.js","webpack:///./node_modules/d3-geo/src/projection/resample.js","webpack:///./node_modules/d3-geo/src/projection/index.js","webpack:///./node_modules/d3-geo/src/projection/conic.js","webpack:///./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/albers.js","webpack:///./node_modules/d3-geo/src/projection/albersUsa.js","webpack:///./node_modules/d3-geo/src/projection/azimuthal.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/mercator.js","webpack:///./node_modules/d3-geo/src/projection/conicConformal.js","webpack:///./node_modules/d3-geo/src/projection/equirectangular.js","webpack:///./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/equalEarth.js","webpack:///./node_modules/d3-geo/src/projection/gnomonic.js","webpack:///./node_modules/d3-geo/src/projection/identity.js","webpack:///./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack:///./node_modules/d3-geo/src/projection/orthographic.js","webpack:///./node_modules/d3-geo/src/projection/stereographic.js","webpack:///./node_modules/d3-geo/src/projection/transverseMercator.js","webpack:///./node_modules/d3-hierarchy/src/cluster.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack:///./node_modules/d3-hierarchy/src/array.js","webpack:///./node_modules/d3-hierarchy/src/pack/enclose.js","webpack:///./node_modules/d3-hierarchy/src/pack/siblings.js","webpack:///./node_modules/d3-hierarchy/src/accessors.js","webpack:///./node_modules/d3-hierarchy/src/constant.js","webpack:///./node_modules/d3-hierarchy/src/pack/index.js","webpack:///./node_modules/d3-hierarchy/src/treemap/round.js","webpack:///./node_modules/d3-hierarchy/src/treemap/dice.js","webpack:///./node_modules/d3-hierarchy/src/partition.js","webpack:///./node_modules/d3-hierarchy/src/stratify.js","webpack:///./node_modules/d3-hierarchy/src/tree.js","webpack:///./node_modules/d3-hierarchy/src/treemap/slice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack:///./node_modules/d3-hierarchy/src/treemap/index.js","webpack:///./node_modules/d3-hierarchy/src/treemap/binary.js","webpack:///./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack:///./node_modules/d3-polygon/src/area.js","webpack:///./node_modules/d3-polygon/src/centroid.js","webpack:///./node_modules/d3-polygon/src/cross.js","webpack:///./node_modules/d3-polygon/src/hull.js","webpack:///./node_modules/d3-polygon/src/contains.js","webpack:///./node_modules/d3-polygon/src/length.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/array.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/d3-scale/src/band.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-scale/src/identity.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-scale/src/log.js","webpack:///./node_modules/d3-scale/src/symlog.js","webpack:///./node_modules/d3-scale/src/pow.js","webpack:///./node_modules/d3-scale/src/quantile.js","webpack:///./node_modules/d3-scale/src/quantize.js","webpack:///./node_modules/d3-scale/src/threshold.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-time-format/src/isoFormat.js","webpack:///./node_modules/d3-time-format/src/isoParse.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale/src/utcTime.js","webpack:///./node_modules/d3-scale/src/sequential.js","webpack:///./node_modules/d3-scale/src/sequentialQuantile.js","webpack:///./node_modules/d3-scale/src/diverging.js","webpack:///./node_modules/d3-scale-chromatic/src/colors.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack:///./node_modules/d3-scale-chromatic/src/ramp.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/arc.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/area.js","webpack:///./node_modules/d3-shape/src/descending.js","webpack:///./node_modules/d3-shape/src/identity.js","webpack:///./node_modules/d3-shape/src/pie.js","webpack:///./node_modules/d3-shape/src/curve/radial.js","webpack:///./node_modules/d3-shape/src/lineRadial.js","webpack:///./node_modules/d3-shape/src/areaRadial.js","webpack:///./node_modules/d3-shape/src/pointRadial.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/link/index.js","webpack:///./node_modules/d3-shape/src/symbol/circle.js","webpack:///./node_modules/d3-shape/src/symbol/cross.js","webpack:///./node_modules/d3-shape/src/symbol/diamond.js","webpack:///./node_modules/d3-shape/src/symbol/star.js","webpack:///./node_modules/d3-shape/src/symbol/square.js","webpack:///./node_modules/d3-shape/src/symbol/triangle.js","webpack:///./node_modules/d3-shape/src/symbol/wye.js","webpack:///./node_modules/d3-shape/src/symbol.js","webpack:///./node_modules/d3-shape/src/noop.js","webpack:///./node_modules/d3-shape/src/curve/basis.js","webpack:///./node_modules/d3-shape/src/curve/basisClosed.js","webpack:///./node_modules/d3-shape/src/curve/basisOpen.js","webpack:///./node_modules/d3-shape/src/curve/bundle.js","webpack:///./node_modules/d3-shape/src/curve/cardinal.js","webpack:///./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack:///./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack:///./node_modules/d3-shape/src/curve/catmullRom.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack:///./node_modules/d3-shape/src/curve/linearClosed.js","webpack:///./node_modules/d3-shape/src/curve/monotone.js","webpack:///./node_modules/d3-shape/src/curve/natural.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/d3-shape/src/offset/none.js","webpack:///./node_modules/d3-shape/src/order/none.js","webpack:///./node_modules/d3-shape/src/stack.js","webpack:///./node_modules/d3-shape/src/offset/expand.js","webpack:///./node_modules/d3-shape/src/offset/diverging.js","webpack:///./node_modules/d3-shape/src/offset/silhouette.js","webpack:///./node_modules/d3-shape/src/offset/wiggle.js","webpack:///./node_modules/d3-shape/src/order/appearance.js","webpack:///./node_modules/d3-shape/src/order/ascending.js","webpack:///./node_modules/d3-shape/src/order/descending.js","webpack:///./node_modules/d3-shape/src/order/insideOut.js","webpack:///./node_modules/d3-shape/src/order/reverse.js","webpack:///./node_modules/d3-voronoi/src/constant.js","webpack:///./node_modules/d3-voronoi/src/point.js","webpack:///./node_modules/d3-voronoi/src/RedBlackTree.js","webpack:///./node_modules/d3-voronoi/src/Edge.js","webpack:///./node_modules/d3-voronoi/src/Cell.js","webpack:///./node_modules/d3-voronoi/src/Circle.js","webpack:///./node_modules/d3-voronoi/src/Beach.js","webpack:///./node_modules/d3-voronoi/src/Diagram.js","webpack:///./node_modules/d3-voronoi/src/voronoi.js","webpack:///./node_modules/d3-zoom/src/constant.js","webpack:///./node_modules/d3-zoom/src/event.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./node_modules/d3-zoom/src/noevent.js","webpack:///./node_modules/d3-zoom/src/zoom.js","webpack:///./node_modules/d3/index.js","webpack:///./lib/utils/pretty-number.js","webpack:///./lib/utils/escape-html.js","webpack:///./lib/utils/extend.js","webpack:///./lib/utils/svg-text-wrap.js","webpack:///(webpack)/buildin/global.js","webpack:///./lib/dataset/modifiers/append.js","webpack:///./lib/dataset/utils/create-null-list.js","webpack:///./node_modules/c3/c3.js","webpack:///./lib/utils/assert-date-string.js","webpack:///./lib/dataset/index.js","webpack:///./lib/dataset/utils/analyses.js","webpack:///./lib/dataset/utils/flatten.js","webpack:///./lib/utils/strip-html-tags.js","webpack:///./lib/utils/extend-deep.js","webpack:///./lib/utils/render-download-btn.js","webpack:///./lib/utils/export-svg.js","webpack:///./lib/utils/export-data.js","webpack:///./node_modules/rangeable/dist/rangeable.min.js","webpack:///./lib/browser.js","webpack:///./lib/index.js","webpack:///./lib/dataset/modifiers/delete.js","webpack:///./lib/dataset/modifiers/filter.js","webpack:///./lib/dataset/modifiers/insert.js","webpack:///./lib/dataset/modifiers/select.js","webpack:///./lib/dataset/modifiers/sort.js","webpack:///./lib/dataset/modifiers/update.js","webpack:///./lib/dataset/utils/parsers.js","webpack:///./lib/dataset/utils/object.js","webpack:///./lib/dataset/utils/create-extraction-keys.js","webpack:///./lib/data.js","webpack:///./lib/libraries/index.js","webpack:///./lib/libraries/c3/extensions/default-date-format.js","webpack:///./lib/libraries/c3/extensions/paginating-legend.js","webpack:///./lib/libraries/c3/extensions/tooltip-contents.js","webpack:///./lib/dataset/utils/calculate-range.js","webpack:///./lib/dataset/utils/calculate-percents.js","webpack:///./lib/libraries/default/message.js","webpack:///./lib/utils/download-results.js","webpack:///./node_modules/dom-to-image/src/dom-to-image.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./lib/libraries/default/metric.js","webpack:///./lib/libraries/default/table.js","webpack:///./lib/libraries/default/spinner.js","webpack:///./lib/libraries/default/funnel.js","webpack:///./lib/libraries/default/funnel-3d.js","webpack:///./lib/libraries/default/horizontal-funnel.js","webpack:///./lib/libraries/default/horizontal-funnel-3d.js","webpack:///./lib/libraries/default/metric-combo.js","webpack:///./lib/libraries/default/heatmap.js","webpack:///./lib/libraries/default/choropleth.js","webpack:///./lib/utils/render-execution-metadata.js","webpack:///./lib/palettes/index.js","webpack:///./lib/palettes/autocollector.js","webpack:///./lib/palettes/modern.js","webpack:///./lib/palettes/dracula.js"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","each","cb","Array","length","event","placeholder","document","createElement","body","appendChild","select","execCommand","removeChild","notification","style","padding","backgroundColor","fontSize","position","top","pageY","left","pageX","zIndex","opacity","transition","innerText","addEventListener","e","tooltip","stickTooltip","setTimeout","ascending","b","NaN","bisector","compare","f","x","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","bisect","pairs","array","pair","cross","values0","values1","reduce","i0","i1","value0","n0","n1","values","descending","number","variance","valueof","delta","mean","sum","isNaN","deviation","v","Math","sqrt","src_extent","min","max","array_array","slice","map","constant","identity","src_range","start","stop","step","arguments","ceil","range","e10","e5","e2","ticks","count","reverse","tickIncrement","isFinite","floor","power","log","LN10","error","pow","tickStep","step0","abs","step1","sturges","LN2","src_histogram","domain","threshold","histogram","data","xz","x0","x1","tz","isArray","shift","pop","bin","bins","push","_","thresholds","quantile","freedmanDiaconis","sort","scott","src_max","src_mean","median","numbers","src_merge","arrays","merged","j","src_min","permute","indexes","permutes","scan","xi","xj","shuffle","random","src_sum","src_transpose","matrix","transpose_length","transpose","row","zip","array_slice","src_identity","axis_top","axis_right","axis_bottom","axis_left","epsilon","translateX","translateY","y","entering","this","__axis","axis_axis","orient","scale","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","axis","context","apply","format","spacing","range0","range1","bandwidth","offset","round","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","text","merge","insert","getAttribute","parentNode","remove","filter","tickSize","axisTop","axisRight","axisBottom","axisLeft","noop","dispatch","Error","Dispatch","type","set","callback","concat","constructor","on","typename","types","T","trim","split","indexOf","that","args","src_dispatch","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creator","fullname","ownerDocument","createElementNS","uri","namespaceURI","documentElement","none","src_selector","selector","querySelector","selectorAll_empty","selectorAll","querySelectorAll","matcher","matches","sparse","update","EnterNode","parent","datum","_next","_parent","__data__","child","insertBefore","next","keyPrefix","bindIndex","group","node","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","sort_ascending","src_window","defaultView","styleValue","getPropertyValue","getComputedStyle","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","setAttribute","join","splice","contains","textRemove","textContent","htmlRemove","innerHTML","raise","nextSibling","lower","previousSibling","firstChild","constantNull","remove_remove","selection_cloneShallow","cloneNode","selection_cloneDeep","filterEvents","on_event","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","removeEventListener","capture","onAdd","wrap","customEvent","sourceEvent","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","selection_root","Selection","groups","parents","_groups","_parents","selection_selection","subgroups","subnode","subgroup","match","size","enterGroup","updateGroup","previous","_enter","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareNode","sortgroups","sortgroup","nodes","empty","getAttributeNS","removeAttributeNS","removeAttribute","setAttributeNS","priority","removeProperty","setProperty","classed","html","before","clone","deep","typenames","on_parseTypenames","src_selection","src_select","src_create","nextId","Local","toString","id","source","current","src_point","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","clientTop","mouse","changedTouches","src_selectAll","src_touch","touches","identifier","touch","src_touches","points","nopropagation","stopImmediatePropagation","noevent","preventDefault","nodrag","view","__noselect","MozUserSelect","yesdrag","noclick","d3_drag_src_constant","DragEvent","target","subject","active","dx","dy","defaultFilter","ctrlKey","button","defaultContainer","defaultSubject","defaultTouchable","navigator","maxTouchPoints","src_drag","mousedownx","mousedowny","mousemoving","touchending","container","touchable","gestures","listeners","clickDistance2","drag","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","clearTimeout","sublisteners","p0","clickDistance","extend","definition","Color","reI","reN","reP","reHex3","reHex6","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color_color","toLowerCase","exec","Rgb","parseInt","rgbn","rgba","hsla","g","rgbConvert","color_rgb","rgb_formatHex","hex","rgb_formatRgb","h","Hsl","hslConvert","hsl","hsl2rgb","m2","channels","assign","displayable","formatHsl","brighter","darker","deg2rad","PI","rad2deg","Xn","Yn","Zn","lab_t0","lab_t1","lab_t2","t3","labConvert","Lab","Hcl","hcl2lab","z","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","lch","hcl","cos","sin","C","cubehelix_D","cubehelix_E","ED","EB","BC_DA","cubehelix_cubehelix","Cubehelix","bl","cubehelixConvert","basis","t1","v0","v1","v2","v3","t2","cosh","sinh","src_basis","basisClosed","d3_interpolate_src_constant","linear","color_hue","gamma","nogamma","exponential","src_rgb","rgbGamma","color","end","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","src_array","nb","na","src_value","src_date","Date","setTime","src_number","src_object","reA","reB","cssNode","cssRoot","cssView","svgNode","src_string","am","bm","bs","bi","lastIndex","q","one","string_zero","valueOf","discrete","src_hue","src_round","degrees","decompose_identity","rotate","skewX","scaleX","scaleY","decompose","atan","interpolateTransform","parse","pxComma","pxParen","degParen","xa","ya","xb","yb","translate","interpolateTransformCss","interpolateTransformSvg","baseVal","consolidate","rho","SQRT2","zoom_cosh","exp","src_zoom","p1","S","ux0","uy0","w0","ux1","uy1","w1","d2","d1","b0","b1","r0","r1","coshr0","u","zoom_sinh","duration","hsl_hsl","hue","src_hsl","hslLong","lab_lab","hcl_hcl","src_hcl","hclLong","src_cubehelix_cubehelix","cubehelixGamma","cubehelix","src_cubehelix","cubehelixLong","piecewise_piecewise","interpolate","I","taskHead","taskTail","quantize","interpolator","samples","timer_frame","timeout","timer_interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","wake","t0","Infinity","sleep","nap","poke","clearInterval","setInterval","TypeError","src_timeout","elapsed","src_interval","total","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","transition_schedule","timing","schedules","__transition","self","tween","state","ease","schedule_create","schedule_init","schedule","schedule_get","schedule_set","interrupt","tweenValue","_id","transition_interpolate","selection_Selection","style_styleRemove","transition_id","Transition","_name","src_transition_transition","newId","selection_prototype","linear_linear","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","children","inherit","id0","id1","on0","on1","sit","every","on_start","onFunction","attrTween","string00","string10","interpolate0","string0","string1","value1","_value","attrInterpolateNS","attrInterpolate","styleTween","styleNull","style_styleFunction","listener0","undefined","styleMaybeRemove","style_styleConstant","styleInterpolate","text_textFunction","text_textConstant","tween0","tween1","easeConstant","Promise","resolve","reject","cancel","polyIn","custom","exponent","polyOut","polyInOut","pi","halfPi","sinIn","sinOut","sinInOut","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","bounce_b1","b2","b3","b4","b5","b6","b7","b8","b9","bounce_b0","bounceIn","bounceOut","bounceInOut","backIn","overshoot","backOut","backInOut","tau","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","defaultTiming","transition_inherit","active_root","src_active","d3_brush_src_constant","src_event","noevent_nopropagation","src_noevent","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","brush_X","handles","brush_type","input","output","xy","brush_Y","XY","cursors","overlay","w","nw","ne","se","sw","flipX","flipY","signsX","signsY","brush_defaultFilter","defaultExtent","hasAttribute","viewBox","width","height","brush_defaultTouchable","brush_local","__brush","brushSelection","dim","brushX","brush_brush","brushY","src_brush","extent","keys","brush","handleSize","initialize","handle","redraw","started","emitter","clean","Emitter","e0","e1","s0","s1","moving","lockX","lockY","metaKey","altKey","signX","signY","W","N","E","shifting","shiftKey","pointer","point0","emit","moved","ended","keyCode","move","point1","brush_empty","selection0","selection1","clear","starting","keyModifiers","math_pi","math_halfPi","math_tau","math_max","src_chord","padAngle","sortGroups","sortSubgroups","sortChords","chord","groupSums","groupIndex","subgroupIndex","chords","forEach","di","dj","a0","a1","subindex","startAngle","endAngle","src_array_slice","d3_chord_src_constant","path_pi","path_tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","path_path","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","ccw","cw","da","src_path","defaultSource","defaultTarget","defaultRadius","radius","defaultStartAngle","defaultEndAngle","src_ribbon","ribbon","buffer","argv","sr","sa0","sa1","sx0","sy0","tr","ta0","ta1","Map","map_map","has","entries","src_map","src_nest","sortValues","rollup","nest","sortKeys","depth","createResult","setResult","valuesByKey","result","createObject","setObject","createMap","setMap","sortKey","Set","proto","set_set","src_set","src_keys","src_values","src_entries","d3_contour_src_array_slice","src_ascending","src_area","ring","area","d3_contour_src_constant","hole","ringContains","yi","pj","yj","segmentContains","collinear","src_noop","cases","src_contours","smooth","smoothLinear","contours","contour","polygons","holes","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","unshift","isorings","polygon","coordinates","xt","yt","_0","_1","blurX","blurY","defaultX","defaultY","defaultWeight","src_density","weight","density","Float32Array","wi","geometry","transformPolygon","transformRing","transformPoint","resize","cellSize","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","JSON","stringify","inferColumns","rows","columnSet","column","pad","formatDate","date","year","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","dsv","delimiter","reFormat","DELIMITER","charCodeAt","parseRows","eof","eol","token","replace","preformatBody","formatValue","formatRow","test","convert","customConverter","formatBody","formatRows","csv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","autoType","responseBlob","response","ok","status","statusText","blob","init","fetch","then","responseArrayBuffer","arrayBuffer","src_buffer","responseText","src_text","dsvParse","dsv_dsv","dsv_csv","dsv_tsv","src_image","image","Image","onerror","onload","src","responseJson","json","parser","DOMParser","parseFromString","xml_html","src_center","force","sx","sy","d3_force_src_constant","jiggle","add_add","tree","xm","ym","xp","yp","bottom","_root","leaf","_x","_y","src_quad","x_defaultX","y_defaultY","quadtree","Quadtree","addAll","leaf_copy","treeProto","collide_x","vx","collide_y","vy","cover","yz","visit","find","x3","y3","quads","retainer","removeAll","visitAfter","collide","radii","strength","iterations","ri","ri2","prepare","quad","rj","link_index","link_find","nodeById","nodeId","src_link","links","strengths","distances","bias","link","distance","alpha","initializeStrength","initializeDistance","simulation_x","simulation_y","initialRadius","initialAngle","src_simulation","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","fx","fy","initializeNodes","angle","initializeForce","closest","manyBody","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","theta","radial","radiuses","d3_force_src_x","d3_force_src_y","formatDecimal","toExponential","coefficient","src_exponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","comma","precision","prefixExponent","defaultLocale_locale","defaultLocale_format","defaultLocale_formatPrefix","formatTrim","out","formatRounded","formatTypes","%","toFixed","toPrecision","X","toUpperCase","d3_format_src_identity","prefixes","src_locale","locale","grouping","thousands","substring","currency","decimal","numerals","formatNumerals","percent","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatPrefix","defaultLocale","precisionFixed","precisionPrefix","precisionRound","adder","Adder","reset","adder_add","temp","bv","av","math_epsilon","math_epsilon2","src_math_pi","src_math_halfPi","quarterPi","src_math_tau","math_degrees","radians","math_cos","math_sin","math_sign","haversin","noop_noop","streamGeometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","area_lambda00","phi00","area_lambda0","area_cosPhi0","area_sinPhi0","src_stream","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","d3_geo_src_area","cartesian_spherical","cartesian","cartesian_cartesian","spherical","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","bounds_lambda0","bounds_phi0","bounds_lambda1","bounds_phi1","bounds_lambda2","bounds_lambda00","bounds_phi00","bounds_p0","ranges","bounds_range","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","bounds_linePoint","normal","inflection","phii","lambdai","antimeridian","bounds_angle","lambda0","lambda1","rangeCompare","rangeContains","W0","W1","centroid_X0","centroid_Y0","Z0","centroid_X1","centroid_Y1","Z1","X2","Y2","Z2","centroid_lambda00","centroid_phi00","centroid_x0","centroid_y0","z0","bounds","feature","deltaMax","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","src_centroid","d3_geo_src_constant","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","src_rotation","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","src_circle","center","circle","clip_buffer","lines","rejoin","pointEqual","Intersection","other","entry","segments","compareIntersection","startInside","clip","segment","rejoin_link","isSubject","polygonContains_sum","longitude","polygonContains","winding","phi0","sinPhi0","cosPhi0","sinPhi1","cosPhi1","phi1","absDelta","intersection","phiArc","src_clip","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","clip_compareIntersection","pointLine","ringSegments","validSegment","clip_antimeridian","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","from","to","clip_circle","cr","smallRadius","notHemisphere","visible","intersect","two","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","A","uu","polar","q1","code","c0","v00","point2","clip_line","ax","ay","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","linePoint","polygonInside","cleanInside","length_lambda0","length_sinPhi0","length_cosPhi0","clip_extent","cache","cacheStream","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","src_length","distance_coordinates","distance_object","src_distance","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ab","ringRadians","pointRadians","src_contains","graticuleX","graticuleY","graticule_graticule","X1","X0","Y1","Y0","Y","DX","DY","graticule","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","area_x00","area_y00","area_x0","area_y0","src_interpolate","cy0","cy1","sy1","kx0","ky0","kx1","ky1","B","d3_geo_src_identity","area_areaSum","area_areaRingSum","area_areaStream","area_areaRingStart","area_areaRingEnd","area_areaPointFirst","area_areaPoint","path_area","bounds_x0","bounds_y0","bounds_x1","bounds_y1","centroid_x00","centroid_y00","path_centroid_x0","path_centroid_y0","path_bounds","path_centroid_X0","path_centroid_Y0","centroid_Z0","path_centroid_X1","path_centroid_Y1","centroid_Z1","centroid_X2","centroid_Y2","centroid_Z2","centroid_centroidStream","centroid_centroidPoint","centroid_centroidLineStart","centroid_centroidLineEnd","centroid_centroidRingStart","centroid_centroidRingEnd","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","path_centroid","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","measure_x00","measure_y00","measure_x0","measure_y0","measure_lengthSum","measure_lengthStream","measure_lengthPointFirst","measure_lengthPoint","measure","PathString","_string","string_circle","_circle","d3_geo_src_path","projection","projectionStream","contextStream","src_transform","methods","transformer","TransformStream","fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","resample","project","delta2","resampleLineTo","phi2","lambda2","dx2","dy2","dz","lambda00","x00","y00","a00","b00","c00","resampleStream","ringPoint","resample_resample","resampleNone","transformRadians","scaleTranslateRotate","cosAlpha","sinAlpha","ai","ci","fi","projection_projection","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","preclip","postclip","recenter","transformRotate","clipAngle","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0y","conicEqualArea","albers","projection_albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEqualArea","azimuthalEquidistantRaw","azimuthalEquidistant","mercatorRaw","mercator","mercatorProjection","reclip","tany","conicConformalRaw","conicConformal","equirectangularRaw","equirectangular","conicEquidistantRaw","gy","nx","conicEquidistant","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","equalEarth","gnomonicRaw","gnomonic","identity_scaleTranslate","kx","ky","tx","ty","projection_identity","reflectX","reflectY","naturalEarth1Raw","phi4","naturalEarth1","orthographicRaw","orthographic","stereographicRaw","stereographic","transverseMercatorRaw","transverseMercator","defaultSeparation","meanXReduce","maxYReduce","cluster","separation","nodeSize","previousNode","eachAfter","meanX","maxY","leafLeft","leafRight","count_count","hierarchy","childs","Node","valued","defaultChildren","eachBefore","computeHeight","copyData","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","d3_hierarchy_src_array_slice","enclose","circles","array_shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","r2","r21","r3","a2","a3","c3","d3","place","intersects","score","siblings_Node","packEnclose","aa","sj","sk","pack","siblings","required","constantZero","d3_hierarchy_src_constant","pack_defaultRadius","src_pack","radiusLeaf","packChildren","translateChild","treemap_round","dice","src_partition","partition","positionNode","stratify_keyPrefix","preroot","ambiguous","defaultId","defaultParentId","parentId","src_stratify","stratify","nodeKey","nodeByKey","tree_defaultSeparation","nextLeft","nextRight","moveSubtree","wm","wp","change","nextAncestor","vim","TreeNode","src_tree","treeRoot","firstWalk","secondWalk","sizeNode","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","treemap_slice","squarify_phi","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","squarify","src_treemap","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","paddingOuter","binary","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","sliceDice","treemap_resquarify","resquarify","_squarify","d3_polygon_src_area","d3_polygon_src_centroid","src_cross","lexicographicOrder","computeUpperHullIndexes","hull","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","d3_polygon_src_contains","inside","d3_polygon_src_length","perimeter","src_defaultSource","uniform","sourceRandomUniform","randomUniform","src_normal","sourceRandomNormal","randomNormal","mu","sigma","logNormal","sourceRandomLogNormal","randomLogNormal","irwinHall","sourceRandomIrwinHall","randomIrwinHall","bates","sourceRandomBates","randomBates","src_exponential","sourceRandomExponential","randomExponential","initRange","initInterpolator","d3_scale_src_array_array","array_map","d3_scale_src_array_slice","implicit","ordinal","unknown","band","ordinalRange","rescale","rangeRound","band_point","pointish","d3_scale_src_constant","d3_scale_src_number","unit","continuous_identity","normalize","clamper","bimap","d0","polymap","clamp","continuous_transformer","untransform","piecewise","continuous","src_tickFormat","linearish","nice","src_linear_linear","identity_identity","interval","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","base","log10","log2","logp","powp","log_log","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","pow_pow","pow_sqrt","quantile_quantile","invertExtent","quantiles","quantize_quantize","threshold_threshold","interval_t0","interval_t1","newInterval","floori","offseti","field","millisecond_millisecond","src_millisecond","durationMinute","durationWeek","second_second","getMilliseconds","src_second","minute_minute","getSeconds","getMinutes","src_minute","hour_hour","getHours","src_hour","day_day","setHours","setDate","getDate","getTimezoneOffset","src_day","days","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","month_month","setMonth","getMonth","getFullYear","src_month","months","year_year","setFullYear","src_year","years","utcMinute","setUTCSeconds","src_utcMinute","utcMinutes","utcHour","setUTCMinutes","src_utcHour","utcHours","utcDay","setUTCHours","setUTCDate","src_utcDay","utcDays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcMonth","setUTCMonth","src_utcMonth","utcMonths","utcYear","setUTCFullYear","src_utcYear","utcYears","localDate","H","L","utcDate","UTC","newYear","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","Q","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","U","formatWeekNumberSunday","V","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","locale_formatYear","formatFullYear","Z","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseYear","parseFullYear","parseZone","parseLiteralPercent","pads","charAt","newParse","newDate","week","day","utcFormat","utcParse","src_defaultLocale_locale","timeFormat","timeParse","-","0","numberRe","percentRe","requoteRe","locale_pad","requote","dow","defaultLocale_defaultLocale","isoFormat","toISOString","isoParse","time_durationSecond","time_durationMinute","time_durationHour","time_durationDay","time_durationWeek","durationMonth","durationYear","time_date","time_number","calendar","month","hour","minute","second","millisecond","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickIntervals","tickInterval","src_time","utcTime","sequential_transformer","k10","sequential_copy","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","diverging_transformer","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","src_colors","category10","Accent","Dark2","Paired","Pastel1","Pastel2","Set1","Set2","Set3","Tableau10","ramp","scheme","BrBG_scheme","BrBG","PRGn_scheme","PRGn","PiYG_scheme","PiYG","PuOr_scheme","PuOr","RdBu_scheme","RdBu","RdGy_scheme","RdGy","RdYlBu_scheme","RdYlBu","RdYlGn_scheme","RdYlGn","Spectral_scheme","Spectral","BuGn_scheme","BuGn","BuPu_scheme","BuPu","GnBu_scheme","GnBu","OrRd_scheme","OrRd","PuBuGn_scheme","PuBuGn","PuBu_scheme","PuBu","PuRd_scheme","PuRd","RdPu_scheme","RdPu","YlGnBu_scheme","YlGnBu","YlGn_scheme","YlGn","YlOrBr_scheme","YlOrBr","YlOrRd_scheme","YlOrRd","Blues_scheme","Blues","Greens_scheme","Greens","Greys_scheme","Greys","Purples_scheme","Purples","Reds_scheme","Reds","Oranges_scheme","Oranges","cividis","sequential_multi_cubehelix","warm","cool","rainbow_c","rainbow","ts","sinebow_c","pi_1_3","pi_2_3","sinebow","turbo","viridis_ramp","viridis","magma","inferno","plasma","d3_shape_src_constant","math_abs","math_atan2","src_math_cos","src_math_max","math_min","src_math_sin","math_sqrt","src_math_epsilon","d3_shape_src_math_pi","d3_shape_src_math_halfPi","d3_shape_src_math_tau","math_asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","D","cx0","cx1","dx0","dy0","dx1","dy1","src_arc","cornerRadius","padRadius","a01","a11","a10","da0","da1","ap","rp","rc0","rc1","oc","x32","y32","arc_intersect","bx","by","kc","lc","Linear","areaStart","areaEnd","curve_linear","point_x","point_y","src_line","defined","curve","defined0","d3_shape_src_area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","src_descending","d3_shape_src_identity","src_pie","pie","arcs","pa","curveRadialLinear","curveRadial","Radial","_curve","lineRadial","src_lineRadial","areaRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","pointRadial","d3_shape_src_array_slice","linkSource","linkTarget","link_link","curveHorizontal","curveVertical","link_curveRadial","p2","p3","linkHorizontal","linkVertical","linkRadial","symbol_circle","draw","symbol_cross","tan30","tan30_2","diamond","kr","star_kx","star_ky","star","square","sqrt3","triangle","wye_s","wye_k","wye_a","wye","symbols","src_symbol","d3_shape_src_noop","basis_point","Basis","curve_basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","curve_basisClosed","BasisOpen","basisOpen","Bundle","_basis","_beta","curve_bundle","bundle","cardinal_point","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","cardinalClosed","CardinalOpen","cardinalOpen","catmullRom_point","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","curve_catmullRom","catmullRom","CatmullRomClosed","catmullRomClosed","CatmullRomOpen","catmullRomOpen","LinearClosed","linearClosed","monotone_sign","slope3","h0","h1","slope2","monotone_point","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","_t0","px","py","natural","Step","_t","curve_step","stepBefore","stepAfter","offset_none","series","order_none","stackValue","src_stack","stack","oz","kz","sz","sij","ki","si","expand","offset_diverging","yn","silhouette","wiggle","s2","sij0","s3","appearance","peaks","peak","vi","vj","order_ascending","ascending_sum","order_descending","insideOut","tops","bottoms","order_reverse","d3_voronoi_src_constant","src_point_x","src_point_y","RedBlackTree","RedBlackNode","R","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","src_RedBlackTree","createEdge","edge","Diagram_edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","fm","fb","lx","ly","rx","ry","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","Diagram_epsilon2","ha","hc","Diagram_circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","Diagram_epsilon","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v01","v11","v10","clipCells","edges","triangles","_found","src_voronoi","voronoi","d3_zoom_src_constant","ZoomEvent","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","transform_identity","transform_transform","__zoom","src_noevent_nopropagation","d3_zoom_src_noevent","zoom_defaultFilter","zoom_defaultExtent","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","zoom_defaultTouchable","defaultConstrain","translateExtent","d3_zoom_src_zoom","touchstarting","constrain","wheelDelta","scaleExtent","touchDelay","wheelDelay","zoom","wheeled","dblclicked","__zooming","Gesture","taps","wheel","k1","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","translateBy","translateTo","__webpack_exports__","prettyNumber","sciNo","Number","suffixes","String","recurse","iteration","rhs","numNumerals","escapeHtml","escape","str","matchHtmlRegExp","prop","textWrap","words","word","lineNumber","tspan","getComputedTextLength","appendColumn","appendRow","_createNullList","_each","label","_createNullList2","default","newRow","col","selectColumn","len","_typeof","obj","iterator","ChartInternal","api","$$","config","getDefaultConfig","axes","Chart","internal","loadConfig","beforeInit","afterInit","bindThis","fn","argThis","AxisInternal","component","scaleLinear","innerTickSize","outerTickSize","withOuterTick","tickOffset","tickCulling","tickCentered","tickTextCharSize","tickTextRotate","tickLength","generateAxis","axisX","axisY","generateTicks","copyScale","newScale","isCategory","textFormatted","formatted","updateRange","rangeExtent","updateTickTextCharSize","box","isVertical","tspanData","splitted","tickMultiline","splitTickText","tickMultilineMax","ellipsify","subtext","spaceIndex","textWidth","tickText","maxWidth","tickWidth","substr","ellipsified","remaining","available","padEnd","updateTickLength","lineY2","tickPosition","textY","textTransform","textTextAnchor","tspanDx","tspanDy","tickTransform","tickX","tickY","scale0","__chart__","scale1","ticksValues","tickUpdate","lineUpdate","textUpdate","tspans","tspanEnter","tspanUpdate","pathUpdate","rangeBand","isCentered","getTotalLength","culling","CLASS","chart","chartLine","chartLines","chartBar","chartBars","chartText","chartTexts","chartArc","chartArcs","chartArcsTitle","chartArcsBackground","chartArcsGaugeUnit","chartArcsGaugeMax","chartArcsGaugeMin","selectedCircle","selectedCircles","eventRect","eventRects","eventRectsSingle","eventRectsMultiple","zoomRect","dragZoom","focused","defocused","region","regions","title","tooltipContainer","tooltipName","shape","shapes","bar","bars","arcLabelLine","areas","texts","gaugeValue","grid","gridLines","xgrid","xgrids","xgridLine","xgridLines","xgridFocus","ygrid","ygrids","ygridLine","ygridLines","colorScale","stanfordElements","stanfordLine","stanfordLines","stanfordRegion","stanfordRegions","stanfordText","stanfordTexts","axisXLabel","axisYLabel","axisY2","axisY2Label","legendBackground","legendItem","legendItemEvent","legendItemTile","legendItemHidden","legendItemFocused","dragarea","EXPANDED","SELECTED","INCLUDED","asHalfPixel","ceil10","diffDomain","getOption","options","defaultValue","isDefined","getPathBox","items","pathSegList","getItem","minX","minY","isEmpty","isString","isFunction","isUndefined","isValue","notEmpty","sanitise","Axis","owner","instance","Constructor","_classCallCheck","main","axis_x_inner","clipPathForXAxis","getTranslate","axis_x_show","axis_rotated","textAnchorForXAxisLabel","axis_y_inner","clipPathForYAxis","axis_y_show","textAnchorForYAxisLabel","axis_y2_show","textAnchorForY2AxisLabel","getXAxis","withoutTransition","withoutRotateTickText","axisParams","isCategorized","axis_x_tick_multiline","axis_x_tick_multilineMax","axis_x_tick_width","axis_x_tick_rotate","isTimeSeries","parseDate","axis_x_tick_centered","axis_x_tick_culling","updateXAxisTickValues","targets","axis_x_tick_fit","axis_x_tick_count","generateTickValues","mapTargetsToUniqueXs","xAxis","subXAxis","getYAxis","axis_y_tick_rotate","isTimeSeriesY","axis_y_tick_time_type","axis_y_tick_time_interval","getId","data_axes","getXAxisTickFormat","defaultAxisTimeFormat","categoryName","axis_x_tick_format","axisTimeFormat","getTickValues","getXAxisTickValues","axis_x_tick_values","getYAxisTickValues","axis_y_tick_values","yAxis","getY2AxisTickValues","axis_y2_tick_values","y2Axis","getLabelOptionByAxisId","axisId","option","axis_y_label","axis_y2_label","axis_x_label","getLabelText","setLabelText","getLabelPosition","defaultPosition","isInner","isOuter","isLeft","isCenter","isRight","isTop","isMiddle","isBottom","getXAxisLabelPosition","getYAxisLabelPosition","getY2AxisLabelPosition","getLabelPositionById","textForXAxisLabel","textForYAxisLabel","textForY2AxisLabel","xForAxisLabel","forHorizontal","dxForAxisLabel","textAnchorForAxisLabel","xForXAxisLabel","xForYAxisLabel","xForY2AxisLabel","dxForXAxisLabel","dxForYAxisLabel","dxForY2AxisLabel","dyForXAxisLabel","getMaxTickWidth","axis_x_height","dyForYAxisLabel","dyForY2AxisLabel","axis_y2_inner","withoutRecompute","targetsToShow","dummy","currentMaxTickWidths","filterTargetsToShow","getYDomain","yOrient","axis_y_tick_format","yAxisTickValues","y2Orient","axis_y2_tick_format","y2AxisTickValues","getXDomain","xOrient","xAxisTickFormat","xAxisTickValues","updateLabels","withTransition","getPadding","domainLength","convertPixelsToAxisPadding","pixels","tickCount","forTimeSeries","targetCount","tickValue","generateTransitions","axisSubX","subx","isHidden","version","generate","powerOfTen","initParams","data_url","convertUrlToData","data_mimeType","data_headers","data_keys","initWithData","data_json","convertJsonToData","data_rows","convertRowsToData","data_columns","convertColumnsToData","clipId","clipIdForXAxis","clipIdForYAxis","clipIdForGrid","clipIdForSubchart","clipPath","getClipPath","clipPathForGrid","clipPathForSubchart","dragStart","dragging","flowing","cancelClick","mouseover","transiting","generateColor","levelColor","generateLevelColor","dataTimeParse","data_xLocaltime","data_xFormat","axis_x_localtime","hiddenTargetIds","hiddenLegendIds","focusedTargetIds","defocusedTargetIds","subXOrient","isLegendRight","legend_position","isLegendInset","isLegendTop","legend_inset_anchor","isLegendLeft","legendStep","legendItemWidth","legendItemHeight","rotated_padding_left","rotated_padding_right","rotated_padding_top","withoutFadeIn","intervalForObserveInserted","initChartElements","initBar","initLine","initArc","initGauge","initText","defs","binding","bindto","selectChart","observeInserted","xs","convertDataToTargets","data_filter","data_hide","addHiddenTargetIds","mapToIds","legend_hide","addHiddenLegendIds","isStanfordGraphType","initStanfordData","updateSizes","updateScales","subX","subY","subY2","orgXDomain","onmouseover","onmouseout","svg_classname","clipChart","appendClip","clipXAxis","clipYAxis","clipGrid","clipSubchart","updateSvgSize","initPie","initDragZoom","initSubchart","initTooltip","initLegend","initTitle","initZoom","drawColorScale","initSubchartBrush","initRegion","initGrid","grid_lines_front","initGridLines","initStanfordElements","initEventRect","updateTargets","axis_x_selection","selectionAsValue","getDefaultSelection","updateDimension","oninit","withTransform","withUpdateXDomain","withUpdateOrgXDomain","withTransitionForAxis","bindResize","bindWindowFocus","element","smoothLines","el","legendHeight","legend","getLegendHeight","legendWidth","getLegendWidth","legendHeightForBottom","hasArc","hasArcType","xAxisHeight","getHorizontalAxisHeight","subchartHeight","subchart_show","subchart_size_height","currentWidth","getCurrentWidth","currentHeight","getCurrentHeight","margin","getCurrentPaddingTop","getCurrentPaddingRight","getCurrentPaddingBottom","getCurrentPaddingLeft","margin2","margin3","updateSizeForLegend","width2","height2","arcWidth","arcHeight","hasType","gauge_fullCircle","getGaugeLabelHeight","updateRadius","radiusExpanded","updateTargetsForText","updateTargetsForBar","updateTargetsForLine","updateTargetsForArc","updateTargetsForSubchart","showTargets","isTargetToShow","transition_duration","transitions","withY","withSubchart","withTransitionForExit","withTrimXDomain","withLegend","withEventRect","withDimension","withUpdateXAxis","drawArea","drawBar","drawLine","xForText","yForText","durationForExit","durationForAxis","transitionsToWait","waitForDraw","flow","intervalForCulling","xDomainForZoom","areaIndices","getShapeIndices","isAreaType","barIndices","isBarType","lineIndices","isLineType","hideAxis","xv","legend_show","updateLegend","updateXDomain","zoom_rescale","orgDomain","axis_y_tick_count","axis_y2_tick_count","axis_x_tick_culling_max","generateDrawArea","generateDrawBar","generateDrawLine","generateXYForText","updateCircleY","circleY","circleX","updateXgridFocus","data_empty_label_text","redrawEventRect","updateGrid","updateStanfordElements","updateRegion","updateBar","updateLine","updateArea","updateCircle","hasDataLabel","updateText","redrawTitle","redrawArc","redrawSubchart","generateFlow","isTabVisible","redrawBar","redrawLine","redrawArea","redrawCircle","redrawText","redrawRegion","redrawGrid","generateWait","onrendered","updateAndRedraw","withTransitionForTransform","transformAll","redrawWithoutRescale","axis_x_type","isCustomX","data_x","data_xs","axis_y_type","initialOpacity","initialOpacityForCircle","opacityForCircle","point_show","isStanfordType","isScatterType","opacityForText","xx","xvCustom","xyValue","axis_x_categories","yvCustom","yScale","yv","subxx","transformMain","transformContext","transformLegend","getXAxisClipX","getXAxisClipY","getXAxisClipWidth","getXAxisClipHeight","getYAxisClipX","getYAxisClipY","getYAxisClipWidth","getYAxisClipHeight","withoutAxis","observer","MutationObserver","mutations","mutation","disconnect","observe","attributes","childList","characterData","console","resizeFunction","generateResize","onresize","resize_auto","resizeTimeout","onresized","resizeIfElementDisplayed","offsetParent","attachEvent","wrapper","_this","windowFocusHandler","unbindWindowFocus","resizeFunctions","callResizeFunctions","endall","done","parsedDate","hidden","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","classname","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","SVGPathSegMovetoAbs","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","getPathSegAtLength","measurementElement","lastPathSegment","numberOfItems","removeItem","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributeFilter","_pathElementMutationObserver","_updateListFromPathMutations","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","hasPathMutations","record","attributeName","_writeListToPath","_pathSegArrayAsString","pathSeg","newItem","_checkValidIndex","insertItemBefore","replaceItem","item","appendItem","pathSegArray","Builder","appendSegment","Source","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","lookahead","_pathSegTypeFromChar","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","command","_parseNumber","integer","frac","expsign","startIntPartIndex","scanIntPartIndex","multiplier","_parseArcFlag","flag","flagChar","parseSegment","arcAngle","arcLarge","arcSweep","builder","targetLength","padString","repeat","labels","axis_x_max","axis_y_max","axis_y2_max","axis_x_min","axis_y_min","axis_y2_min","category","categories","size_width","size_height","flush","destroy","detachEvent","targetIds","shown","targetId","clearLegendItemTextBoxCache","updateDataAttributes","baseTarget","baseValue","diff","notfoundIds","orgDataCount","getMaxDataCount","tail","found","getOtherTargetX","missing","mainRegion","mainText","mainBar","mainLine","mainArea","mainCircle","flowIndex","flowLength","flowStart","getValueOnIndex","flowEnd","durationForFlow","wait","updateXGrid","hideXGridFocus","flowTransition","easeLinear","isRegionOnX","xgridAttr","regionX","regionWidth","focus","candidates","mapToTargetIds","selectorTargets","revert","defocus","expandArc","toggleFocusLegend","unexpandArc","showLegend","isLegendToShow","selectorLegends","grids","grid_x_lines","removeGridLines","grid_y_lines","data_groups","show","hide","hideLegend","load","addXs","classes","data_classes","data_colors","hasCaches","cacheIds","getCaches","unload","loadFromArgs","ids","selected","getTargetSelectorSuffix","indices","resetOther","data_selection_enabled","toggle","getToggle","isTargetId","data_selection_grouped","isTargetIndex","isSelected","data_selection_isselectable","unselect","removeHiddenTargetIds","filterByX","getMousePosition","tooltip_onshow","tooltip_onhide","transformTo","optionsForRedraw","setTargetType","updateTargetX","updateTargetXs","zoom_onzoom","enable","enabled","zoom_enabled","unzoom","zoom_x_max","zoom_x_min","orderFct","getOrderFunction","isOrderAsc","isOrderDesc","defaultSort","gauge_width","donut_width","gaugeArcWidth","gauge_arcs_minWidth","innerRadiusRatio","updateArc","svgArc","getSvgArc","svgArcExpanded","getSvgArcExpanded","svgArcExpandedSub","updateAngle","gMin","gMax","gTic","gValue","isGaugeType","gauge_min","gauge_max","gauge_startingAngle","hasGaugeType","singleArcWidth","withoutUpdate","updated","rate","expandWidth","getArc","isArcType","transformForArcLabel","hasGauge","donut_label_ratio","pie_label_ratio","getArcRatio","whole","convertToArcData","addName","textForArcLabel","shouldShowArcLabel","meetsArcLabelThreshold","getArcLabelFormat","defaultArcValueFormat","textForGaugeMinMax","isMax","getGaugeLabelExtents","shouldExpand","expandDuration","isDonutType","donut_expand_duration","gauge_expand_duration","isPieType","pie_expand_duration","donut_expand","gauge_expand","pie_expand","shouldShow","donut_label_show","pie_label_show","donut_label_threshold","pie_label_threshold","pie_label_format","gauge_label_format","donut_label_format","gauge_label_extents","getArcTitle","donut_title","mainPies","mainPieEnter","classChartArc","classArcs","classFocus","mainArc","arcLabelLines","mainArcLabelLine","arcData","classArc","interaction_enabled","_current","gauge_labelLine_show","lineLength","innerLineLength","lineAngle","linePositioningAngle","data_onmouseover","selectedData","showTooltip","revertLegend","hideTooltip","data_onmouseout","toggleShape","data_onclick","interpolated","backgroundArc","gauge_label_show","gauge_units","addCache","cloneTarget","generateTargetClass","generateClass","classText","classTexts","classShape","classShapes","classLine","classLines","classCircle","classCircles","classBar","classBars","classArea","classAreas","classRegion","classEvent","classTarget","additionalClassSuffix","additionalClass","classFocused","classDefocused","classChartText","classChartLine","classChartBar","selectorTarget","selectorLegend","isIE9","appVersion","URL","getAxisClipX","getAxisClipY","getAxisClipWidth","getAxisClipHeight","pattern","color_pattern","schemeCategory10","data_color","color_threshold","asValue","padding_left","padding_right","padding_top","padding_bottom","zoom_initialRange","zoom_type","zoom_disableDefaultBehavior","zoom_privileged","zoom_onzoomstart","zoom_onzoomend","interaction_brighten","data_epochs","data_xSort","data_idConverter","data_names","data_type","data_types","data_labels","data_order","data_regions","data_selection_multiple","data_selection_draggable","data_onselected","data_onunselected","subchart_axis_x_show","subchart_onbrush","legend_inset_x","legend_inset_y","legend_inset_step","legend_item_onclick","legend_item_onmouseover","legend_item_onmouseout","legend_equally","legend_padding","legend_item_tile_width","legend_item_tile_height","axis_x_tick_outer","axis_x_padding","axis_y_inverted","axis_y_center","axis_y_tick_outer","axis_y_padding","axis_y_default","axis_y2_inverted","axis_y2_center","axis_y2_tick_outer","axis_y2_padding","axis_y2_default","grid_x_show","grid_x_type","grid_y_show","grid_y_ticks","grid_focus_show","point_r","point_sensitivity","point_focus_expand_enabled","point_focus_expand_r","point_select_r","line_connectNull","line_step_type","bar_width","bar_width_ratio","bar_width_max","bar_zerobased","bar_space","area_zerobased","area_above","spline_interpolation_type","stanford_lines","stanford_regions","stanford_texts","stanford_scaleMin","stanford_scaleMax","stanford_scaleWidth","stanford_scaleFormat","stanford_scaleValues","stanford_colors","stanford_padding","tooltip_show","tooltip_grouped","tooltip_order","tooltip_format_title","tooltip_format_name","tooltip_format_value","tooltip_horizontal","tooltip_position","tooltip_contents","defaultTitleFormat","defaultValueFormat","getTooltipContent","tooltip_init_show","tooltip_init_x","tooltip_init_position","title_text","title_padding","title_position","additionalConfig","read","this_config","url","mimeType","headers","converter","convertXsvToData","catch","xsv","configurable","writable","_defineProperty","targetKeys","new_rows","new_row","findValueInJson","pathArray","newRows","appendXs","epochs","isX","isEpochs","isNotXAndNotEpochs","isNotX","xKey","getXKey","rawX","generateTargetX","getOtherTargetXs","getXValuesOfXKey","convertedId","id_org","returnData","hasNegativeValue","hasNegativeValueInTargets","hasPositiveValue","hasPositiveValueInTargets","dict","xValues","getXValue","idsForX","valueOnIndex","hasTarget","removeHiddenLegendIds","getValuesAsIdKeyed","ys","checkValueInTargets","checker","orderAsc","orderDesc","reducer","t1Sum","t2Sum","orderTargets","fct","filterRemoveNull","filterByXDomain","xDomain","getDataLabelLength","lengths","dataLabelFormat","isNoneArc","isArc","findClosestFromTargets","pos","findClosest","minDist","isWithinBar","horizontalDistance","dist","xIndex","yIndex","convertValuesToStep","converted","attrs","getYDomainMin","baseId","idsInGroup","getYDomainMax","yDomainAbs","isAllPositive","isAllNegative","targetsByAxisId","yTargets","yMin","yMax","yDomainMin","yDomainMax","isZeroBased","isInverted","showHorizontalDataLabel","showVerticalDataLabel","getXDomainMin","getXDomainMax","getXDomainPadding","maxDataCount","firstX","lastX","getTime","withTrim","updateScale","trimXDomain","zoomDomain","getZoomDomain","mx","my","maxX","_w","_h","isIncluded","isWithin","togglePoint","togglePath","dragstart","dragend","getYFormat","forArc","formatForY","yFormat","formatForY2","y2Format","defaultFormat","xgridData","generateGridData","xgridEnter","updateYGrid","gridValues","ygridEnter","gridTextAnchor","gridTextDx","xGridTextX","yGridTextX","xgridLineEnter","ygridLineEnter","showXGridFocus","dataToShow","focusEl","firstYear","lastYear","gridData","tickNum","getGridFilterToRemove","param","forX","toRemove","toShow","zoomTransform","mouseout","unexpandCircles","unexpandBars","sameXData","isScatterOrStanfordType","expandCircles","expandBars","isWithinShape","getYScale","initMouseEvent","legendItemTextBox","legendHasRendered","updateLegendWithDefaults","insetLegendPosition","updateLegendStep","updateLegendItemWidth","updateLegendItemHeight","opacityForLegend","opacityForUnfocusedLegend","xForLegend","xForLegendText","xForLegendRect","yForLegend","yForLegendText","yForLegendRect","x1ForLegendTile","x2ForLegendTile","yForLegendTile","rects","tiles","background","maxHeight","posMin","tileWidth","totalLength","offsets","widths","heights","margins","steps","updatePositions","textElement","maxLength","isLast","getTextRect","getTextBox","itemWidth","itemHeight","itemLength","areaLength","updateValues","withoutStep","mainRegionEnter","regionY","regionHeight","getScale","forTimeseries","scaleTime","getX","_scale","raw","getY","getSubYScale","forInit","xMin","xMax","subXMin","subXMax","subYMin","subYMax","selectPoint","pointSelectR","unselectPoint","selectPath","unselectPath","nodeName","isStepType","barData","mainBarEnter","getBarW","barTargetsNum","getBars","isSub","getPoints","generateGetBarPoints","indexX","indexY","__max__","barW","barX","getShapeX","barY","getShapeY","barOffset","getShapeOffset","barSpaceOffset","posX","posY","seg0","seg1","ex","ey","typeFilter","targetsNum","isWithinStep","isWithinCircle","getInterpolate","curveLinear","linear-closed","curveLinearClosed","curveBasis","basis-open","curveBasisOpen","basis-closed","curveBasisClosed","curveBundle","curveCardinal","cardinal-open","curveCardinalOpen","cardinal-closed","curveCardinalClosed","monotone","curveMonotoneX","curveStep","step-before","curveStepBefore","step-after","curveStepAfter","isSplineType","mainLines","mainLineEnter","lineData","generateGetLinePoints","yScaleGetter","xValue","yValue","lineWithRegions","lineTargetsNum","lineOffset","_regions","sWithRegion","dd","diffx2","xOffset","isWithinRegions","generateM","x_diff","xv0","xv1","mainAreaEnter","orgAreaOpacity","generateGetAreaPoints","getAreaBaseValue","areaTargetsNum","areaOffset","lineOrScatterOrStanfordData","mainCircleEnter","pointR","getStanfordPointColor","getCircles","pointExpandedR","d3_this","getParentWidth","getParentHeight","getTitlePadding","getAxisWidthByAxisId","legendWidthOnRight","getColorScalePadding","getParentRectValue","tagName","offsetWidth","getSvgLeft","hasLeftAxisRect","leftAxisClass","leftAxis","svgRect","chartRect","svgLeft","initBrush","redrawForBrush","updateExtent","visibility","contextLineEnter","contextLine","contextBarEnter","contextBar","updateBarForSubchart","redrawBarForSubchart","drawBarOnSub","updateLineForSubchart","redrawLineForSubchart","drawLineOnSub","updateAreaForSubchart","contextArea","contextAreaEnter","redrawAreaForSubchart","drawAreaOnSub","zoomIdentity","mainTextEnter","barOrLineData","forFlow","cls","font","getAreaPoints","getBarPoints","getLinePoints","getXForText","getYForText","xPos","yPos","isSafari","isChrome","xForTitle","yForTitle","barWidth","legendAxis","axisScale","inverseScale","scaleSequential","scaleLog","minEpochs","maxEpochs","xForColorScale","getBBox","compareEpochs","interpolateHslLong","colorscale","scaleSequentialLog","getCentroid","getRegionArea","getStanfordTooltipTitle","labelX","labelY","countEpochsInRegion","accumulator","currentValue","pointInRegion","percentage","stanfordLineEnter","stanfordRegionEnter","stanfordTextEnter","countPointsInRegion","content","getTooltipSortFunction","sortFunction","bgcolor","titleFormat","nameFormat","valueFormat","tooltipSortFunction","tooltipPosition","tWidth","tHeight","tooltipLeft","tooltipRight","tooltipTop","chartRight","positionFunction","ua","userAgent","startEvent","redrawForZoom","updateDomain","brushXPos","brushYPos","getZoomedDomain","dragZoomBrush","zoomedDomain","testObject","testString","del","_extend","Dataset","meta","arr","coords","colIndex","rowIndex","colResult","rowResult","selectRow","analyses","_parsers2","average","val","parseFloat","maximum","nums","minimum","getColumnAverage","getRowAverage","getColumnSum","getRowSum","getColumnMaximum","getRowMaximum","getColumnMinimum","getRowMinimum","getColumnLabel","getRowIndex","flatten","ob","toReturn","flatObject","stripHtmlTags","inputString","extendDeep","_ref","_ref$label","_ref$type","_toConsumableArray","className","_downloadResults2","_downloadResults","quality","domtoimage","toBlob","_fileSaver","saveAs","_domToImage","supportedFormats","includes","fileFormat","encodeURIComponent","csvContent","generateCsvContent","htmlElement","fileName","click","global","plugins","tooltips","updateThrottle","formatTooltip","vertical","progress","track","multiple","disabled","mouseAxis","trackSize","trackPos","lastPos","double","DocumentTouch","onInit","rangeable","defaultValues","render","initialised","tabIndex","controls","locked","limits","setLimits","setValue","onEnd","setValueFromPosition","getLimits","startValue","activeHandle","limit","getValue","onStart","recalculate","getHandle","events","stopValue","Event","keydown","stepUp","stepDown","activeElement","accuracy","nativeEvent","setPosition","onChange","native","getPosition","disable","scroll","form","unbind","replaceChild","_index","Dataviz","env","extendKeenGlobalObject","KeenDataviz","KeenDataset","Keen","keenGlobals","webpackKeenGlobals","_dataset","_stripHtmlTags","_extendDeep","defaultOptions","showDeprecationWarnings","showLoadingSpinner","containerElement","showTitle","subtitle","notes","theme","colorMapping","ui","executionMetadata","utils","clickToCopyToClipboard","indexBy","labelMapping","labelMappingRegExp","errorMapping","showErrorMessages","library","sortIntervals","results","stacked","dateFormat","alignment","textMaxLength","pagination","sensitivity","horizontal","draggable","onselected","_artifacts","prev","curr","_copyToClipboard2","partialIntervalIndicator","timezone","table","schema","renderOnVisible","funnel","resultValues","percents","countingMethod","decimals","marginBetweenElements","hover","effect3d","minimalSize","react","sparkline","choropleth","borders","showSlider","heatmap","_extends","palette","palettes","convertChartTypes","stacking","dataset","_prepared","_rendered","visuals","firstVisibilityState","visibilityState","setLabels","datavizInstance","_assertDateString2","updateRow","updateColumn","mapLabelsExec","valueAfterMatching","regExpAndLabel","mapLabels","labelMappingDimension","sortColumns","sortRows","areachart","barchart","columnchart","linechart","piechart","domReady","readyState","DOMContentLoaded","testDom","libraries","_libraries2","register","actions","method","visual","chartOptions","num","message","loader","spinner","_this2","firstResult","query","timeframe","timeframes","resultItem","resultTimeframe","timeframeItem","msg","deleteColumn","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","event_collection","analysis_type","ds2","err","return","returnValue","renderAsPromise","customCallback","shouldRenderExecutionMetadata","execution_metadata","shouldRenderDownloadBtn","buttons","download","mappedMsg","chart100percentWide","rangeChart","legendItemsAlign","buildDomWrapper","_renderDownloadBtn2","_renderExecutionMetadata2","IntersectionObserver","isIntersecting","visibilityChange","msHidden","webkitHidden","once","bool","exportImage","_ref2","_ref2$quality","_ref2$bgcolor","_exportSvg2","exportData","_exportData2","chartType","parseRawData","parseRequest","pkg","deleteRow","filterColumns","selectedColumn","filterRows","insertColumn","insertRow","_append","comp","head","cols","analysesUtilMethods","op","_analyses","lib","parsers","_flatten","_object","_createExtractionKeys","metric","res","grouped-metric","grouped-interval","double-grouped-metric","rowLabel","double-grouped-interval","extraction","datasetExtraction","datasetKeys","createExtractionKeys","tableConfig","resultKeys","keyName","iNames","valueAtDeepKey","heatmap-axis","heatmapDataset","objKeys","is","selectedParser","parserArgs","metadata","filters","group_by","display_name","analysis","getDefaultTitle","visualization","chart_type","getDefaultType","bindResizeListener","c3Chart","parentWidth","nextSiblingWidth","Funnel","funnel-3d","Funnel3d","horizontal-funnel","HorizontalFunnel","horizontal-funnel-3d","HorizontalFunnel3d","metric-combo","MetricCombo","Heatmap","Choropleth","getPaddings","paddingName","ENFORCED_OPTIONS","renderingElement","offsetHeight","titleElement","subtitleElement","notesElement","DEFAULT_OPTIONS","sumArray","_calculatePercents","calculateSumForPercents","calculatePercents","_calculateRange2","clearOnRender","_datasetMeta$type","spliceFrom","removeLegend","rotated","_defaultDateFormat2","legendElement","partialResultsRegion","class","contents","c3TooltipContents","valueFormatted","scope","c3options","c3PaginatingLegend","onLegendRendered","onPaginated","defineC3","startDate","endDate","timeDiff","ms","domNode","legendConfig","dataColumnsSorted","columnData","paginateHorizontalLeftElement","legendItemsElement","paginateVerticalElement","paginateHorizontalRightElement","paginateData","labelShortened","chartPartId","legendItemColorSample","prepend","tooltipElement","arrowUp","arrowDown","paginate","clearSelectedText","getSelection","removeAllRanges","_assertDateString","_escapeHtml","outer","inner","titleContainer","subtitleContainer","notesContainer","currentTarget","previousElementSibling","util","parseExtension","extension","WOFF","woff","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","dataAsUrl","isDataUrl","search","canvasToBlob","canvas","binaryString","atob","toDataURL","binaryArray","Uint8Array","Blob","resolveUrl","baseUrl","doc","implementation","createHTMLDocument","href","getAndEncode","TIMEOUT","impl","cacheBust","request","XMLHttpRequest","onreadystatechange","fail","encoder","FileReader","onloadend","readAsDataURL","ontimeout","responseType","open","send","imagePlaceholder","uid","arg","asArray","arrayLike","escapeXhtml","makeImage","leftBorder","rightBorder","scrollWidth","topBorder","bottomBorder","scrollHeight","styleProperty","newUtil","inliner","URL_REGEX","inlineAll","shouldProcess","readUrls","urls","inline","dataUrl","urlAsRegex","newInliner","fontFaces","resolveAll","readAll","webFonts","all","webFont","cssStrings","styleSheets","cssRules","sheet","rule","CSSRule","FONT_FACE_RULE","rules","newWebFont","webFontRule","parentStyleSheet","cssText","newFontFaces","images","Element","inlined","getPropertyPriority","inlineBackground","HTMLImageElement","newImage","childNodes","newImages","toSvg","toPng","toJpeg","toPixelData","getContext","getImageData","copyOptions","HTMLCanvasElement","original","childClone","cloneChildrenInOrder","cloneChildren","copyProperties","styleElement","formatCssText","formatCssProperties","createTextNode","formatPseudoElementStyle","clonePseudoElement","HTMLTextAreaElement","HTMLInputElement","SVGRectElement","attribute","processClone","embedFonts","inlineImages","XMLSerializer","serializeToString","foreignObject","makeSvgDataUri","ctx","fillStyle","fillRect","newCanvas","drawImage","makeNodeCopy","copyStyle","cloneStyle","clonePseudoElements","formatProperty","copyUserInput","fixSvg","styleNode","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","MouseEvent","HTMLAnchorElement","webkitURL","rel","origin","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","autoBom","warn","HTMLElement","safari","_prettyNumber","_copyToClipboard","opts","prevValue","formattedNum","flexDifferenceStyle","resultDifference","differenceStyle","smallerValue","_config","previousResults","isExtraction","comparedProp","formattedResult","itemProp","acc","formatExtractionData","resultClassName","previousResultsClassName","currentPage","_generateTableRows","customConfig","page","arrows","datasetPaginated","pages","columnsArray","colNamesToMap","_datavizInstance$conf","mapValues","mapDates","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_slicedToArray","rowColValue","rowColValueEscaped","pageNumber","prevPage","nextPage","fieldNumber","columnNames","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","colName","colNameEscaped","_generateTableHeader","sortOrder","sortOrderNumber","nameA","nameB","attachBtnEventListeners","btn","tableClass","_e$target","_svgTextWrap","_config$funnel","_config$funnel$percen","marginBetweenSteps","yMarginElement","funnelContainer","svgWidth","svgHeight","elemHeight","prevElemWidth","minimalSizeStep","newPoints","handleMouseOver","polygonsHover","labelHover","thisLabel","handleMouseOut","shadowCut","polygonsShadows","polygons3d","xMarginElement","elemWidth","prevElemHeight","metricResults","prevResult","percentDifference","labelClass","iconClass","containerTitle","containerSubtitle","chartRoot","currentCount","_config$heatmap","simpleTooltip","heatmapContainer","containerWidth","containerHeight","chartContainer","xLabel","yLabel","formattedData","timestamp","refValue","minRange","maxRange","getColor","baseColor","getColorAlpha","getTileColor","solidColor","bg","convertRGBAtoRGB","Rangeable","_data","handleSliderChange","containerToString","customStyle","scriptRef","getAxisLabelRatio","labelSize","scaleBand","chartTooltip","tooltipContent","_config$choropleth","_config$choropleth$bo","choroplethContainer","heightChanges","onlyValues","minVal","maxVal","lightColor","darkColor","elementName","geoMercator","geoAlbersUsa","geoPath","usData","theOne","properties","dataList","dt","handleCopyToClipboard","removeClassWithTimeOut","autocollector","modern","dracula"],"mappings":"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yDACA,+DACA,sEACA7I,IAAM0zE,IAESkB,GAAAP,GAAKM,ICZTE,GAAM,IAAAx5E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAESoB,GAAAT,GAAKQ,ICZTE,GAAM,IAAA15E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAESsB,GAAAX,GAAKU,ICZTE,GAAM,IAAA55E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAESwB,GAAAb,GAAKY,ICZTE,GAAM,IAAA95E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAES0B,GAAAf,GAAKc,ICZTE,GAAM,IAAAh6E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAES4B,GAAAjB,GAAKgB,ICZTE,GAAM,IAAAl6E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA7I,IAAM0zE,IAES8B,GAAAnB,GAAKkB,ICZTE,GAAM,IAAAp6E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA7I,IAAM0zE,IAESgC,GAAArB,GAAKoB,ICVTE,GAAM,IAAAt6E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA7I,IAAM0zE,IAESkC,GAAAvB,GAAKsB,ICVTE,GAAM,IAAAx6E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA7I,IAAM0zE,IAESoC,GAAAzB,GAAKwB,ICVTE,GAAM,IAAA16E,MAAA,GAAAwN,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA7I,IAAM0zE,IAESsC,GAA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","file":"keen-dataviz.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 21);\n","export function each(o, cb, s) {\n var n;\n if (!o) {\n return 0;\n }\n s = !s ? o : s;\n if (o instanceof Array) {\n // Indexed arrays, needed for Safari\n for (n = 0; n < o.length; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n // Hashtables\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false){\n return 0;\n }\n }\n }\n }\n return 1;\n}\n","function stickTooltip(event, tooltip) {\n tooltip.style.opacity = 0;\n tooltip.style.top = `${event.pageY}px`;\n tooltip.style.left = `${event.pageX + 10}px`;\n}\n\nexport default function copyToClipboard(value, event) {\n const placeholder = document.createElement('input');\n placeholder.value = value;\n document.body.appendChild(placeholder);\n placeholder.select();\n document.execCommand('copy');\n document.body.removeChild(placeholder);\n\n if (event) {\n const notification = document.createElement('div');\n notification.style.padding = '5px 10px';\n notification.style.backgroundColor = '#ffffff';\n notification.style.fontSize = '12px';\n notification.style.position = 'absolute';\n notification.style.top = `${event.pageY}px`;\n notification.style.left = `${event.pageX + 10}px`;\n notification.style.zIndex = '999';\n notification.style.opacity = 1;\n notification.style.transition = 'opacity 1s ease';\n notification.innerText = 'copied!';\n\n document.body.appendChild(notification);\n document.addEventListener('mousemove', e => stickTooltip(e, notification));\n\n setTimeout(() => {\n notification.style.opacity = 1;\n document.body.removeChild(notification);\n }, 1000);\n }\n}\n","export var name = \"d3\";\nexport var version = \"5.11.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {Timer, now} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {tweenValue} from \"./tween\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\nimport transition_end from \"./end\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i(t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i(t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {get, init} from \"./schedule\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","export function expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nexport function expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","var tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index\";\nimport schedule from \"../transition/schedule\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index\";\nimport {SCHEDULED} from \"./transition/schedule\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(brush, \"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n return (!clean && that.__brush.emitter) || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/.test(value)) value = new Date(value);\n else continue;\n object[key] = value;\n }\n return object;\n}\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipRejoin from \"./rejoin\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","import clipRectangle from \"./rectangle\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains\";\nimport {default as distance} from \"./distance\";\nimport {epsilon2, radians} from \"./math\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","export default function(x) {\n return x;\n}\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, // clip extent\n postclip = identity,\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n },\n postclip: function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n },\n clipExtent: function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n },\n fitWidth: function(width, object) {\n return fitWidth(projection, width, object);\n },\n fitHeight: function(height, object) {\n return fitHeight(projection, height, object);\n }\n };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count\";\nimport node_each from \"./each\";\nimport node_eachBefore from \"./eachBefore\";\nimport node_eachAfter from \"./eachAfter\";\nimport node_sum from \"./sum\";\nimport node_sort from \"./sort\";\nimport node_path from \"./path\";\nimport node_ancestors from \"./ancestors\";\nimport node_descendants from \"./descendants\";\nimport node_leaves from \"./leaves\";\nimport node_links from \"./links\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings\";\nimport {optional} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round\";\nimport treemapDice from \"./treemap/dice\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors\";\nimport {Node, computeHeight} from \"./hierarchy/index\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round\";\nimport squarify from \"./squarify\";\nimport {required} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice\";\nimport slice from \"./slice\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\nimport {phi, squarifyRatio} from \"./squarify\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport line from \"./line\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant\";\nimport descending from \"./descending\";\nimport identity from \"./identity\";\nimport {tau} from \"./math\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial\";\nimport line from \"./line\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial\";\nimport area from \"./area\";\nimport {lineRadial} from \"./lineRadial\"\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array\";\nimport constant from \"../constant\";\nimport {x as pointX, y as pointY} from \"../point\";\nimport pointRadial from \"../pointRadial\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle\";\nimport cross from \"./symbol/cross\";\nimport diamond from \"./symbol/diamond\";\nimport star from \"./symbol/star\";\nimport square from \"./symbol/square\";\nimport triangle from \"./symbol/triangle\";\nimport wye from \"./symbol/wye\";\nimport constant from \"./constant\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop\";\nimport {point} from \"./basis\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport offsetNone from \"./offset/none\";\nimport orderNone from \"./order/none\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = yp;\n }\n }\n }\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance\";\nimport {sum} from \"./ascending\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","export {version} from \"./dist/package.js\";\nexport * from \"d3-array\";\nexport * from \"d3-axis\";\nexport * from \"d3-brush\";\nexport * from \"d3-chord\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-contour\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-fetch\";\nexport * from \"d3-force\";\nexport * from \"d3-format\";\nexport * from \"d3-geo\";\nexport * from \"d3-hierarchy\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-path\";\nexport * from \"d3-polygon\";\nexport * from \"d3-quadtree\";\nexport * from \"d3-random\";\nexport * from \"d3-scale\";\nexport * from \"d3-scale-chromatic\";\nexport * from \"d3-selection\";\nexport * from \"d3-shape\";\nexport * from \"d3-time\";\nexport * from \"d3-time-format\";\nexport * from \"d3-timer\";\nexport * from \"d3-transition\";\nexport * from \"d3-voronoi\";\nexport * from \"d3-zoom\";\n","export function prettyNumber(input) {\n // If it has 3 or fewer sig figs already, just return the number.\n var input = Number(input),\n sciNo = input.toPrecision(3),\n prefix = '',\n suffixes = ['', 'k', 'M', 'B', 'T'];\n\n if (Number(sciNo) == input && String(input).length <= 4) {\n return String(input);\n }\n\n if (Math.abs(input) >= 1000000000000000) {\n return sciNo;\n }\n\n if (input >= 1 || input <= -1) {\n if (input < 0){\n //Pull off the negative side and stash that.\n input = -input;\n prefix = '-';\n }\n return prefix + recurse(input, 0);\n }\n else {\n return input.toPrecision(3);\n }\n\n function recurse(input, iteration) {\n var input = String(input);\n var split = input.split('.');\n // If there's a dot\n if (split.length > 1) {\n // Keep the left hand side only\n input = split[0];\n var rhs = split[1];\n // If the left-hand side is too short, pad until it has 3 digits\n if (input.length == 2 && rhs.length > 0) {\n // Pad with right-hand side if possible\n if (rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n else if (input.length == 1 && rhs.length > 0) {\n input = input + '.' + rhs.charAt(0);\n // Pad with right-hand side if possible\n if (rhs.length > 1) {\n input += rhs.charAt(1);\n }\n // Pad with zeroes if you must\n else {\n input += '0';\n }\n }\n }\n var numNumerals = input.length;\n // if it has a period, then numNumerals is 1 smaller than the string length:\n if (input.split('.').length > 1) {\n numNumerals--;\n }\n if (numNumerals <= 3) {\n return String(input) + suffixes[iteration];\n }\n else {\n return recurse(Number(input) / 1000, iteration + 1);\n }\n }\n}\n","const matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nexport function escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n for (var prop in arguments[i]){\n target[prop] = arguments[i][prop];\n }\n }\n return target;\n}\n","import * as d3 from 'd3';\n\nexport function textWrap(text, width) {\n text.each(function () {\n let text = d3.select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.1, // ems\n x = text.attr(\"x\"),\n y = text.attr(\"y\"),\n dy = 0, //parseFloat(text.attr(\"dy\")),\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\");\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n .text(word);\n }\n }\n });\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import createNullList from '../utils/create-null-list';\nimport { each } from '../../utils/each';\n\nexport function appendColumn(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n self.matrix[0].push(label);\n each(self.matrix, function(row, i) {\n let cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].push(cell);\n }\n });\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat(createNullList(self.matrix.length - 1 - input.length));\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String(self.matrix.length));\n }\n });\n }\n\n self.matrix[0].push(label);\n each(input, function(value, i){\n self.matrix[i+1][self.matrix[0].length-1] = value;\n });\n\n }\n\n return self;\n}\n\nexport function appendRow(str, input) {\n const self = this;\n const args = Array.prototype.slice.call(arguments, 2);\n const label = (str !== undefined) ? str : null;\n const newRow = [];\n\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i){\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.push(newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length));\n }\n });\n }\n\n self.matrix.push(newRow.concat(input));\n }\n\n return self;\n}\n","export default function (len) {\n const list = [];\n for (let i = 0; i < len; i++) {\n list.push(null);\n }\n return list;\n}\n","/* @license C3.js v0.7.2 | (c) C3 Team and other contributors | http://c3js.org/ */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.c3 = factory());\n}(this, function () { 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function ChartInternal(api) {\n var $$ = this;\n $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n $$.api = api;\n $$.config = $$.getDefaultConfig();\n $$.data = {};\n $$.cache = {};\n $$.axes = {};\n }\n\n /**\n * The Chart class\n *\n * The methods of this class is the public APIs of the chart object.\n */\n\n function Chart(config) {\n this.internal = new ChartInternal(this);\n this.internal.loadConfig(config);\n this.internal.beforeInit(config);\n this.internal.init();\n this.internal.afterInit(config); // bind \"this\" to nested API\n\n (function bindThis(fn, target, argThis) {\n Object.keys(fn).forEach(function (key) {\n target[key] = fn[key].bind(argThis);\n\n if (Object.keys(fn[key]).length > 0) {\n bindThis(fn[key], target[key], argThis);\n }\n });\n })(Chart.prototype, this, this);\n }\n\n function AxisInternal(component, params) {\n var internal = this;\n internal.component = component;\n internal.params = params || {};\n internal.d3 = component.d3;\n internal.scale = internal.d3.scaleLinear();\n internal.range;\n internal.orient = \"bottom\";\n internal.innerTickSize = 6;\n internal.outerTickSize = this.params.withOuterTick ? 6 : 0;\n internal.tickPadding = 3;\n internal.tickValues = null;\n internal.tickFormat;\n internal.tickArguments;\n internal.tickOffset = 0;\n internal.tickCulling = true;\n internal.tickCentered;\n internal.tickTextCharSize;\n internal.tickTextRotate = internal.params.tickTextRotate;\n internal.tickLength;\n internal.axis = internal.generateAxis();\n }\n\n AxisInternal.prototype.axisX = function (selection, x, tickOffset) {\n selection.attr(\"transform\", function (d) {\n return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n });\n };\n\n AxisInternal.prototype.axisY = function (selection, y) {\n selection.attr(\"transform\", function (d) {\n return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n });\n };\n\n AxisInternal.prototype.scaleExtent = function (domain) {\n var start = domain[0],\n stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n };\n\n AxisInternal.prototype.generateTicks = function (scale) {\n var internal = this;\n var i,\n domain,\n ticks = [];\n\n if (scale.ticks) {\n return scale.ticks.apply(scale, internal.tickArguments);\n }\n\n domain = scale.domain();\n\n for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n ticks.push(i);\n }\n\n if (ticks.length > 0 && ticks[0] > 0) {\n ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n }\n\n return ticks;\n };\n\n AxisInternal.prototype.copyScale = function () {\n var internal = this;\n var newScale = internal.scale.copy(),\n domain;\n\n if (internal.params.isCategory) {\n domain = internal.scale.domain();\n newScale.domain([domain[0], domain[1] - 1]);\n }\n\n return newScale;\n };\n\n AxisInternal.prototype.textFormatted = function (v) {\n var internal = this,\n formatted = internal.tickFormat ? internal.tickFormat(v) : v;\n return typeof formatted !== 'undefined' ? formatted : '';\n };\n\n AxisInternal.prototype.updateRange = function () {\n var internal = this;\n internal.range = internal.scale.rangeExtent ? internal.scale.rangeExtent() : internal.scaleExtent(internal.scale.range());\n return internal.range;\n };\n\n AxisInternal.prototype.updateTickTextCharSize = function (tick) {\n var internal = this;\n\n if (internal.tickTextCharSize) {\n return internal.tickTextCharSize;\n }\n\n var size = {\n h: 11.5,\n w: 5.5\n };\n tick.select('text').text(function (d) {\n return internal.textFormatted(d);\n }).each(function (d) {\n var box = this.getBoundingClientRect(),\n text = internal.textFormatted(d),\n h = box.height,\n w = text ? box.width / text.length : undefined;\n\n if (h && w) {\n size.h = h;\n size.w = w;\n }\n }).text('');\n internal.tickTextCharSize = size;\n return size;\n };\n\n AxisInternal.prototype.isVertical = function () {\n return this.orient === 'left' || this.orient === 'right';\n };\n\n AxisInternal.prototype.tspanData = function (d, i, scale) {\n var internal = this;\n var splitted = internal.params.tickMultiline ? internal.splitTickText(d, scale) : [].concat(internal.textFormatted(d));\n\n if (internal.params.tickMultiline && internal.params.tickMultilineMax > 0) {\n splitted = internal.ellipsify(splitted, internal.params.tickMultilineMax);\n }\n\n return splitted.map(function (s) {\n return {\n index: i,\n splitted: s,\n length: splitted.length\n };\n });\n };\n\n AxisInternal.prototype.splitTickText = function (d, scale) {\n var internal = this,\n tickText = internal.textFormatted(d),\n maxWidth = internal.params.tickWidth,\n subtext,\n spaceIndex,\n textWidth,\n splitted = [];\n\n if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n return tickText;\n }\n\n if (!maxWidth || maxWidth <= 0) {\n maxWidth = internal.isVertical() ? 95 : internal.params.isCategory ? Math.ceil(scale(1) - scale(0)) - 12 : 110;\n }\n\n function split(splitted, text) {\n spaceIndex = undefined;\n\n for (var i = 1; i < text.length; i++) {\n if (text.charAt(i) === ' ') {\n spaceIndex = i;\n }\n\n subtext = text.substr(0, i + 1);\n textWidth = internal.tickTextCharSize.w * subtext.length; // if text width gets over tick width, split by space index or crrent index\n\n if (maxWidth < textWidth) {\n return split(splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), text.slice(spaceIndex ? spaceIndex + 1 : i));\n }\n }\n\n return splitted.concat(text);\n }\n\n return split(splitted, tickText + \"\");\n };\n\n AxisInternal.prototype.ellipsify = function (splitted, max) {\n if (splitted.length <= max) {\n return splitted;\n }\n\n var ellipsified = splitted.slice(0, max);\n var remaining = 3;\n\n for (var i = max - 1; i >= 0; i--) {\n var available = ellipsified[i].length;\n ellipsified[i] = ellipsified[i].substr(0, available - remaining).padEnd(available, '.');\n remaining -= available;\n\n if (remaining <= 0) {\n break;\n }\n }\n\n return ellipsified;\n };\n\n AxisInternal.prototype.updateTickLength = function () {\n var internal = this;\n internal.tickLength = Math.max(internal.innerTickSize, 0) + internal.tickPadding;\n };\n\n AxisInternal.prototype.lineY2 = function (d) {\n var internal = this,\n tickPosition = internal.scale(d) + (internal.tickCentered ? 0 : internal.tickOffset);\n return internal.range[0] < tickPosition && tickPosition < internal.range[1] ? internal.innerTickSize : 0;\n };\n\n AxisInternal.prototype.textY = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1) : internal.tickLength;\n };\n\n AxisInternal.prototype.textTransform = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? \"rotate(\" + rotate + \")\" : \"\";\n };\n\n AxisInternal.prototype.textTextAnchor = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? rotate > 0 ? \"start\" : \"end\" : \"middle\";\n };\n\n AxisInternal.prototype.tspanDx = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 8 * Math.sin(Math.PI * (rotate / 180)) : 0;\n };\n\n AxisInternal.prototype.tspanDy = function (d, i) {\n var internal = this,\n dy = internal.tickTextCharSize.h;\n\n if (i === 0) {\n if (internal.isVertical()) {\n dy = -((d.length - 1) * (internal.tickTextCharSize.h / 2) - 3);\n } else {\n dy = \".71em\";\n }\n }\n\n return dy;\n };\n\n AxisInternal.prototype.generateAxis = function () {\n var internal = this,\n d3 = internal.d3,\n params = internal.params;\n\n function axis(g, transition) {\n var self;\n g.each(function () {\n var g = axis.g = d3.select(this);\n var scale0 = this.__chart__ || internal.scale,\n scale1 = this.__chart__ = internal.copyScale();\n var ticksValues = internal.tickValues ? internal.tickValues : internal.generateTicks(scale1),\n ticks = g.selectAll(\".tick\").data(ticksValues, scale1),\n tickEnter = ticks.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n tickExit = ticks.exit().remove(),\n tickUpdate = ticks.merge(tickEnter),\n tickTransform,\n tickX,\n tickY;\n\n if (params.isCategory) {\n internal.tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n tickX = internal.tickCentered ? 0 : internal.tickOffset;\n tickY = internal.tickCentered ? internal.tickOffset : 0;\n } else {\n internal.tickOffset = tickX = 0;\n }\n\n internal.updateRange();\n internal.updateTickLength();\n internal.updateTickTextCharSize(g.select('.tick'));\n var lineUpdate = tickUpdate.select(\"line\").merge(tickEnter.append(\"line\")),\n textUpdate = tickUpdate.select(\"text\").merge(tickEnter.append(\"text\"));\n var tspans = tickUpdate.selectAll('text').selectAll('tspan').data(function (d, i) {\n return internal.tspanData(d, i, scale1);\n }),\n tspanEnter = tspans.enter().append('tspan'),\n tspanUpdate = tspanEnter.merge(tspans).text(function (d) {\n return d.splitted;\n });\n tspans.exit().remove();\n var path = g.selectAll(\".domain\").data([0]),\n pathUpdate = path.enter().append(\"path\").merge(path).attr(\"class\", \"domain\"); // TODO: each attr should be one function and change its behavior by internal.orient, probably\n\n switch (internal.orient) {\n case \"bottom\":\n {\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return internal.textY(d, i);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + internal.outerTickSize);\n break;\n }\n\n case \"top\":\n {\n // TODO: rotated tick text\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return -1 * internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return -1 * internal.textY(d, i) - (params.isCategory ? 2 : internal.tickLength - 2);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + -internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + -internal.outerTickSize);\n break;\n }\n\n case \"left\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", -internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", -internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"end\");\n tspanUpdate.attr('x', -internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + -internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + -internal.outerTickSize);\n break;\n }\n\n case \"right\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"start\");\n tspanUpdate.attr('x', internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + internal.outerTickSize);\n break;\n }\n }\n\n if (scale1.rangeBand) {\n var x = scale1,\n dx = x.rangeBand() / 2;\n\n scale0 = scale1 = function scale1(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, internal.tickOffset);\n }\n\n tickEnter.call(tickTransform, scale0, internal.tickOffset);\n self = (transition ? tickUpdate.transition(transition) : tickUpdate).style('opacity', 1).call(tickTransform, scale1, internal.tickOffset);\n });\n return self;\n }\n\n axis.scale = function (x) {\n if (!arguments.length) {\n return internal.scale;\n }\n\n internal.scale = x;\n return axis;\n };\n\n axis.orient = function (x) {\n if (!arguments.length) {\n return internal.orient;\n }\n\n internal.orient = x in {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n } ? x + \"\" : \"bottom\";\n return axis;\n };\n\n axis.tickFormat = function (format) {\n if (!arguments.length) {\n return internal.tickFormat;\n }\n\n internal.tickFormat = format;\n return axis;\n };\n\n axis.tickCentered = function (isCentered) {\n if (!arguments.length) {\n return internal.tickCentered;\n }\n\n internal.tickCentered = isCentered;\n return axis;\n };\n\n axis.tickOffset = function () {\n return internal.tickOffset;\n };\n\n axis.tickInterval = function () {\n var interval, length;\n\n if (params.isCategory) {\n interval = internal.tickOffset * 2;\n } else {\n length = axis.g.select('path.domain').node().getTotalLength() - internal.outerTickSize * 2;\n interval = length / axis.g.selectAll('line').size();\n }\n\n return interval === Infinity ? 0 : interval;\n };\n\n axis.ticks = function () {\n if (!arguments.length) {\n return internal.tickArguments;\n }\n\n internal.tickArguments = arguments;\n return axis;\n };\n\n axis.tickCulling = function (culling) {\n if (!arguments.length) {\n return internal.tickCulling;\n }\n\n internal.tickCulling = culling;\n return axis;\n };\n\n axis.tickValues = function (x) {\n if (typeof x === 'function') {\n internal.tickValues = function () {\n return x(internal.scale.domain());\n };\n } else {\n if (!arguments.length) {\n return internal.tickValues;\n }\n\n internal.tickValues = x;\n }\n\n return axis;\n };\n\n return axis;\n };\n\n var CLASS = {\n target: 'c3-target',\n chart: 'c3-chart',\n chartLine: 'c3-chart-line',\n chartLines: 'c3-chart-lines',\n chartBar: 'c3-chart-bar',\n chartBars: 'c3-chart-bars',\n chartText: 'c3-chart-text',\n chartTexts: 'c3-chart-texts',\n chartArc: 'c3-chart-arc',\n chartArcs: 'c3-chart-arcs',\n chartArcsTitle: 'c3-chart-arcs-title',\n chartArcsBackground: 'c3-chart-arcs-background',\n chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n selectedCircle: 'c3-selected-circle',\n selectedCircles: 'c3-selected-circles',\n eventRect: 'c3-event-rect',\n eventRects: 'c3-event-rects',\n eventRectsSingle: 'c3-event-rects-single',\n eventRectsMultiple: 'c3-event-rects-multiple',\n zoomRect: 'c3-zoom-rect',\n brush: 'c3-brush',\n dragZoom: 'c3-drag-zoom',\n focused: 'c3-focused',\n defocused: 'c3-defocused',\n region: 'c3-region',\n regions: 'c3-regions',\n title: 'c3-title',\n tooltipContainer: 'c3-tooltip-container',\n tooltip: 'c3-tooltip',\n tooltipName: 'c3-tooltip-name',\n shape: 'c3-shape',\n shapes: 'c3-shapes',\n line: 'c3-line',\n lines: 'c3-lines',\n bar: 'c3-bar',\n bars: 'c3-bars',\n circle: 'c3-circle',\n circles: 'c3-circles',\n arc: 'c3-arc',\n arcLabelLine: 'c3-arc-label-line',\n arcs: 'c3-arcs',\n area: 'c3-area',\n areas: 'c3-areas',\n empty: 'c3-empty',\n text: 'c3-text',\n texts: 'c3-texts',\n gaugeValue: 'c3-gauge-value',\n grid: 'c3-grid',\n gridLines: 'c3-grid-lines',\n xgrid: 'c3-xgrid',\n xgrids: 'c3-xgrids',\n xgridLine: 'c3-xgrid-line',\n xgridLines: 'c3-xgrid-lines',\n xgridFocus: 'c3-xgrid-focus',\n ygrid: 'c3-ygrid',\n ygrids: 'c3-ygrids',\n ygridLine: 'c3-ygrid-line',\n ygridLines: 'c3-ygrid-lines',\n colorScale: 'c3-colorscale',\n stanfordElements: 'c3-stanford-elements',\n stanfordLine: 'c3-stanford-line',\n stanfordLines: 'c3-stanford-lines',\n stanfordRegion: 'c3-stanford-region',\n stanfordRegions: 'c3-stanford-regions',\n stanfordText: 'c3-stanford-text',\n stanfordTexts: 'c3-stanford-texts',\n axis: 'c3-axis',\n axisX: 'c3-axis-x',\n axisXLabel: 'c3-axis-x-label',\n axisY: 'c3-axis-y',\n axisYLabel: 'c3-axis-y-label',\n axisY2: 'c3-axis-y2',\n axisY2Label: 'c3-axis-y2-label',\n legendBackground: 'c3-legend-background',\n legendItem: 'c3-legend-item',\n legendItemEvent: 'c3-legend-item-event',\n legendItemTile: 'c3-legend-item-tile',\n legendItemHidden: 'c3-legend-item-hidden',\n legendItemFocused: 'c3-legend-item-focused',\n dragarea: 'c3-dragarea',\n EXPANDED: '_expanded_',\n SELECTED: '_selected_',\n INCLUDED: '_included_'\n };\n\n var asHalfPixel = function asHalfPixel(n) {\n return Math.ceil(n) + 0.5;\n };\n var ceil10 = function ceil10(v) {\n return Math.ceil(v / 10) * 10;\n };\n var diffDomain = function diffDomain(d) {\n return d[1] - d[0];\n };\n var getOption = function getOption(options, key, defaultValue) {\n return isDefined(options[key]) ? options[key] : defaultValue;\n };\n var getPathBox = function getPathBox(path) {\n var box = path.getBoundingClientRect(),\n items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n minX = items[0].x,\n minY = Math.min(items[0].y, items[1].y);\n return {\n x: minX,\n y: minY,\n width: box.width,\n height: box.height\n };\n };\n var hasValue = function hasValue(dict, value) {\n var found = false;\n Object.keys(dict).forEach(function (key) {\n if (dict[key] === value) {\n found = true;\n }\n });\n return found;\n };\n var isArray = function isArray(o) {\n return Array.isArray(o);\n };\n var isDefined = function isDefined(v) {\n return typeof v !== 'undefined';\n };\n var isEmpty = function isEmpty(o) {\n return typeof o === 'undefined' || o === null || isString(o) && o.length === 0 || _typeof(o) === 'object' && Object.keys(o).length === 0;\n };\n var isFunction = function isFunction(o) {\n return typeof o === 'function';\n };\n var isString = function isString(o) {\n return typeof o === 'string';\n };\n var isUndefined = function isUndefined(v) {\n return typeof v === 'undefined';\n };\n var isValue = function isValue(v) {\n return v || v === 0;\n };\n var notEmpty = function notEmpty(o) {\n return !isEmpty(o);\n };\n var sanitise = function sanitise(str) {\n return typeof str === 'string' ? str.replace(//g, '>') : str;\n };\n\n var Axis = function Axis(owner) {\n _classCallCheck(this, Axis);\n\n this.owner = owner;\n this.d3 = owner.d3;\n this.internal = AxisInternal;\n };\n\n Axis.prototype.init = function init() {\n var $$ = this.owner,\n config = $$.config,\n main = $$.main;\n $$.axes.x = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisX).attr(\"clip-path\", config.axis_x_inner ? \"\" : $$.clipPathForXAxis).attr(\"transform\", $$.getTranslate('x')).style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n $$.axes.x.append(\"text\").attr(\"class\", CLASS.axisXLabel).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n $$.axes.y = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY).attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis).attr(\"transform\", $$.getTranslate('y')).style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n $$.axes.y.append(\"text\").attr(\"class\", CLASS.axisYLabel).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n $$.axes.y2 = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2) // clip-path?\n .attr(\"transform\", $$.getTranslate('y2')).style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n $$.axes.y2.append(\"text\").attr(\"class\", CLASS.axisY2Label).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n };\n\n Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n isCategory: $$.isCategorized(),\n withOuterTick: withOuterTick,\n tickMultiline: config.axis_x_tick_multiline,\n tickMultilineMax: config.axis_x_tick_multiline ? Number(config.axis_x_tick_multilineMax) : 0,\n tickWidth: config.axis_x_tick_width,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n withoutTransition: withoutTransition\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient);\n\n if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n tickValues = tickValues.map(function (v) {\n return $$.parseDate(v);\n });\n } // Set tick\n\n\n axis.tickFormat(tickFormat).tickValues(tickValues);\n\n if ($$.isCategorized()) {\n axis.tickCentered(config.axis_x_tick_centered);\n\n if (isEmpty(config.axis_x_tick_culling)) {\n config.axis_x_tick_culling = false;\n }\n }\n\n return axis;\n };\n\n Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n var $$ = this.owner,\n config = $$.config,\n tickValues;\n\n if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n }\n\n if (axis) {\n axis.tickValues(tickValues);\n } else {\n $$.xAxis.tickValues(tickValues);\n $$.subXAxis.tickValues(tickValues);\n }\n\n return tickValues;\n };\n\n Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n withOuterTick: withOuterTick,\n withoutTransition: withoutTransition,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat);\n\n if ($$.isTimeSeriesY()) {\n axis.ticks(config.axis_y_tick_time_type, config.axis_y_tick_time_interval);\n } else {\n axis.tickValues(tickValues);\n }\n\n return axis;\n };\n\n Axis.prototype.getId = function getId(id) {\n var config = this.owner.config;\n return id in config.data_axes ? config.data_axes[id] : 'y';\n };\n\n Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {\n // #2251 previously set any negative values to a whole number,\n // however both should be truncated according to the users format specification\n var $$ = this.owner,\n config = $$.config;\n var format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) {\n return v;\n };\n\n if (config.axis_x_tick_format) {\n if (isFunction(config.axis_x_tick_format)) {\n format = config.axis_x_tick_format;\n } else if ($$.isTimeSeries()) {\n format = function format(date) {\n return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n };\n }\n }\n\n return isFunction(format) ? function (v) {\n return format.call($$, v);\n } : format;\n };\n\n Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {\n return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n };\n\n Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n };\n\n Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n };\n\n Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n };\n\n Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n var $$ = this.owner,\n config = $$.config,\n option;\n\n if (axisId === 'y') {\n option = config.axis_y_label;\n } else if (axisId === 'y2') {\n option = config.axis_y2_label;\n } else if (axisId === 'x') {\n option = config.axis_x_label;\n }\n\n return option;\n };\n\n Axis.prototype.getLabelText = function getLabelText(axisId) {\n var option = this.getLabelOptionByAxisId(axisId);\n return isString(option) ? option : option ? option.text : null;\n };\n\n Axis.prototype.setLabelText = function setLabelText(axisId, text) {\n var $$ = this.owner,\n config = $$.config,\n option = this.getLabelOptionByAxisId(axisId);\n\n if (isString(option)) {\n if (axisId === 'y') {\n config.axis_y_label = text;\n } else if (axisId === 'y2') {\n config.axis_y2_label = text;\n } else if (axisId === 'x') {\n config.axis_x_label = text;\n }\n } else if (option) {\n option.text = text;\n }\n };\n\n Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n var option = this.getLabelOptionByAxisId(axisId),\n position = option && _typeof(option) === 'object' && option.position ? option.position : defaultPosition;\n return {\n isInner: position.indexOf('inner') >= 0,\n isOuter: position.indexOf('outer') >= 0,\n isLeft: position.indexOf('left') >= 0,\n isCenter: position.indexOf('center') >= 0,\n isRight: position.indexOf('right') >= 0,\n isTop: position.indexOf('top') >= 0,\n isMiddle: position.indexOf('middle') >= 0,\n isBottom: position.indexOf('bottom') >= 0\n };\n };\n\n Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {\n return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n };\n\n Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {\n return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n\n Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n\n Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {\n return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n };\n\n Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {\n return this.getLabelText('x');\n };\n\n Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {\n return this.getLabelText('y');\n };\n\n Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {\n return this.getLabelText('y2');\n };\n\n Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n var $$ = this.owner;\n\n if (forHorizontal) {\n return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n } else {\n return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n }\n };\n\n Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n } else {\n return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n }\n };\n\n Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n } else {\n return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n }\n };\n\n Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {\n return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {\n return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {\n var $$ = this.owner,\n config = $$.config,\n position = this.getXAxisLabelPosition();\n\n if (config.axis_rotated) {\n return position.isInner ? \"1.2em\" : -25 - ($$.config.axis_x_inner ? 0 : this.getMaxTickWidth('x'));\n } else {\n return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n }\n };\n\n Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {\n var $$ = this.owner,\n position = this.getYAxisLabelPosition();\n\n if ($$.config.axis_rotated) {\n return position.isInner ? \"-0.5em\" : \"3em\";\n } else {\n return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : this.getMaxTickWidth('y') + 10);\n }\n };\n\n Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {\n var $$ = this.owner,\n position = this.getY2AxisLabelPosition();\n\n if ($$.config.axis_rotated) {\n return position.isInner ? \"1.2em\" : \"-2.2em\";\n } else {\n return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : this.getMaxTickWidth('y2') + 15);\n }\n };\n\n Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n };\n\n Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n };\n\n Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n\n Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n var $$ = this.owner,\n config = $$.config,\n maxWidth = 0,\n targetsToShow,\n scale,\n axis,\n dummy,\n svg;\n\n if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n return $$.currentMaxTickWidths[id];\n }\n\n if ($$.svg) {\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n\n if (id === 'y') {\n scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n } else if (id === 'y2') {\n scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n } else {\n scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n this.updateXAxisTickValues(targetsToShow, axis);\n }\n\n dummy = $$.d3.select('body').append('div').classed('c3', true);\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), svg.append('g').call(axis).each(function () {\n $$.d3.select(this).selectAll('text').each(function () {\n var box = this.getBoundingClientRect();\n\n if (maxWidth < box.width) {\n maxWidth = box.width;\n }\n });\n dummy.remove();\n });\n }\n\n $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n return $$.currentMaxTickWidths[id];\n };\n\n Axis.prototype.updateLabels = function updateLabels(withTransition) {\n var $$ = this.owner;\n var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n (withTransition ? axisXLabel.transition() : axisXLabel).attr(\"x\", this.xForXAxisLabel.bind(this)).attr(\"dx\", this.dxForXAxisLabel.bind(this)).attr(\"dy\", this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this));\n (withTransition ? axisYLabel.transition() : axisYLabel).attr(\"x\", this.xForYAxisLabel.bind(this)).attr(\"dx\", this.dxForYAxisLabel.bind(this)).attr(\"dy\", this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this));\n (withTransition ? axisY2Label.transition() : axisY2Label).attr(\"x\", this.xForY2AxisLabel.bind(this)).attr(\"dx\", this.dxForY2AxisLabel.bind(this)).attr(\"dy\", this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this));\n };\n\n Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n var p = typeof padding === 'number' ? padding : padding[key];\n\n if (!isValue(p)) {\n return defaultValue;\n }\n\n if (padding.unit === 'ratio') {\n return padding[key] * domainLength;\n } // assume padding is pixels if unit is not specified\n\n\n return this.convertPixelsToAxisPadding(p, domainLength);\n };\n\n Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n var $$ = this.owner,\n length = $$.config.axis_rotated ? $$.width : $$.height;\n return domainLength * (pixels / length);\n };\n\n Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n var tickValues = values,\n targetCount,\n start,\n end,\n count,\n interval,\n i,\n tickValue;\n\n if (tickCount) {\n targetCount = isFunction(tickCount) ? tickCount() : tickCount; // compute ticks according to tickCount\n\n if (targetCount === 1) {\n tickValues = [values[0]];\n } else if (targetCount === 2) {\n tickValues = [values[0], values[values.length - 1]];\n } else if (targetCount > 2) {\n count = targetCount - 2;\n start = values[0];\n end = values[values.length - 1];\n interval = (end - start) / (count + 1); // re-construct unique values\n\n tickValues = [start];\n\n for (i = 0; i < count; i++) {\n tickValue = +start + interval * (i + 1);\n tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n }\n\n tickValues.push(end);\n }\n }\n\n if (!forTimeSeries) {\n tickValues = tickValues.sort(function (a, b) {\n return a - b;\n });\n }\n\n return tickValues;\n };\n\n Axis.prototype.generateTransitions = function generateTransitions(duration) {\n var $$ = this.owner,\n axes = $$.axes;\n return {\n axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n };\n };\n\n Axis.prototype.redraw = function redraw(duration, isHidden) {\n var $$ = this.owner,\n transition = duration ? $$.d3.transition().duration(duration) : null;\n $$.axes.x.style(\"opacity\", isHidden ? 0 : 1).call($$.xAxis, transition);\n $$.axes.y.style(\"opacity\", isHidden ? 0 : 1).call($$.yAxis, transition);\n $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1).call($$.y2Axis, transition);\n $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1).call($$.subXAxis, transition);\n };\n\n var c3 = {\n version: \"0.7.2\",\n chart: {\n fn: Chart.prototype,\n internal: {\n fn: ChartInternal.prototype,\n axis: {\n fn: Axis.prototype,\n internal: {\n fn: AxisInternal.prototype\n }\n }\n }\n },\n generate: function generate(config) {\n return new Chart(config);\n }\n };\n\n ChartInternal.prototype.beforeInit = function () {// can do something\n };\n\n ChartInternal.prototype.afterInit = function () {// can do something\n };\n\n ChartInternal.prototype.init = function () {\n var $$ = this,\n config = $$.config;\n $$.initParams();\n\n if (config.data_url) {\n $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n } else if (config.data_json) {\n $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n } else if (config.data_rows) {\n $$.initWithData($$.convertRowsToData(config.data_rows));\n } else if (config.data_columns) {\n $$.initWithData($$.convertColumnsToData(config.data_columns));\n } else {\n throw Error('url or json or rows or columns is required.');\n }\n };\n\n ChartInternal.prototype.initParams = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config; // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n\n $$.clipId = \"c3-\" + +new Date() + '-clip';\n $$.clipIdForXAxis = $$.clipId + '-xaxis';\n $$.clipIdForYAxis = $$.clipId + '-yaxis';\n $$.clipIdForGrid = $$.clipId + '-grid';\n $$.clipIdForSubchart = $$.clipId + '-subchart';\n $$.clipPath = $$.getClipPath($$.clipId);\n $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis);\n $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid);\n $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart);\n $$.dragStart = null;\n $$.dragging = false;\n $$.flowing = false;\n $$.cancelClick = false;\n $$.mouseover = false;\n $$.transiting = false;\n $$.color = $$.generateColor();\n $$.levelColor = $$.generateLevelColor();\n $$.dataTimeParse = (config.data_xLocaltime ? d3.timeParse : d3.utcParse)($$.config.data_xFormat);\n $$.axisTimeFormat = config.axis_x_localtime ? d3.timeFormat : d3.utcFormat;\n\n $$.defaultAxisTimeFormat = function (date) {\n if (date.getMilliseconds()) {\n return d3.timeFormat(\".%L\")(date);\n }\n\n if (date.getSeconds()) {\n return d3.timeFormat(\":%S\")(date);\n }\n\n if (date.getMinutes()) {\n return d3.timeFormat(\"%I:%M\")(date);\n }\n\n if (date.getHours()) {\n return d3.timeFormat(\"%I %p\")(date);\n }\n\n if (date.getDay() && date.getDate() !== 1) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n if (date.getDate() !== 1) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n if (date.getMonth()) {\n return d3.timeFormat(\"%-m/%-d\")(date);\n }\n\n return d3.timeFormat(\"%Y/%-m/%-d\")(date);\n };\n\n $$.hiddenTargetIds = [];\n $$.hiddenLegendIds = [];\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n $$.xOrient = config.axis_rotated ? config.axis_x_inner ? \"right\" : \"left\" : config.axis_x_inner ? \"top\" : \"bottom\";\n $$.yOrient = config.axis_rotated ? config.axis_y_inner ? \"top\" : \"bottom\" : config.axis_y_inner ? \"right\" : \"left\";\n $$.y2Orient = config.axis_rotated ? config.axis_y2_inner ? \"bottom\" : \"top\" : config.axis_y2_inner ? \"left\" : \"right\";\n $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n $$.isLegendRight = config.legend_position === 'right';\n $$.isLegendInset = config.legend_position === 'inset';\n $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n $$.legendStep = 0;\n $$.legendItemWidth = 0;\n $$.legendItemHeight = 0;\n $$.currentMaxTickWidths = {\n x: 0,\n y: 0,\n y2: 0\n };\n $$.rotated_padding_left = 30;\n $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n $$.rotated_padding_top = 5;\n $$.withoutFadeIn = {};\n $$.intervalForObserveInserted = undefined;\n $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n };\n\n ChartInternal.prototype.initChartElements = function () {\n if (this.initBar) {\n this.initBar();\n }\n\n if (this.initLine) {\n this.initLine();\n }\n\n if (this.initArc) {\n this.initArc();\n }\n\n if (this.initGauge) {\n this.initGauge();\n }\n\n if (this.initText) {\n this.initText();\n }\n };\n\n ChartInternal.prototype.initWithData = function (data) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n var defs,\n main,\n binding = true;\n $$.axis = new Axis($$);\n\n if (!config.bindto) {\n $$.selectChart = d3.selectAll([]);\n } else if (typeof config.bindto.node === 'function') {\n $$.selectChart = config.bindto;\n } else {\n $$.selectChart = d3.select(config.bindto);\n }\n\n if ($$.selectChart.empty()) {\n $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n $$.observeInserted($$.selectChart);\n binding = false;\n }\n\n $$.selectChart.html(\"\").classed(\"c3\", true); // Init data as targets\n\n $$.data.xs = {};\n $$.data.targets = $$.convertDataToTargets(data);\n\n if (config.data_filter) {\n $$.data.targets = $$.data.targets.filter(config.data_filter);\n } // Set targets to hide if needed\n\n\n if (config.data_hide) {\n $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n }\n\n if (config.legend_hide) {\n $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n }\n\n if ($$.isStanfordGraphType()) {\n $$.initStanfordData();\n } // Init sizes and scales\n\n\n $$.updateSizes();\n $$.updateScales(); // Set domains for each scale\n\n $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n $$.subX.domain($$.x.domain());\n $$.subY.domain($$.y.domain());\n $$.subY2.domain($$.y2.domain()); // Save original x domain for zoom update\n\n $$.orgXDomain = $$.x.domain();\n /*-- Basic Elements --*/\n // Define svgs\n\n $$.svg = $$.selectChart.append(\"svg\").style(\"overflow\", \"hidden\").on('mouseenter', function () {\n return config.onmouseover.call($$);\n }).on('mouseleave', function () {\n return config.onmouseout.call($$);\n });\n\n if ($$.config.svg_classname) {\n $$.svg.attr('class', $$.config.svg_classname);\n } // Define defs\n\n\n defs = $$.svg.append(\"defs\");\n $$.clipChart = $$.appendClip(defs, $$.clipId);\n $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n $$.updateSvgSize(); // Define regions\n\n main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n if ($$.initPie) {\n $$.initPie();\n }\n\n if ($$.initDragZoom) {\n $$.initDragZoom();\n }\n\n if ($$.initSubchart) {\n $$.initSubchart();\n }\n\n if ($$.initTooltip) {\n $$.initTooltip();\n }\n\n if ($$.initLegend) {\n $$.initLegend();\n }\n\n if ($$.initTitle) {\n $$.initTitle();\n }\n\n if ($$.initZoom) {\n $$.initZoom();\n }\n\n if ($$.isStanfordGraphType()) {\n $$.drawColorScale();\n } // Update selection based on size and scale\n // TODO: currently this must be called after initLegend because of update of sizes, but it should be done in initSubchart.\n\n\n if ($$.initSubchartBrush) {\n $$.initSubchartBrush();\n }\n /*-- Main Region --*/\n // text when empty\n\n\n main.append(\"text\").attr(\"class\", CLASS.text + ' ' + CLASS.empty).attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n // Regions\n\n $$.initRegion(); // Grids\n\n $$.initGrid(); // Define g for chart area\n\n main.append('g').attr(\"clip-path\", $$.clipPath).attr('class', CLASS.chart); // Grid lines\n\n if (config.grid_lines_front) {\n $$.initGridLines();\n }\n\n $$.initStanfordElements(); // Cover whole with rects for events\n\n $$.initEventRect(); // Define g for chart\n\n $$.initChartElements(); // Add Axis\n\n $$.axis.init(); // Set targets\n\n $$.updateTargets($$.data.targets); // Set default extent if defined\n\n if (config.axis_x_selection) {\n $$.brush.selectionAsValue($$.getDefaultSelection());\n } // Draw with targets\n\n\n if (binding) {\n $$.updateDimension();\n $$.config.oninit.call($$);\n $$.redraw({\n withTransition: false,\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransitionForAxis: false\n });\n } // Bind to resize event\n\n\n $$.bindResize(); // Bind to window focus event\n\n $$.bindWindowFocus(); // export element of the chart\n\n $$.api.element = $$.selectChart.node();\n };\n\n ChartInternal.prototype.smoothLines = function (el, type) {\n var $$ = this;\n\n if (type === 'grid') {\n el.each(function () {\n var g = $$.d3.select(this),\n x1 = g.attr('x1'),\n x2 = g.attr('x2'),\n y1 = g.attr('y1'),\n y2 = g.attr('y2');\n g.attr({\n 'x1': Math.ceil(x1),\n 'x2': Math.ceil(x2),\n 'y1': Math.ceil(y1),\n 'y2': Math.ceil(y2)\n });\n });\n }\n };\n\n ChartInternal.prototype.updateSizes = function () {\n var $$ = this,\n config = $$.config;\n var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n hasArc = $$.hasArcType(),\n xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n subchartHeight = config.subchart_show && !hasArc ? config.subchart_size_height + xAxisHeight : 0;\n $$.currentWidth = $$.getCurrentWidth();\n $$.currentHeight = $$.getCurrentHeight(); // for main\n\n $$.margin = config.axis_rotated ? {\n top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n } : {\n top: 4 + $$.getCurrentPaddingTop(),\n // for top tick text\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n }; // for subchart\n\n $$.margin2 = config.axis_rotated ? {\n top: $$.margin.top,\n right: NaN,\n bottom: 20 + legendHeightForBottom,\n left: $$.rotated_padding_left\n } : {\n top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n right: NaN,\n bottom: xAxisHeight + legendHeightForBottom,\n left: $$.margin.left\n }; // for legend\n\n $$.margin3 = {\n top: 0,\n right: NaN,\n bottom: 0,\n left: 0\n };\n\n if ($$.updateSizeForLegend) {\n $$.updateSizeForLegend(legendHeight, legendWidth);\n }\n\n $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n\n if ($$.width < 0) {\n $$.width = 0;\n }\n\n if ($$.height < 0) {\n $$.height = 0;\n }\n\n $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n\n if ($$.width2 < 0) {\n $$.width2 = 0;\n }\n\n if ($$.height2 < 0) {\n $$.height2 = 0;\n } // for arc\n\n\n $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n\n if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n }\n\n if ($$.updateRadius) {\n $$.updateRadius();\n }\n\n if ($$.isLegendRight && hasArc) {\n $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n }\n };\n\n ChartInternal.prototype.updateTargets = function (targets) {\n var $$ = this;\n /*-- Main --*/\n //-- Text --//\n\n $$.updateTargetsForText(targets); //-- Bar --//\n\n $$.updateTargetsForBar(targets); //-- Line --//\n\n $$.updateTargetsForLine(targets); //-- Arc --//\n\n if ($$.hasArcType() && $$.updateTargetsForArc) {\n $$.updateTargetsForArc(targets);\n }\n /*-- Sub --*/\n\n\n if ($$.updateTargetsForSubchart) {\n $$.updateTargetsForSubchart(targets);\n } // Fade-in each chart\n\n\n $$.showTargets();\n };\n\n ChartInternal.prototype.showTargets = function () {\n var $$ = this;\n $$.svg.selectAll('.' + CLASS.target).filter(function (d) {\n return $$.isTargetToShow(d.id);\n }).transition().duration($$.config.transition_duration).style(\"opacity\", 1);\n };\n\n ChartInternal.prototype.redraw = function (options, transitions) {\n var $$ = this,\n main = $$.main,\n d3 = $$.d3,\n config = $$.config;\n var areaIndices = $$.getShapeIndices($$.isAreaType),\n barIndices = $$.getShapeIndices($$.isBarType),\n lineIndices = $$.getShapeIndices($$.isLineType);\n var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension, withUpdateXAxis;\n var hideAxis = $$.hasArcType();\n var drawArea, drawBar, drawLine, xForText, yForText;\n var duration, durationForExit, durationForAxis;\n var transitionsToWait, waitForDraw, flow, transition;\n var targetsToShow = $$.filterTargetsToShow($$.data.targets),\n tickValues,\n i,\n intervalForCulling,\n xDomainForZoom;\n var xv = $$.xv.bind($$),\n cx,\n cy;\n options = options || {};\n withY = getOption(options, \"withY\", true);\n withSubchart = getOption(options, \"withSubchart\", true);\n withTransition = getOption(options, \"withTransition\", true);\n withTransform = getOption(options, \"withTransform\", false);\n withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n withLegend = getOption(options, \"withLegend\", false);\n withEventRect = getOption(options, \"withEventRect\", true);\n withDimension = getOption(options, \"withDimension\", true);\n withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n duration = withTransition ? config.transition_duration : 0;\n durationForExit = withTransitionForExit ? duration : 0;\n durationForAxis = withTransitionForAxis ? duration : 0;\n transitions = transitions || $$.axis.generateTransitions(durationForAxis); // update legend and transform each g\n\n if (withLegend && config.legend_show) {\n $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n } else if (withDimension) {\n // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n // no need to update axis in it because they will be updated in redraw()\n $$.updateDimension(true);\n } // MEMO: needed for grids calculation\n\n\n if ($$.isCategorized() && targetsToShow.length === 0) {\n $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n }\n\n if (targetsToShow.length) {\n $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n\n if (!config.axis_x_tick_values) {\n tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n }\n } else {\n $$.xAxis.tickValues([]);\n $$.subXAxis.tickValues([]);\n }\n\n if (config.zoom_rescale && !options.flow) {\n xDomainForZoom = $$.x.orgDomain();\n }\n\n $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n }\n\n if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n } // axes\n\n\n $$.axis.redraw(durationForAxis, hideAxis); // Update axis label\n\n $$.axis.updateLabels(withTransition); // show/hide if manual culling needed\n\n if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n if (config.axis_x_tick_culling && tickValues) {\n for (i = 1; i < tickValues.length; i++) {\n if (tickValues.length / i < config.axis_x_tick_culling_max) {\n intervalForCulling = i;\n break;\n }\n }\n\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n var index = tickValues.indexOf(e);\n\n if (index >= 0) {\n d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n }\n });\n } else {\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n }\n } // setup drawer - MEMO: these must be called after axis updated\n\n\n drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false); // update circleY based on updated parameters\n\n $$.updateCircleY(); // generate circle x/y functions depending on updated params\n\n cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$); // Update sub domain\n\n if (withY) {\n $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n } // xgrid focus\n\n\n $$.updateXgridFocus(); // Data empty label positioning and text.\n\n main.select(\"text.\" + CLASS.text + '.' + CLASS.empty).attr(\"x\", $$.width / 2).attr(\"y\", $$.height / 2).text(config.data_empty_label_text).transition().style('opacity', targetsToShow.length ? 0 : 1); // event rect\n\n if (withEventRect) {\n $$.redrawEventRect();\n } // grid\n\n\n $$.updateGrid(duration);\n $$.updateStanfordElements(duration); // rect for regions\n\n $$.updateRegion(duration); // bars\n\n $$.updateBar(durationForExit); // lines, areas and circles\n\n $$.updateLine(durationForExit);\n $$.updateArea(durationForExit);\n $$.updateCircle(cx, cy); // text\n\n if ($$.hasDataLabel()) {\n $$.updateText(xForText, yForText, durationForExit);\n } // title\n\n\n if ($$.redrawTitle) {\n $$.redrawTitle();\n } // arc\n\n\n if ($$.redrawArc) {\n $$.redrawArc(duration, durationForExit, withTransform);\n } // subchart\n\n\n if ($$.redrawSubchart) {\n $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n }\n\n if ($$.isStanfordGraphType()) {\n $$.drawColorScale();\n } // circles for select\n\n\n main.selectAll('.' + CLASS.selectedCircles).filter($$.isBarType.bind($$)).selectAll('circle').remove();\n\n if (options.flow) {\n flow = $$.generateFlow({\n targets: targetsToShow,\n flow: options.flow,\n duration: options.flow.duration,\n drawBar: drawBar,\n drawLine: drawLine,\n drawArea: drawArea,\n cx: cx,\n cy: cy,\n xv: xv,\n xForText: xForText,\n yForText: yForText\n });\n }\n\n if ($$.isTabVisible()) {\n // Only use transition if tab visible. See #938.\n if (duration) {\n // transition should be derived from one transition\n transition = d3.transition().duration(duration);\n transitionsToWait = [];\n [$$.redrawBar(drawBar, true, transition), $$.redrawLine(drawLine, true, transition), $$.redrawArea(drawArea, true, transition), $$.redrawCircle(cx, cy, true, transition), $$.redrawText(xForText, yForText, options.flow, true, transition), $$.redrawRegion(true, transition), $$.redrawGrid(true, transition)].forEach(function (transitions) {\n transitions.forEach(function (transition) {\n transitionsToWait.push(transition);\n });\n }); // Wait for end of transitions to call flow and onrendered callback\n\n waitForDraw = $$.generateWait();\n transitionsToWait.forEach(function (t) {\n waitForDraw.add(t);\n });\n waitForDraw(function () {\n if (flow) {\n flow();\n }\n\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n });\n } else {\n $$.redrawBar(drawBar);\n $$.redrawLine(drawLine);\n $$.redrawArea(drawArea);\n $$.redrawCircle(cx, cy);\n $$.redrawText(xForText, yForText, options.flow);\n $$.redrawRegion();\n $$.redrawGrid();\n\n if (flow) {\n flow();\n }\n\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n }\n } // update fadein condition\n\n\n $$.mapToIds($$.data.targets).forEach(function (id) {\n $$.withoutFadeIn[id] = true;\n });\n };\n\n ChartInternal.prototype.updateAndRedraw = function (options) {\n var $$ = this,\n config = $$.config,\n transitions;\n options = options || {}; // same with redraw\n\n options.withTransition = getOption(options, \"withTransition\", true);\n options.withTransform = getOption(options, \"withTransform\", false);\n options.withLegend = getOption(options, \"withLegend\", false); // NOT same with redraw\n\n options.withUpdateXDomain = getOption(options, \"withUpdateXDomain\", true);\n options.withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", true);\n options.withTransitionForExit = false;\n options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition); // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n\n $$.updateSizes(); // MEMO: called in updateLegend in redraw if withLegend\n\n if (!(options.withLegend && config.legend_show)) {\n transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0); // Update scales\n\n $$.updateScales();\n $$.updateSvgSize(); // Update g positions\n\n $$.transformAll(options.withTransitionForTransform, transitions);\n } // Draw with new sizes & scales\n\n\n $$.redraw(options, transitions);\n };\n\n ChartInternal.prototype.redrawWithoutRescale = function () {\n this.redraw({\n withY: false,\n withSubchart: false,\n withEventRect: false,\n withTransitionForAxis: false\n });\n };\n\n ChartInternal.prototype.isTimeSeries = function () {\n return this.config.axis_x_type === 'timeseries';\n };\n\n ChartInternal.prototype.isCategorized = function () {\n return this.config.axis_x_type.indexOf('categor') >= 0;\n };\n\n ChartInternal.prototype.isCustomX = function () {\n var $$ = this,\n config = $$.config;\n return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n };\n\n ChartInternal.prototype.isTimeSeriesY = function () {\n return this.config.axis_y_type === 'timeseries';\n };\n\n ChartInternal.prototype.getTranslate = function (target) {\n var $$ = this,\n config = $$.config,\n x,\n y;\n\n if (target === 'main') {\n x = asHalfPixel($$.margin.left);\n y = asHalfPixel($$.margin.top);\n } else if (target === 'context') {\n x = asHalfPixel($$.margin2.left);\n y = asHalfPixel($$.margin2.top);\n } else if (target === 'legend') {\n x = $$.margin3.left;\n y = $$.margin3.top;\n } else if (target === 'x') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height;\n } else if (target === 'y') {\n x = 0;\n y = config.axis_rotated ? $$.height : 0;\n } else if (target === 'y2') {\n x = config.axis_rotated ? 0 : $$.width;\n y = config.axis_rotated ? 1 : 0;\n } else if (target === 'subx') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height2;\n } else if (target === 'arc') {\n x = $$.arcWidth / 2;\n y = $$.arcHeight / 2 - ($$.hasType('gauge') ? 6 : 0); // to prevent wrong display of min and max label\n }\n\n return \"translate(\" + x + \",\" + y + \")\";\n };\n\n ChartInternal.prototype.initialOpacity = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n };\n\n ChartInternal.prototype.initialOpacityForCircle = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n };\n\n ChartInternal.prototype.opacityForCircle = function (d) {\n var isPointShouldBeShown = isFunction(this.config.point_show) ? this.config.point_show(d) : this.config.point_show;\n var opacity = isPointShouldBeShown || this.isStanfordType(d) ? 1 : 0;\n return isValue(d.value) ? this.isScatterType(d) ? 0.5 : opacity : 0;\n };\n\n ChartInternal.prototype.opacityForText = function () {\n return this.hasDataLabel() ? 1 : 0;\n };\n\n ChartInternal.prototype.xx = function (d) {\n return d ? this.x(d.x) : null;\n };\n\n ChartInternal.prototype.xvCustom = function (d, xyValue) {\n var $$ = this,\n value = xyValue ? d[xyValue] : d.value;\n\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n\n return Math.ceil($$.x(value));\n };\n\n ChartInternal.prototype.yvCustom = function (d, xyValue) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y,\n value = xyValue ? d[xyValue] : d.value;\n return Math.ceil(yScale(value));\n };\n\n ChartInternal.prototype.xv = function (d) {\n var $$ = this,\n value = d.value;\n\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n\n return Math.ceil($$.x(value));\n };\n\n ChartInternal.prototype.yv = function (d) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n return Math.ceil(yScale(d.value));\n };\n\n ChartInternal.prototype.subxx = function (d) {\n return d ? this.subX(d.x) : null;\n };\n\n ChartInternal.prototype.transformMain = function (withTransition, transitions) {\n var $$ = this,\n xAxis,\n yAxis,\n y2Axis;\n\n if (transitions && transitions.axisX) {\n xAxis = transitions.axisX;\n } else {\n xAxis = $$.main.select('.' + CLASS.axisX);\n\n if (withTransition) {\n xAxis = xAxis.transition();\n }\n }\n\n if (transitions && transitions.axisY) {\n yAxis = transitions.axisY;\n } else {\n yAxis = $$.main.select('.' + CLASS.axisY);\n\n if (withTransition) {\n yAxis = yAxis.transition();\n }\n }\n\n if (transitions && transitions.axisY2) {\n y2Axis = transitions.axisY2;\n } else {\n y2Axis = $$.main.select('.' + CLASS.axisY2);\n\n if (withTransition) {\n y2Axis = y2Axis.transition();\n }\n }\n\n (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n xAxis.attr(\"transform\", $$.getTranslate('x'));\n yAxis.attr(\"transform\", $$.getTranslate('y'));\n y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n };\n\n ChartInternal.prototype.transformAll = function (withTransition, transitions) {\n var $$ = this;\n $$.transformMain(withTransition, transitions);\n\n if ($$.config.subchart_show) {\n $$.transformContext(withTransition, transitions);\n }\n\n if ($$.legend) {\n $$.transformLegend(withTransition);\n }\n };\n\n ChartInternal.prototype.updateSvgSize = function () {\n var $$ = this,\n brush = $$.svg.select(\".c3-brush .overlay\");\n $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect').attr('width', $$.width).attr('height', $$.height);\n $$.svg.select('#' + $$.clipIdForXAxis).select('rect').attr('x', $$.getXAxisClipX.bind($$)).attr('y', $$.getXAxisClipY.bind($$)).attr('width', $$.getXAxisClipWidth.bind($$)).attr('height', $$.getXAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForYAxis).select('rect').attr('x', $$.getYAxisClipX.bind($$)).attr('y', $$.getYAxisClipY.bind($$)).attr('width', $$.getYAxisClipWidth.bind($$)).attr('height', $$.getYAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForSubchart).select('rect').attr('width', $$.width).attr('height', brush.size() ? brush.attr('height') : 0); // MEMO: parent div's height will be bigger than svg when \n\n $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n };\n\n ChartInternal.prototype.updateDimension = function (withoutAxis) {\n var $$ = this;\n\n if (!withoutAxis) {\n if ($$.config.axis_rotated) {\n $$.axes.x.call($$.xAxis);\n $$.axes.subx.call($$.subXAxis);\n } else {\n $$.axes.y.call($$.yAxis);\n $$.axes.y2.call($$.y2Axis);\n }\n }\n\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n $$.transformAll(false);\n };\n\n ChartInternal.prototype.observeInserted = function (selection) {\n var $$ = this,\n observer;\n\n if (typeof MutationObserver === 'undefined') {\n window.console.error(\"MutationObserver not defined.\");\n return;\n }\n\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'childList' && mutation.previousSibling) {\n observer.disconnect(); // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n\n $$.intervalForObserveInserted = window.setInterval(function () {\n // parentNode will NOT be null when completed\n if (selection.node().parentNode) {\n window.clearInterval($$.intervalForObserveInserted);\n $$.updateDimension();\n\n if ($$.brush) {\n $$.brush.update();\n }\n\n $$.config.oninit.call($$);\n $$.redraw({\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n selection.transition().style('opacity', 1);\n }\n }, 10);\n }\n });\n });\n observer.observe(selection.node(), {\n attributes: true,\n childList: true,\n characterData: true\n });\n };\n /**\n * Binds handlers to the window resize event.\n */\n\n\n ChartInternal.prototype.bindResize = function () {\n var $$ = this,\n config = $$.config;\n $$.resizeFunction = $$.generateResize(); // need to call .remove\n\n $$.resizeFunction.add(function () {\n config.onresize.call($$);\n });\n\n if (config.resize_auto) {\n $$.resizeFunction.add(function () {\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n $$.resizeTimeout = window.setTimeout(function () {\n delete $$.resizeTimeout;\n $$.updateAndRedraw({\n withUpdateXDomain: false,\n withUpdateOrgXDomain: false,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n\n if ($$.brush) {\n $$.brush.update();\n }\n }, 100);\n });\n }\n\n $$.resizeFunction.add(function () {\n config.onresized.call($$);\n });\n\n $$.resizeIfElementDisplayed = function () {\n // if element not displayed skip it\n if ($$.api == null || !$$.api.element.offsetParent) {\n return;\n }\n\n $$.resizeFunction();\n };\n\n if (window.attachEvent) {\n window.attachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.addEventListener) {\n window.addEventListener('resize', $$.resizeIfElementDisplayed, false);\n } else {\n // fallback to this, if this is a very old browser\n var wrapper = window.onresize;\n\n if (!wrapper) {\n // create a wrapper that will call all charts\n wrapper = $$.generateResize();\n } else if (!wrapper.add || !wrapper.remove) {\n // there is already a handler registered, make sure we call it too\n wrapper = $$.generateResize();\n wrapper.add(window.onresize);\n } // add this graph to the wrapper, we will be removed if the user calls destroy\n\n\n wrapper.add($$.resizeFunction);\n\n window.onresize = function () {\n // if element not displayed skip it\n if (!$$.api.element.offsetParent) {\n return;\n }\n\n wrapper();\n };\n }\n };\n /**\n * Binds handlers to the window focus event.\n */\n\n\n ChartInternal.prototype.bindWindowFocus = function () {\n var _this = this;\n\n if (this.windowFocusHandler) {\n // The handler is already set\n return;\n }\n\n this.windowFocusHandler = function () {\n _this.redraw();\n };\n\n window.addEventListener('focus', this.windowFocusHandler);\n };\n /**\n * Unbinds from the window focus event.\n */\n\n\n ChartInternal.prototype.unbindWindowFocus = function () {\n window.removeEventListener('focus', this.windowFocusHandler);\n delete this.windowFocusHandler;\n };\n\n ChartInternal.prototype.generateResize = function () {\n var resizeFunctions = [];\n\n function callResizeFunctions() {\n resizeFunctions.forEach(function (f) {\n f();\n });\n }\n\n callResizeFunctions.add = function (f) {\n resizeFunctions.push(f);\n };\n\n callResizeFunctions.remove = function (f) {\n for (var i = 0; i < resizeFunctions.length; i++) {\n if (resizeFunctions[i] === f) {\n resizeFunctions.splice(i, 1);\n break;\n }\n }\n };\n\n return callResizeFunctions;\n };\n\n ChartInternal.prototype.endall = function (transition, callback) {\n var n = 0;\n transition.each(function () {\n ++n;\n }).on(\"end\", function () {\n if (! --n) {\n callback.apply(this, arguments);\n }\n });\n };\n\n ChartInternal.prototype.generateWait = function () {\n var $$ = this;\n\n var transitionsToWait = [],\n f = function f(callback) {\n var timer = setInterval(function () {\n if (!$$.isTabVisible()) {\n return;\n }\n\n var done = 0;\n transitionsToWait.forEach(function (t) {\n if (t.empty()) {\n done += 1;\n return;\n }\n\n try {\n t.transition();\n } catch (e) {\n done += 1;\n }\n });\n\n if (done === transitionsToWait.length) {\n clearInterval(timer);\n\n if (callback) {\n callback();\n }\n }\n }, 50);\n };\n\n f.add = function (transition) {\n transitionsToWait.push(transition);\n };\n\n return f;\n };\n\n ChartInternal.prototype.parseDate = function (date) {\n var $$ = this,\n parsedDate;\n\n if (date instanceof Date) {\n parsedDate = date;\n } else if (typeof date === 'string') {\n parsedDate = $$.dataTimeParse(date);\n } else if (_typeof(date) === 'object') {\n parsedDate = new Date(+date);\n } else if (typeof date === 'number' && !isNaN(date)) {\n parsedDate = new Date(+date);\n }\n\n if (!parsedDate || isNaN(+parsedDate)) {\n window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n }\n\n return parsedDate;\n };\n\n ChartInternal.prototype.isTabVisible = function () {\n return !document.hidden;\n };\n\n ChartInternal.prototype.getPathBox = getPathBox;\n ChartInternal.prototype.CLASS = CLASS;\n\n /* jshint ignore:start */\n // SVGPathSeg API polyfill\n // https://github.com/progers/pathseg\n //\n // This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n // SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n // changes which were implemented in Firefox 43 and Chrome 46.\n (function () {\n\n if (!(\"SVGPathSeg\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\n this.pathSegType = type;\n this.pathSegTypeAsLetter = typeAsLetter;\n this._owningPathSegList = owningPathSegList;\n };\n\n window.SVGPathSeg.prototype.classname = \"SVGPathSeg\";\n window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\n window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\n window.SVGPathSeg.PATHSEG_ARC_REL = 11;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19; // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n\n window.SVGPathSeg.prototype._segmentChanged = function () {\n if (this._owningPathSegList) this._owningPathSegList.segmentChanged(this);\n };\n\n window.SVGPathSegClosePath = function (owningPathSegList) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n };\n\n window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegClosePath.prototype.toString = function () {\n return \"[object SVGPathSegClosePath]\";\n };\n\n window.SVGPathSegClosePath.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter;\n };\n\n window.SVGPathSegClosePath.prototype.clone = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegMovetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegMovetoAbs]\";\n };\n\n window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegMovetoAbs.prototype.clone = function () {\n return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegMovetoRel.prototype.toString = function () {\n return \"[object SVGPathSegMovetoRel]\";\n };\n\n window.SVGPathSegMovetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegMovetoRel.prototype.clone = function () {\n return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoAbs]\";\n };\n\n window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoRel]\";\n };\n\n window.SVGPathSegLinetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicAbs]\";\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicRel]\";\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticAbs]\";\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticRel]\";\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", {\n get: function get() {\n return this._x1;\n },\n set: function set(x1) {\n this._x1 = x1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", {\n get: function get() {\n return this._y1;\n },\n set: function set(y1) {\n this._y1 = y1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n\n window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegArcAbs.prototype.toString = function () {\n return \"[object SVGPathSegArcAbs]\";\n };\n\n window.SVGPathSegArcAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegArcAbs.prototype.clone = function () {\n return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r1\", {\n get: function get() {\n return this._r1;\n },\n set: function set(r1) {\n this._r1 = r1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r2\", {\n get: function get() {\n return this._r2;\n },\n set: function set(r2) {\n this._r2 = r2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"angle\", {\n get: function get() {\n return this._angle;\n },\n set: function set(angle) {\n this._angle = angle;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"largeArcFlag\", {\n get: function get() {\n return this._largeArcFlag;\n },\n set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"sweepFlag\", {\n get: function get() {\n return this._sweepFlag;\n },\n set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n\n window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegArcRel.prototype.toString = function () {\n return \"[object SVGPathSegArcRel]\";\n };\n\n window.SVGPathSegArcRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegArcRel.prototype.clone = function () {\n return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r1\", {\n get: function get() {\n return this._r1;\n },\n set: function set(r1) {\n this._r1 = r1;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r2\", {\n get: function get() {\n return this._r2;\n },\n set: function set(r2) {\n this._r2 = r2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"angle\", {\n get: function get() {\n return this._angle;\n },\n set: function set(angle) {\n this._angle = angle;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"largeArcFlag\", {\n get: function get() {\n return this._largeArcFlag;\n },\n set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"sweepFlag\", {\n get: function get() {\n return this._sweepFlag;\n },\n set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n this._x = x;\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalAbs]\";\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n\n window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n this._x = x;\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalRel]\";\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n\n window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n this._y = y;\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalAbs]\";\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n this._y = y;\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalRel]\";\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n\n window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothAbs]\";\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothRel]\";\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", {\n get: function get() {\n return this._x2;\n },\n set: function set(x2) {\n this._x2 = x2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", {\n get: function get() {\n return this._y2;\n },\n set: function set(y2) {\n this._y2 = y2;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\";\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n\n window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\";\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\n };\n\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", {\n get: function get() {\n return this._x;\n },\n set: function set(x) {\n this._x = x;\n\n this._segmentChanged();\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", {\n get: function get() {\n return this._y;\n },\n set: function set(y) {\n this._y = y;\n\n this._segmentChanged();\n },\n enumerable: true\n }); // Add createSVGPathSeg* functions to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-Interfacewindow.SVGPathElement.\n\n window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\n return new window.SVGPathSegMovetoAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\n return new window.SVGPathSegMovetoRel(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\n return new window.SVGPathSegLinetoAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\n return new window.SVGPathSegLinetoRel(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\n return new window.SVGPathSegLinetoVerticalRel(undefined, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\n };\n\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\n };\n\n if (!(\"getPathSegAtLength\" in window.SVGPathElement.prototype)) {\n // Add getPathSegAtLength to SVGPathElement.\n // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-__svg__SVGPathElement__getPathSegAtLength\n // This polyfill requires SVGPathElement.getTotalLength to implement the distance-along-a-path algorithm.\n window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\n if (distance === undefined || !isFinite(distance)) throw \"Invalid arguments.\";\n var measurementElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n measurementElement.setAttribute(\"d\", this.getAttribute(\"d\"));\n var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1; // If the path is empty, return 0.\n\n if (lastPathSegment <= 0) return 0;\n\n do {\n measurementElement.pathSegList.removeItem(lastPathSegment);\n if (distance > measurementElement.getTotalLength()) break;\n lastPathSegment--;\n } while (lastPathSegment > 0);\n\n return lastPathSegment;\n };\n }\n }\n\n if (!(\"SVGPathSegList\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n window.SVGPathSegList = function (pathElement) {\n this._pathElement = pathElement;\n this._list = this._parsePath(this._pathElement.getAttribute(\"d\")); // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n\n this._mutationObserverConfig = {\n \"attributes\": true,\n \"attributeFilter\": [\"d\"]\n };\n this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n window.SVGPathSegList.prototype.classname = \"SVGPathSegList\";\n Object.defineProperty(window.SVGPathSegList.prototype, \"numberOfItems\", {\n get: function get() {\n this._checkPathSynchronizedToList();\n\n return this._list.length;\n },\n enumerable: true\n }); // Add the pathSegList accessors to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n\n Object.defineProperty(window.SVGPathElement.prototype, \"pathSegList\", {\n get: function get() {\n if (!this._pathSegList) this._pathSegList = new window.SVGPathSegList(this);\n return this._pathSegList;\n },\n enumerable: true\n }); // FIXME: The following are not implemented and simply return window.SVGPathElement.pathSegList.\n\n Object.defineProperty(window.SVGPathElement.prototype, \"normalizedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedNormalizedPathSegList\", {\n get: function get() {\n return this.pathSegList;\n },\n enumerable: true\n }); // Process any pending mutations to the path element and update the list as needed.\n // This should be the first call of all public functions and is needed because\n // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n\n window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\n this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n };\n\n window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\n if (!this._pathElement) return;\n var hasPathMutations = false;\n mutationRecords.forEach(function (record) {\n if (record.attributeName == \"d\") hasPathMutations = true;\n });\n if (hasPathMutations) this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n }; // Serialize the list and update the path's 'd' attribute.\n\n\n window.SVGPathSegList.prototype._writeListToPath = function () {\n this._pathElementMutationObserver.disconnect();\n\n this._pathElement.setAttribute(\"d\", window.SVGPathSegList._pathSegArrayAsString(this._list));\n\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n }; // When a path segment changes the list needs to be synchronized back to the path element.\n\n\n window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.clear = function () {\n this._checkPathSynchronizedToList();\n\n this._list.forEach(function (pathSeg) {\n pathSeg._owningPathSegList = null;\n });\n\n this._list = [];\n\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.initialize = function (newItem) {\n this._checkPathSynchronizedToList();\n\n this._list = [newItem];\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype._checkValidIndex = function (index) {\n if (isNaN(index) || index < 0 || index >= this.numberOfItems) throw \"INDEX_SIZE_ERR\";\n };\n\n window.SVGPathSegList.prototype.getItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n\n return this._list[index];\n };\n\n window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\n this._checkPathSynchronizedToList(); // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n\n\n if (index > this.numberOfItems) index = this.numberOfItems;\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._list.splice(index, 0, newItem);\n\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._checkValidIndex(index);\n\n this._list[index] = newItem;\n newItem._owningPathSegList = this;\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList.prototype.removeItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n\n var item = this._list[index];\n\n this._list.splice(index, 1);\n\n this._writeListToPath();\n\n return item;\n };\n\n window.SVGPathSegList.prototype.appendItem = function (newItem) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n\n this._list.push(newItem);\n\n newItem._owningPathSegList = this; // TODO: Optimize this to just append to the existing attribute.\n\n this._writeListToPath();\n\n return newItem;\n };\n\n window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\n var string = \"\";\n var first = true;\n pathSegArray.forEach(function (pathSeg) {\n if (first) {\n first = false;\n string += pathSeg._asPathString();\n } else {\n string += \" \" + pathSeg._asPathString();\n }\n });\n return string;\n }; // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n\n\n window.SVGPathSegList.prototype._parsePath = function (string) {\n if (!string || string.length == 0) return [];\n var owningPathSegList = this;\n\n var Builder = function Builder() {\n this.pathSegList = [];\n };\n\n Builder.prototype.appendSegment = function (pathSeg) {\n this.pathSegList.push(pathSeg);\n };\n\n var Source = function Source(string) {\n this._string = string;\n this._currentIndex = 0;\n this._endIndex = this._string.length;\n this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\n\n this._skipOptionalSpaces();\n };\n\n Source.prototype._isCurrentSpace = function () {\n var character = this._string[this._currentIndex];\n return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n };\n\n Source.prototype._skipOptionalSpaces = function () {\n while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {\n this._currentIndex++;\n }\n\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype._skipOptionalSpacesOrDelimiter = function () {\n if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\") return false;\n\n if (this._skipOptionalSpaces()) {\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n this._currentIndex++;\n\n this._skipOptionalSpaces();\n }\n }\n\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.hasMoreData = function () {\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.peekSegmentType = function () {\n var lookahead = this._string[this._currentIndex];\n return this._pathSegTypeFromChar(lookahead);\n };\n\n Source.prototype._pathSegTypeFromChar = function (lookahead) {\n switch (lookahead) {\n case \"Z\":\n case \"z\":\n return window.SVGPathSeg.PATHSEG_CLOSEPATH;\n\n case \"M\":\n return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\n\n case \"m\":\n return window.SVGPathSeg.PATHSEG_MOVETO_REL;\n\n case \"L\":\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n\n case \"l\":\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\n\n case \"C\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n\n case \"c\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n\n case \"Q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n\n case \"q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n\n case \"A\":\n return window.SVGPathSeg.PATHSEG_ARC_ABS;\n\n case \"a\":\n return window.SVGPathSeg.PATHSEG_ARC_REL;\n\n case \"H\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n\n case \"h\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n\n case \"V\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n\n case \"v\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n\n case \"S\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n\n case \"s\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n\n case \"T\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n\n case \"t\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n\n default:\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n }\n };\n\n Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\n // Check for remaining coordinates in the current command.\n if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || lookahead >= \"0\" && lookahead <= \"9\") && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS) return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL) return window.SVGPathSeg.PATHSEG_LINETO_REL;\n return previousCommand;\n }\n\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n };\n\n Source.prototype.initialCommandIsMoveTo = function () {\n // If the path is empty it is still valid, so return true.\n if (!this.hasMoreData()) return true;\n var command = this.peekSegmentType(); // Path must start with moveTo.\n\n return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;\n }; // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n\n\n Source.prototype._parseNumber = function () {\n var exponent = 0;\n var integer = 0;\n var frac = 1;\n var decimal = 0;\n var sign = 1;\n var expsign = 1;\n var startIndex = this._currentIndex;\n\n this._skipOptionalSpaces(); // Read the sign.\n\n\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\") this._currentIndex++;else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n sign = -1;\n }\n if (this._currentIndex == this._endIndex || (this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\") // The first character of a number must be one of [0-9+-.].\n return undefined; // Read the integer part, build right-to-left.\n\n var startIntPartIndex = this._currentIndex;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n this._currentIndex++;\n } // Advance to first non-digit.\n\n\n if (this._currentIndex != startIntPartIndex) {\n var scanIntPartIndex = this._currentIndex - 1;\n var multiplier = 1;\n\n while (scanIntPartIndex >= startIntPartIndex) {\n integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n multiplier *= 10;\n }\n } // Read the decimals.\n\n\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n this._currentIndex++; // There must be a least one digit following the .\n\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n frac *= 10;\n decimal += (this._string.charAt(this._currentIndex) - \"0\") / frac;\n this._currentIndex += 1;\n }\n } // Read the exponent part.\n\n\n if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\") {\n this._currentIndex++; // Read the sign of the exponent.\n\n if (this._string.charAt(this._currentIndex) == \"+\") {\n this._currentIndex++;\n } else if (this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n expsign = -1;\n } // There must be an exponent.\n\n\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n exponent *= 10;\n exponent += this._string.charAt(this._currentIndex) - \"0\";\n this._currentIndex++;\n }\n }\n\n var number = integer + decimal;\n number *= sign;\n if (exponent) number *= Math.pow(10, expsign * exponent);\n if (startIndex == this._currentIndex) return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return number;\n };\n\n Source.prototype._parseArcFlag = function () {\n if (this._currentIndex >= this._endIndex) return undefined;\n var flag = false;\n\n var flagChar = this._string.charAt(this._currentIndex++);\n\n if (flagChar == \"0\") flag = false;else if (flagChar == \"1\") flag = true;else return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return flag;\n };\n\n Source.prototype.parseSegment = function () {\n var lookahead = this._string[this._currentIndex];\n\n var command = this._pathSegTypeFromChar(lookahead);\n\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\n // Possibly an implicit command. Not allowed if this is the first command.\n if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n command = this._nextCommandHelper(lookahead, this._previousCommand);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n } else {\n this._currentIndex++;\n }\n\n this._previousCommand = command;\n\n switch (command) {\n case window.SVGPathSeg.PATHSEG_MOVETO_REL:\n return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\n return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_REL:\n return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_ABS:\n return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_CLOSEPATH:\n this._skipOptionalSpaces();\n\n return new window.SVGPathSegClosePath(owningPathSegList);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n var points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n var points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n\n case window.SVGPathSeg.PATHSEG_ARC_REL:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n\n case window.SVGPathSeg.PATHSEG_ARC_ABS:\n var points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber()\n };\n return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n\n default:\n throw \"Unknown path seg type.\";\n }\n };\n\n var builder = new Builder();\n var source = new Source(string);\n if (!source.initialCommandIsMoveTo()) return [];\n\n while (source.hasMoreData()) {\n var pathSeg = source.parseSegment();\n if (!pathSeg) return [];\n builder.appendSegment(pathSeg);\n }\n\n return builder.pathSegList;\n };\n }\n })(); // String.padEnd polyfill for IE11\n //\n // https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd\n\n\n if (!String.prototype.padEnd) {\n String.prototype.padEnd = function padEnd(targetLength, padString) {\n targetLength = targetLength >> 0; //floor if number or convert non-number to 0;\n\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\n\n if (this.length > targetLength) {\n return String(this);\n } else {\n targetLength = targetLength - this.length;\n\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n\n return String(this) + padString.slice(0, targetLength);\n }\n };\n }\n /* jshint ignore:end */\n\n Chart.prototype.axis = function () {};\n\n Chart.prototype.axis.labels = function (labels) {\n var $$ = this.internal;\n\n if (arguments.length) {\n Object.keys(labels).forEach(function (axisId) {\n $$.axis.setLabelText(axisId, labels[axisId]);\n });\n $$.axis.updateLabels();\n } // TODO: return some values?\n\n };\n\n Chart.prototype.axis.max = function (max) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length) {\n if (_typeof(max) === 'object') {\n if (isValue(max.x)) {\n config.axis_x_max = max.x;\n }\n\n if (isValue(max.y)) {\n config.axis_y_max = max.y;\n }\n\n if (isValue(max.y2)) {\n config.axis_y2_max = max.y2;\n }\n } else {\n config.axis_y_max = config.axis_y2_max = max;\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n } else {\n return {\n x: config.axis_x_max,\n y: config.axis_y_max,\n y2: config.axis_y2_max\n };\n }\n };\n\n Chart.prototype.axis.min = function (min) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length) {\n if (_typeof(min) === 'object') {\n if (isValue(min.x)) {\n config.axis_x_min = min.x;\n }\n\n if (isValue(min.y)) {\n config.axis_y_min = min.y;\n }\n\n if (isValue(min.y2)) {\n config.axis_y2_min = min.y2;\n }\n } else {\n config.axis_y_min = config.axis_y2_min = min;\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n } else {\n return {\n x: config.axis_x_min,\n y: config.axis_y_min,\n y2: config.axis_y2_min\n };\n }\n };\n\n Chart.prototype.axis.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.axis.max(range.max);\n }\n\n if (isDefined(range.min)) {\n this.axis.min(range.min);\n }\n } else {\n return {\n max: this.axis.max(),\n min: this.axis.min()\n };\n }\n };\n\n Chart.prototype.category = function (i, category) {\n var $$ = this.internal,\n config = $$.config;\n\n if (arguments.length > 1) {\n config.axis_x_categories[i] = category;\n $$.redraw();\n }\n\n return config.axis_x_categories[i];\n };\n\n Chart.prototype.categories = function (categories) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!arguments.length) {\n return config.axis_x_categories;\n }\n\n config.axis_x_categories = categories;\n $$.redraw();\n return config.axis_x_categories;\n };\n\n Chart.prototype.resize = function (size) {\n var $$ = this.internal,\n config = $$.config;\n config.size_width = size ? size.width : null;\n config.size_height = size ? size.height : null;\n this.flush();\n };\n\n Chart.prototype.flush = function () {\n var $$ = this.internal;\n $$.updateAndRedraw({\n withLegend: true,\n withTransition: false,\n withTransitionForTransform: false\n });\n };\n\n Chart.prototype.destroy = function () {\n var $$ = this.internal;\n window.clearInterval($$.intervalForObserveInserted);\n\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n if (window.detachEvent) {\n window.detachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.removeEventListener) {\n window.removeEventListener('resize', $$.resizeIfElementDisplayed);\n } else {\n var wrapper = window.onresize; // check if no one else removed our wrapper and remove our resizeFunction from it\n\n if (wrapper && wrapper.add && wrapper.remove) {\n wrapper.remove($$.resizeFunction);\n }\n } // Removes the inner resize functions\n\n\n $$.resizeFunction.remove(); // Unbinds from the window focus event\n\n $$.unbindWindowFocus();\n $$.selectChart.classed('c3', false).html(\"\"); // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n\n Object.keys($$).forEach(function (key) {\n $$[key] = null;\n });\n return null;\n };\n\n Chart.prototype.color = function (id) {\n var $$ = this.internal;\n return $$.color(id); // more patterns\n };\n\n Chart.prototype.data = function (targetIds) {\n var targets = this.internal.data.targets;\n return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n return [].concat(targetIds).indexOf(t.id) >= 0;\n });\n };\n\n Chart.prototype.data.shown = function (targetIds) {\n return this.internal.filterTargetsToShow(this.data(targetIds));\n };\n\n Chart.prototype.data.values = function (targetId) {\n var targets,\n values = null;\n\n if (targetId) {\n targets = this.data(targetId);\n values = targets[0] ? targets[0].values.map(function (d) {\n return d.value;\n }) : null;\n }\n\n return values;\n };\n\n Chart.prototype.data.names = function (names) {\n this.internal.clearLegendItemTextBoxCache();\n return this.internal.updateDataAttributes('names', names);\n };\n\n Chart.prototype.data.colors = function (colors) {\n return this.internal.updateDataAttributes('colors', colors);\n };\n\n Chart.prototype.data.axes = function (axes) {\n return this.internal.updateDataAttributes('axes', axes);\n };\n\n Chart.prototype.flow = function (args) {\n var $$ = this.internal,\n targets,\n data,\n notfoundIds = [],\n orgDataCount = $$.getMaxDataCount(),\n dataCount,\n domain,\n baseTarget,\n baseValue,\n length = 0,\n tail = 0,\n diff,\n to;\n\n if (args.json) {\n data = $$.convertJsonToData(args.json, args.keys);\n } else if (args.rows) {\n data = $$.convertRowsToData(args.rows);\n } else if (args.columns) {\n data = $$.convertColumnsToData(args.columns);\n } else {\n return;\n }\n\n targets = $$.convertDataToTargets(data, true); // Update/Add data\n\n $$.data.targets.forEach(function (t) {\n var found = false,\n i,\n j;\n\n for (i = 0; i < targets.length; i++) {\n if (t.id === targets[i].id) {\n found = true;\n\n if (t.values[t.values.length - 1]) {\n tail = t.values[t.values.length - 1].index + 1;\n }\n\n length = targets[i].values.length;\n\n for (j = 0; j < length; j++) {\n targets[i].values[j].index = tail + j;\n\n if (!$$.isTimeSeries()) {\n targets[i].values[j].x = tail + j;\n }\n }\n\n t.values = t.values.concat(targets[i].values);\n targets.splice(i, 1);\n break;\n }\n }\n\n if (!found) {\n notfoundIds.push(t.id);\n }\n }); // Append null for not found targets\n\n $$.data.targets.forEach(function (t) {\n var i, j;\n\n for (i = 0; i < notfoundIds.length; i++) {\n if (t.id === notfoundIds[i]) {\n tail = t.values[t.values.length - 1].index + 1;\n\n for (j = 0; j < length; j++) {\n t.values.push({\n id: t.id,\n index: tail + j,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n value: null\n });\n }\n }\n }\n }); // Generate null values for new target\n\n if ($$.data.targets.length) {\n targets.forEach(function (t) {\n var i,\n missing = [];\n\n for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n missing.push({\n id: t.id,\n index: i,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n value: null\n });\n }\n\n t.values.forEach(function (v) {\n v.index += tail;\n\n if (!$$.isTimeSeries()) {\n v.x += tail;\n }\n });\n t.values = missing.concat(t.values);\n });\n }\n\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n // check data count because behavior needs to change when it's only one\n\n dataCount = $$.getMaxDataCount();\n baseTarget = $$.data.targets[0];\n baseValue = baseTarget.values[0]; // Update length to flow if needed\n\n if (isDefined(args.to)) {\n length = 0;\n to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n baseTarget.values.forEach(function (v) {\n if (v.x < to) {\n length++;\n }\n });\n } else if (isDefined(args.length)) {\n length = args.length;\n } // If only one data, update the domain to flow from left edge of the chart\n\n\n if (!orgDataCount) {\n if ($$.isTimeSeries()) {\n if (baseTarget.values.length > 1) {\n diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n } else {\n diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n }\n } else {\n diff = 1;\n }\n\n domain = [baseValue.x - diff, baseValue.x];\n $$.updateXDomain(null, true, true, false, domain);\n } else if (orgDataCount === 1) {\n if ($$.isTimeSeries()) {\n diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n $$.updateXDomain(null, true, true, false, domain);\n }\n } // Set targets\n\n\n $$.updateTargets($$.data.targets); // Redraw with new targets\n\n $$.redraw({\n flow: {\n index: baseValue.index,\n length: length,\n duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n done: args.done,\n orgDataCount: orgDataCount\n },\n withLegend: true,\n withTransition: orgDataCount > 1,\n withTrimXDomain: false,\n withUpdateXAxis: true\n });\n };\n\n ChartInternal.prototype.generateFlow = function (args) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n return function () {\n var targets = args.targets,\n flow = args.flow,\n drawBar = args.drawBar,\n drawLine = args.drawLine,\n drawArea = args.drawArea,\n cx = args.cx,\n cy = args.cy,\n xv = args.xv,\n xForText = args.xForText,\n yForText = args.yForText,\n duration = args.duration;\n\n var translateX,\n scaleX = 1,\n transform,\n flowIndex = flow.index,\n flowLength = flow.length,\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n orgDomain = $$.x.domain(),\n domain,\n durationForFlow = flow.duration || duration,\n done = flow.done || function () {},\n wait = $$.generateWait();\n\n var xgrid, xgridLines, mainRegion, mainText, mainBar, mainLine, mainArea, mainCircle; // set flag\n\n $$.flowing = true; // remove head data after rendered\n\n $$.data.targets.forEach(function (d) {\n d.values.splice(0, flowLength);\n }); // update x domain to generate axis elements for flow\n\n domain = $$.updateXDomain(targets, true, true); // update elements related to x scale\n\n if ($$.updateXGrid) {\n $$.updateXGrid(true);\n }\n\n xgrid = $$.xgrid || d3.selectAll([]); // xgrid needs to be obtained after updateXGrid\n\n xgridLines = $$.xgridLines || d3.selectAll([]);\n mainRegion = $$.mainRegion || d3.selectAll([]);\n mainText = $$.mainText || d3.selectAll([]);\n mainBar = $$.mainBar || d3.selectAll([]);\n mainLine = $$.mainLine || d3.selectAll([]);\n mainArea = $$.mainArea || d3.selectAll([]);\n mainCircle = $$.mainCircle || d3.selectAll([]); // generate transform to flow\n\n if (!flow.orgDataCount) {\n // if empty\n if ($$.data.targets[0].values.length !== 1) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n } else {\n translateX = diffDomain(domain) / 2;\n }\n }\n } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n }\n }\n\n scaleX = diffDomain(orgDomain) / diffDomain(domain);\n transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n $$.hideXGridFocus();\n var flowTransition = d3.transition().ease(d3.easeLinear).duration(durationForFlow);\n wait.add($$.xAxis($$.axes.x, flowTransition));\n wait.add(mainBar.transition(flowTransition).attr('transform', transform));\n wait.add(mainLine.transition(flowTransition).attr('transform', transform));\n wait.add(mainArea.transition(flowTransition).attr('transform', transform));\n wait.add(mainCircle.transition(flowTransition).attr('transform', transform));\n wait.add(mainText.transition(flowTransition).attr('transform', transform));\n wait.add(mainRegion.filter($$.isRegionOnX).transition(flowTransition).attr('transform', transform));\n wait.add(xgrid.transition(flowTransition).attr('transform', transform));\n wait.add(xgridLines.transition(flowTransition).attr('transform', transform));\n wait(function () {\n var i,\n shapes = [],\n texts = []; // remove flowed elements\n\n if (flowLength) {\n for (i = 0; i < flowLength; i++) {\n shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n }\n\n $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n $$.svg.select('.' + CLASS.xgrid).remove();\n } // draw again for removing flowed elements and reverting attr\n\n\n xgrid.attr('transform', null).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n xgridLines.attr('transform', null);\n xgridLines.select('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv);\n xgridLines.select('text').attr(\"x\", config.axis_rotated ? $$.width : 0).attr(\"y\", xv);\n mainBar.attr('transform', null).attr(\"d\", drawBar);\n mainLine.attr('transform', null).attr(\"d\", drawLine);\n mainArea.attr('transform', null).attr(\"d\", drawArea);\n mainCircle.attr('transform', null).attr(\"cx\", cx).attr(\"cy\", cy);\n mainText.attr('transform', null).attr('x', xForText).attr('y', yForText).style('fill-opacity', $$.opacityForText.bind($$));\n mainRegion.attr('transform', null);\n mainRegion.filter($$.isRegionOnX).attr(\"x\", $$.regionX.bind($$)).attr(\"width\", $$.regionWidth.bind($$)); // callback for end of flow\n\n done();\n $$.flowing = false;\n });\n };\n };\n\n Chart.prototype.focus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), this.revert();\n this.defocus();\n candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n\n if ($$.hasArcType()) {\n $$.expandArc(targetIds);\n }\n\n $$.toggleFocusLegend(targetIds, true);\n $$.focusedTargetIds = targetIds;\n $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n Chart.prototype.defocus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n\n $$.toggleFocusLegend(targetIds, false);\n $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n $$.defocusedTargetIds = targetIds;\n };\n\n Chart.prototype.revert = function (targetIds) {\n var $$ = this.internal,\n candidates;\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n\n if ($$.config.legend_show) {\n $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n $$.legend.selectAll($$.selectorLegends(targetIds)).filter(function () {\n return $$.d3.select(this).classed(CLASS.legendItemFocused);\n }).classed(CLASS.legendItemFocused, false);\n }\n\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n };\n\n Chart.prototype.xgrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!grids) {\n return config.grid_x_lines;\n }\n\n config.grid_x_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_x_lines;\n };\n\n Chart.prototype.xgrids.add = function (grids) {\n var $$ = this.internal;\n return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n };\n\n Chart.prototype.xgrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, true);\n };\n\n Chart.prototype.ygrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!grids) {\n return config.grid_y_lines;\n }\n\n config.grid_y_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_y_lines;\n };\n\n Chart.prototype.ygrids.add = function (grids) {\n var $$ = this.internal;\n return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n };\n\n Chart.prototype.ygrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, false);\n };\n\n Chart.prototype.groups = function (groups) {\n var $$ = this.internal,\n config = $$.config;\n\n if (isUndefined(groups)) {\n return config.data_groups;\n }\n\n config.data_groups = groups;\n $$.redraw();\n return config.data_groups;\n };\n\n Chart.prototype.legend = function () {};\n\n Chart.prototype.legend.show = function (targetIds) {\n var $$ = this.internal;\n $$.showLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({\n withLegend: true\n });\n };\n\n Chart.prototype.legend.hide = function (targetIds) {\n var $$ = this.internal;\n $$.hideLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({\n withLegend: false\n });\n };\n\n Chart.prototype.load = function (args) {\n var $$ = this.internal,\n config = $$.config; // update xs if specified\n\n if (args.xs) {\n $$.addXs(args.xs);\n } // update names if exists\n\n\n if ('names' in args) {\n Chart.prototype.data.names.bind(this)(args.names);\n } // update classes if exists\n\n\n if ('classes' in args) {\n Object.keys(args.classes).forEach(function (id) {\n config.data_classes[id] = args.classes[id];\n });\n } // update categories if exists\n\n\n if ('categories' in args && $$.isCategorized()) {\n config.axis_x_categories = args.categories;\n } // update axes if exists\n\n\n if ('axes' in args) {\n Object.keys(args.axes).forEach(function (id) {\n config.data_axes[id] = args.axes[id];\n });\n } // update colors if exists\n\n\n if ('colors' in args) {\n Object.keys(args.colors).forEach(function (id) {\n config.data_colors[id] = args.colors[id];\n });\n } // use cache if exists\n\n\n if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n $$.load($$.getCaches(args.cacheIds), args.done);\n return;\n } // unload if needed\n\n\n if ('unload' in args) {\n // TODO: do not unload if target will load (included in url/rows/columns)\n $$.unload($$.mapToTargetIds(typeof args.unload === 'boolean' && args.unload ? null : args.unload), function () {\n $$.loadFromArgs(args);\n });\n } else {\n $$.loadFromArgs(args);\n }\n };\n\n Chart.prototype.unload = function (args) {\n var $$ = this.internal;\n args = args || {};\n\n if (args instanceof Array) {\n args = {\n ids: args\n };\n } else if (typeof args === 'string') {\n args = {\n ids: [args]\n };\n }\n\n $$.unload($$.mapToTargetIds(args.ids), function () {\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n\n if (args.done) {\n args.done();\n }\n });\n };\n\n Chart.prototype.regions = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!regions) {\n return config.regions;\n }\n\n config.regions = regions;\n $$.redrawWithoutRescale();\n return config.regions;\n };\n\n Chart.prototype.regions.add = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n\n if (!regions) {\n return config.regions;\n }\n\n config.regions = config.regions.concat(regions);\n $$.redrawWithoutRescale();\n return config.regions;\n };\n\n Chart.prototype.regions.remove = function (options) {\n var $$ = this.internal,\n config = $$.config,\n duration,\n classes,\n regions;\n options = options || {};\n duration = getOption(options, \"duration\", config.transition_duration);\n classes = getOption(options, \"classes\", [CLASS.region]);\n regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) {\n return '.' + c;\n }));\n (duration ? regions.transition().duration(duration) : regions).style('opacity', 0).remove();\n config.regions = config.regions.filter(function (region) {\n var found = false;\n\n if (!region['class']) {\n return true;\n }\n\n region['class'].split(' ').forEach(function (c) {\n if (classes.indexOf(c) >= 0) {\n found = true;\n }\n });\n return !found;\n });\n return config.regions;\n };\n\n Chart.prototype.selected = function (targetId) {\n var $$ = this.internal,\n d3 = $$.d3;\n return $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape).filter(function () {\n return d3.select(this).classed(CLASS.SELECTED);\n }).nodes().map(function (d) {\n var data = d.__data__;\n return data.data ? data.data : data;\n });\n };\n\n Chart.prototype.select = function (ids, indices, resetOther) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n\n if (!config.data_selection_enabled) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED); // line/area selection not supported yet\n\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d) && !isSelected) {\n toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n }\n } else if (isDefined(resetOther) && resetOther) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n });\n };\n\n Chart.prototype.unselect = function (ids, indices) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n\n if (!config.data_selection_enabled) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED); // line/area selection not supported yet\n\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d)) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n }\n });\n };\n\n Chart.prototype.show = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n $$.removeHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n targets.transition().style('display', 'initial', 'important').style('opacity', 1, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 1);\n });\n\n if (options.withLegend) {\n $$.showLegend(targetIds);\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n };\n\n Chart.prototype.hide = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n $$.addHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n targets.transition().style('opacity', 0, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 0);\n targets.style('display', 'none');\n });\n\n if (options.withLegend) {\n $$.hideLegend(targetIds);\n }\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n };\n\n Chart.prototype.toggle = function (targetIds, options) {\n var that = this,\n $$ = this.internal;\n $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n });\n };\n\n Chart.prototype.tooltip = function () {};\n\n Chart.prototype.tooltip.show = function (args) {\n var $$ = this.internal,\n targets,\n data,\n mouse = {}; // determine mouse position on the chart\n\n if (args.mouse) {\n mouse = args.mouse;\n } else {\n // determine focus data\n if (args.data) {\n data = args.data;\n } else if (typeof args.x !== 'undefined') {\n if (args.id) {\n targets = $$.data.targets.filter(function (t) {\n return t.id === args.id;\n });\n } else {\n targets = $$.data.targets;\n }\n\n data = $$.filterByX(targets, args.x).slice(0, 1)[0];\n }\n\n mouse = data ? $$.getMousePosition(data) : null;\n } // emulate mouse events to show\n\n\n $$.dispatchEvent('mousemove', mouse);\n $$.config.tooltip_onshow.call($$, data);\n };\n\n Chart.prototype.tooltip.hide = function () {\n // TODO: get target data by checking the state of focus\n this.internal.dispatchEvent('mouseout', 0);\n this.internal.config.tooltip_onhide.call(this);\n };\n\n Chart.prototype.transform = function (type, targetIds) {\n var $$ = this.internal,\n options = ['pie', 'donut'].indexOf(type) >= 0 ? {\n withTransform: true\n } : null;\n $$.transformTo(targetIds, type, options);\n };\n\n ChartInternal.prototype.transformTo = function (targetIds, type, optionsForRedraw) {\n var $$ = this,\n withTransitionForAxis = !$$.hasArcType(),\n options = optionsForRedraw || {\n withTransitionForAxis: withTransitionForAxis\n };\n options.withTransitionForTransform = false;\n $$.transiting = false;\n $$.setTargetType(targetIds, type);\n $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n\n $$.updateAndRedraw(options);\n };\n\n Chart.prototype.x = function (x) {\n var $$ = this.internal;\n\n if (arguments.length) {\n $$.updateTargetX($$.data.targets, x);\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n }\n\n return $$.data.xs;\n };\n\n Chart.prototype.xs = function (xs) {\n var $$ = this.internal;\n\n if (arguments.length) {\n $$.updateTargetXs($$.data.targets, xs);\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true\n });\n }\n\n return $$.data.xs;\n };\n\n Chart.prototype.zoom = function (domain) {\n var $$ = this.internal;\n\n if (domain) {\n if ($$.isTimeSeries()) {\n domain = domain.map(function (x) {\n return $$.parseDate(x);\n });\n }\n\n if ($$.config.subchart_show) {\n $$.brush.selectionAsValue(domain, true);\n } else {\n $$.updateXDomain(null, true, false, false, domain);\n $$.redraw({\n withY: $$.config.zoom_rescale,\n withSubchart: false\n });\n }\n\n $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n return domain;\n } else {\n return $$.x.domain();\n }\n };\n\n Chart.prototype.zoom.enable = function (enabled) {\n var $$ = this.internal;\n $$.config.zoom_enabled = enabled;\n $$.updateAndRedraw();\n };\n\n Chart.prototype.unzoom = function () {\n var $$ = this.internal;\n\n if ($$.config.subchart_show) {\n $$.brush.clear();\n } else {\n $$.updateXDomain(null, true, false, false, $$.subX.domain());\n $$.redraw({\n withY: $$.config.zoom_rescale,\n withSubchart: false\n });\n }\n };\n\n Chart.prototype.zoom.max = function (max) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n\n if (max === 0 || max) {\n config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n } else {\n return config.zoom_x_max;\n }\n };\n\n Chart.prototype.zoom.min = function (min) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n\n if (min === 0 || min) {\n config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n } else {\n return config.zoom_x_min;\n }\n };\n\n Chart.prototype.zoom.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.domain.max(range.max);\n }\n\n if (isDefined(range.min)) {\n this.domain.min(range.min);\n }\n } else {\n return {\n max: this.domain.max(),\n min: this.domain.min()\n };\n }\n };\n\n ChartInternal.prototype.initPie = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.pie = d3.pie().value(function (d) {\n return d.values.reduce(function (a, b) {\n return a + b.value;\n }, 0);\n });\n var orderFct = $$.getOrderFunction(); // we need to reverse the returned order if asc or desc to have the slice in expected order.\n\n if (orderFct && ($$.isOrderAsc() || $$.isOrderDesc())) {\n var defaultSort = orderFct;\n\n orderFct = function orderFct(t1, t2) {\n return defaultSort(t1, t2) * -1;\n };\n }\n\n $$.pie.sort(orderFct || null);\n };\n\n ChartInternal.prototype.updateRadius = function () {\n var $$ = this,\n config = $$.config,\n w = config.gauge_width || config.donut_width,\n gaugeArcWidth = $$.filterTargetsToShow($$.data.targets).length * $$.config.gauge_arcs_minWidth;\n $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2 * ($$.hasType('gauge') ? 0.85 : 1);\n $$.radius = $$.radiusExpanded * 0.95;\n $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n $$.gaugeArcWidth = w ? w : gaugeArcWidth <= $$.radius - $$.innerRadius ? $$.radius - $$.innerRadius : gaugeArcWidth <= $$.radius ? gaugeArcWidth : $$.radius;\n };\n\n ChartInternal.prototype.updateArc = function () {\n var $$ = this;\n $$.svgArc = $$.getSvgArc();\n $$.svgArcExpanded = $$.getSvgArcExpanded();\n $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n };\n\n ChartInternal.prototype.updateAngle = function (d) {\n var $$ = this,\n config = $$.config,\n found = false,\n index = 0,\n gMin,\n gMax,\n gTic,\n gValue;\n\n if (!config) {\n return null;\n }\n\n $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n if (!found && t.data.id === d.data.id) {\n found = true;\n d = t;\n d.index = index;\n }\n\n index++;\n });\n\n if (isNaN(d.startAngle)) {\n d.startAngle = 0;\n }\n\n if (isNaN(d.endAngle)) {\n d.endAngle = d.startAngle;\n }\n\n if ($$.isGaugeType(d.data)) {\n gMin = config.gauge_min;\n gMax = config.gauge_max;\n gTic = Math.PI * (config.gauge_fullCircle ? 2 : 1) / (gMax - gMin);\n gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : gMax - gMin;\n d.startAngle = config.gauge_startingAngle;\n d.endAngle = d.startAngle + gTic * gValue;\n }\n\n return found ? d : null;\n };\n\n ChartInternal.prototype.getSvgArc = function () {\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n arc = $$.d3.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index : $$.radius;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n }),\n newArc = function newArc(d, withoutUpdate) {\n var updated;\n\n if (withoutUpdate) {\n return arc(d);\n } // for interpolate\n\n\n updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n }; // TODO: extends all function\n\n\n newArc.centroid = arc.centroid;\n return newArc;\n };\n\n ChartInternal.prototype.getSvgArcExpanded = function (rate) {\n rate = rate || 1;\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n expandWidth = Math.min($$.radiusExpanded * rate - $$.radius, singleArcWidth * 0.8 - (1 - rate) * 100),\n arc = $$.d3.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index + expandWidth : $$.radiusExpanded * rate;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n });\n return function (d) {\n var updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.getArc = function (d, withoutUpdate, force) {\n return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n };\n\n ChartInternal.prototype.transformForArcLabel = function (d) {\n var $$ = this,\n config = $$.config,\n updated = $$.updateAngle(d),\n c,\n x,\n y,\n h,\n ratio,\n translate = \"\",\n hasGauge = $$.hasType('gauge');\n\n if (updated && !hasGauge) {\n c = this.svgArc.centroid(updated);\n x = isNaN(c[0]) ? 0 : c[0];\n y = isNaN(c[1]) ? 0 : c[1];\n h = Math.sqrt(x * x + y * y);\n\n if ($$.hasType('donut') && config.donut_label_ratio) {\n ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n } else if ($$.hasType('pie') && config.pie_label_ratio) {\n ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n } else {\n ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n }\n\n translate = \"translate(\" + x * ratio + ',' + y * ratio + \")\";\n } else if (updated && hasGauge && $$.filterTargetsToShow($$.data.targets).length > 1) {\n var y1 = Math.sin(updated.endAngle - Math.PI / 2);\n x = Math.cos(updated.endAngle - Math.PI / 2) * ($$.radiusExpanded + 25);\n y = y1 * ($$.radiusExpanded + 15 - Math.abs(y1 * 10)) + 3;\n translate = \"translate(\" + x + ',' + y + \")\";\n }\n\n return translate;\n };\n\n ChartInternal.prototype.getArcRatio = function (d) {\n var $$ = this,\n config = $$.config,\n whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n return d ? (d.endAngle - d.startAngle) / whole : null;\n };\n\n ChartInternal.prototype.convertToArcData = function (d) {\n return this.addName({\n id: d.data.id,\n value: d.value,\n ratio: this.getArcRatio(d),\n index: d.index\n });\n };\n\n ChartInternal.prototype.textForArcLabel = function (d) {\n var $$ = this,\n updated,\n value,\n ratio,\n id,\n format;\n\n if (!$$.shouldShowArcLabel()) {\n return \"\";\n }\n\n updated = $$.updateAngle(d);\n value = updated ? updated.value : null;\n ratio = $$.getArcRatio(updated);\n id = d.data.id;\n\n if (!$$.hasType('gauge') && !$$.meetsArcLabelThreshold(ratio)) {\n return \"\";\n }\n\n format = $$.getArcLabelFormat();\n return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n };\n\n ChartInternal.prototype.textForGaugeMinMax = function (value, isMax) {\n var $$ = this,\n format = $$.getGaugeLabelExtents();\n return format ? format(value, isMax) : value;\n };\n\n ChartInternal.prototype.expandArc = function (targetIds) {\n var $$ = this,\n interval; // MEMO: avoid to cancel transition\n\n if ($$.transiting) {\n interval = window.setInterval(function () {\n if (!$$.transiting) {\n window.clearInterval(interval);\n\n if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n $$.expandArc(targetIds);\n }\n }\n }, 10);\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n if (!$$.shouldExpand(d.data.id)) {\n return;\n }\n\n $$.d3.select(this).selectAll('path').transition().duration($$.expandDuration(d.data.id)).attr(\"d\", $$.svgArcExpanded).transition().duration($$.expandDuration(d.data.id) * 2).attr(\"d\", $$.svgArcExpandedSub).each(function (d) {\n if ($$.isDonutType(d.data)) ;\n });\n });\n };\n\n ChartInternal.prototype.unexpandArc = function (targetIds) {\n var $$ = this;\n\n if ($$.transiting) {\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path').transition().duration(function (d) {\n return $$.expandDuration(d.data.id);\n }).attr(\"d\", $$.svgArc);\n $$.svg.selectAll('.' + CLASS.arc);\n };\n\n ChartInternal.prototype.expandDuration = function (id) {\n var $$ = this,\n config = $$.config;\n\n if ($$.isDonutType(id)) {\n return config.donut_expand_duration;\n } else if ($$.isGaugeType(id)) {\n return config.gauge_expand_duration;\n } else if ($$.isPieType(id)) {\n return config.pie_expand_duration;\n } else {\n return 50;\n }\n };\n\n ChartInternal.prototype.shouldExpand = function (id) {\n var $$ = this,\n config = $$.config;\n return $$.isDonutType(id) && config.donut_expand || $$.isGaugeType(id) && config.gauge_expand || $$.isPieType(id) && config.pie_expand;\n };\n\n ChartInternal.prototype.shouldShowArcLabel = function () {\n var $$ = this,\n config = $$.config,\n shouldShow = true;\n\n if ($$.hasType('donut')) {\n shouldShow = config.donut_label_show;\n } else if ($$.hasType('pie')) {\n shouldShow = config.pie_label_show;\n } // when gauge, always true\n\n\n return shouldShow;\n };\n\n ChartInternal.prototype.meetsArcLabelThreshold = function (ratio) {\n var $$ = this,\n config = $$.config,\n threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n return ratio >= threshold;\n };\n\n ChartInternal.prototype.getArcLabelFormat = function () {\n var $$ = this,\n config = $$.config,\n format = config.pie_label_format;\n\n if ($$.hasType('gauge')) {\n format = config.gauge_label_format;\n } else if ($$.hasType('donut')) {\n format = config.donut_label_format;\n }\n\n return format;\n };\n\n ChartInternal.prototype.getGaugeLabelExtents = function () {\n var $$ = this,\n config = $$.config;\n return config.gauge_label_extents;\n };\n\n ChartInternal.prototype.getArcTitle = function () {\n var $$ = this;\n return $$.hasType('donut') ? $$.config.donut_title : \"\";\n };\n\n ChartInternal.prototype.updateTargetsForArc = function (targets) {\n var $$ = this,\n main = $$.main,\n mainPies,\n mainPieEnter,\n classChartArc = $$.classChartArc.bind($$),\n classArcs = $$.classArcs.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainPies = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc).data($$.pie(targets)).attr(\"class\", function (d) {\n return classChartArc(d) + classFocus(d.data);\n });\n mainPieEnter = mainPies.enter().append(\"g\").attr(\"class\", classChartArc);\n mainPieEnter.append('g').attr('class', classArcs);\n mainPieEnter.append(\"text\").attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\").style(\"opacity\", 0).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\"); // MEMO: can not keep same color..., but not bad to update color in redraw\n //mainPieUpdate.exit().remove();\n };\n\n ChartInternal.prototype.initArc = function () {\n var $$ = this;\n $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n $$.arcs.append('text').attr('class', CLASS.chartArcsTitle).style(\"text-anchor\", \"middle\").text($$.getArcTitle());\n };\n\n ChartInternal.prototype.redrawArc = function (duration, durationForExit, withTransform) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n main = $$.main,\n arcs,\n mainArc,\n arcLabelLines,\n mainArcLabelLine,\n hasGaugeType = $$.hasType('gauge');\n arcs = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc).data($$.arcData.bind($$));\n mainArc = arcs.enter().append('path').attr(\"class\", $$.classArc.bind($$)).style(\"fill\", function (d) {\n return $$.color(d.data);\n }).style(\"cursor\", function (d) {\n return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null;\n }).each(function (d) {\n if ($$.isGaugeType(d.data)) {\n d.startAngle = d.endAngle = config.gauge_startingAngle;\n }\n\n this._current = d;\n }).merge(arcs);\n\n if (hasGaugeType) {\n arcLabelLines = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arcLabelLine).data($$.arcData.bind($$));\n mainArcLabelLine = arcLabelLines.enter().append('rect').attr(\"class\", function (d) {\n return CLASS.arcLabelLine + ' ' + CLASS.target + ' ' + CLASS.target + '-' + d.data.id;\n }).merge(arcLabelLines);\n\n if ($$.filterTargetsToShow($$.data.targets).length === 1) {\n mainArcLabelLine.style(\"display\", \"none\");\n } else {\n mainArcLabelLine.style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data);\n }).style(\"display\", config.gauge_labelLine_show ? \"\" : \"none\").each(function (d) {\n var lineLength = 0,\n lineThickness = 2,\n x = 0,\n y = 0,\n transform = \"\";\n\n if ($$.hiddenTargetIds.indexOf(d.data.id) < 0) {\n var updated = $$.updateAngle(d),\n innerLineLength = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length * (updated.index + 1),\n lineAngle = updated.endAngle - Math.PI / 2,\n arcInnerRadius = $$.radius - innerLineLength,\n linePositioningAngle = lineAngle - (arcInnerRadius === 0 ? 0 : 1 / arcInnerRadius);\n lineLength = $$.radiusExpanded - $$.radius + innerLineLength;\n x = Math.cos(linePositioningAngle) * arcInnerRadius;\n y = Math.sin(linePositioningAngle) * arcInnerRadius;\n transform = \"rotate(\" + lineAngle * 180 / Math.PI + \", \" + x + \", \" + y + \")\";\n }\n\n d3.select(this).attr('x', x).attr('y', y).attr('width', lineLength).attr('height', lineThickness).attr('transform', transform).style(\"stroke-dasharray\", \"0, \" + (lineLength + lineThickness) + \", 0\");\n });\n }\n }\n\n mainArc.attr(\"transform\", function (d) {\n return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\";\n }).on('mouseover', config.interaction_enabled ? function (d) {\n var updated, arcData;\n\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n\n updated = $$.updateAngle(d);\n\n if (updated) {\n arcData = $$.convertToArcData(updated); // transitions\n\n $$.expandArc(updated.data.id);\n $$.api.focus(updated.data.id);\n $$.toggleFocusLegend(updated.data.id, true);\n $$.config.data_onmouseover(arcData, this);\n }\n } : null).on('mousemove', config.interaction_enabled ? function (d) {\n var updated = $$.updateAngle(d),\n arcData,\n selectedData;\n\n if (updated) {\n arcData = $$.convertToArcData(updated), selectedData = [arcData];\n $$.showTooltip(selectedData, this);\n }\n } : null).on('mouseout', config.interaction_enabled ? function (d) {\n var updated, arcData;\n\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n\n updated = $$.updateAngle(d);\n\n if (updated) {\n arcData = $$.convertToArcData(updated); // transitions\n\n $$.unexpandArc(updated.data.id);\n $$.api.revert();\n $$.revertLegend();\n $$.hideTooltip();\n $$.config.data_onmouseout(arcData, this);\n }\n } : null).on('click', config.interaction_enabled ? function (d, i) {\n var updated = $$.updateAngle(d),\n arcData;\n\n if (updated) {\n arcData = $$.convertToArcData(updated);\n\n if ($$.toggleShape) {\n $$.toggleShape(this, arcData, i);\n }\n\n $$.config.data_onclick.call($$.api, arcData, this);\n }\n } : null).each(function () {\n $$.transiting = true;\n }).transition().duration(duration).attrTween(\"d\", function (d) {\n var updated = $$.updateAngle(d),\n interpolate;\n\n if (!updated) {\n return function () {\n return \"M 0 0\";\n };\n } // if (this._current === d) {\n // this._current = {\n // startAngle: Math.PI*2,\n // endAngle: Math.PI*2,\n // };\n // }\n\n\n if (isNaN(this._current.startAngle)) {\n this._current.startAngle = 0;\n }\n\n if (isNaN(this._current.endAngle)) {\n this._current.endAngle = this._current.startAngle;\n }\n\n interpolate = d3.interpolate(this._current, updated);\n this._current = interpolate(0);\n return function (t) {\n var interpolated = interpolate(t);\n interpolated.data = d.data; // data.id will be updated by interporator\n\n return $$.getArc(interpolated, true);\n };\n }).attr(\"transform\", withTransform ? \"scale(1)\" : \"\").style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n }) // Where gauge reading color would receive customization.\n .call($$.endall, function () {\n $$.transiting = false;\n });\n arcs.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n main.selectAll('.' + CLASS.chartArc).select('text').style(\"opacity\", 0).attr('class', function (d) {\n return $$.isGaugeType(d.data) ? CLASS.gaugeValue : '';\n }).text($$.textForArcLabel.bind($$)).attr(\"transform\", $$.transformForArcLabel.bind($$)).style('font-size', function (d) {\n return $$.isGaugeType(d.data) && $$.filterTargetsToShow($$.data.targets).length === 1 ? Math.round($$.radius / 5) + 'px' : '';\n }).transition().duration(duration).style(\"opacity\", function (d) {\n return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0;\n });\n main.select('.' + CLASS.chartArcsTitle).style(\"opacity\", $$.hasType('donut') || hasGaugeType ? 1 : 0);\n\n if (hasGaugeType) {\n var index = 0;\n var backgroundArc = $$.arcs.select('g.' + CLASS.chartArcsBackground).selectAll('path.' + CLASS.chartArcsBackground).data($$.data.targets);\n backgroundArc.enter().append(\"path\").attr(\"class\", function (d, i) {\n return CLASS.chartArcsBackground + ' ' + CLASS.chartArcsBackground + '-' + i;\n }).merge(backgroundArc).attr(\"d\", function (d1) {\n if ($$.hiddenTargetIds.indexOf(d1.id) >= 0) {\n return \"M 0 0\";\n }\n\n var d = {\n data: [{\n value: config.gauge_max\n }],\n startAngle: config.gauge_startingAngle,\n endAngle: -1 * config.gauge_startingAngle * (config.gauge_fullCircle ? Math.PI : 1),\n index: index++\n };\n return $$.getArc(d, true, true);\n });\n backgroundArc.exit().remove();\n $$.arcs.select('.' + CLASS.chartArcsGaugeUnit).attr(\"dy\", \".75em\").text(config.gauge_label_show ? config.gauge_units : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMin).attr(\"dx\", -1 * ($$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_min, false) : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMax).attr(\"dx\", $$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_max, true) : '');\n }\n };\n\n ChartInternal.prototype.initGauge = function () {\n var arcs = this.arcs;\n\n if (this.hasType('gauge')) {\n arcs.append('g').attr(\"class\", CLASS.chartArcsBackground);\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeUnit).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMin).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMax).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n }\n };\n\n ChartInternal.prototype.getGaugeLabelHeight = function () {\n return this.config.gauge_label_show ? 20 : 0;\n };\n\n ChartInternal.prototype.hasCaches = function (ids) {\n for (var i = 0; i < ids.length; i++) {\n if (!(ids[i] in this.cache)) {\n return false;\n }\n }\n\n return true;\n };\n\n ChartInternal.prototype.addCache = function (id, target) {\n this.cache[id] = this.cloneTarget(target);\n };\n\n ChartInternal.prototype.getCaches = function (ids) {\n var targets = [],\n i;\n\n for (i = 0; i < ids.length; i++) {\n if (ids[i] in this.cache) {\n targets.push(this.cloneTarget(this.cache[ids[i]]));\n }\n }\n\n return targets;\n };\n\n ChartInternal.prototype.categoryName = function (i) {\n var config = this.config;\n return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n };\n\n ChartInternal.prototype.generateTargetClass = function (targetId) {\n return targetId || targetId === 0 ? ('-' + targetId).replace(/\\s/g, '-') : '';\n };\n\n ChartInternal.prototype.generateClass = function (prefix, targetId) {\n return \" \" + prefix + \" \" + prefix + this.generateTargetClass(targetId);\n };\n\n ChartInternal.prototype.classText = function (d) {\n return this.generateClass(CLASS.text, d.index);\n };\n\n ChartInternal.prototype.classTexts = function (d) {\n return this.generateClass(CLASS.texts, d.id);\n };\n\n ChartInternal.prototype.classShape = function (d) {\n return this.generateClass(CLASS.shape, d.index);\n };\n\n ChartInternal.prototype.classShapes = function (d) {\n return this.generateClass(CLASS.shapes, d.id);\n };\n\n ChartInternal.prototype.classLine = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n };\n\n ChartInternal.prototype.classLines = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n };\n\n ChartInternal.prototype.classCircle = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n };\n\n ChartInternal.prototype.classCircles = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n };\n\n ChartInternal.prototype.classBar = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n };\n\n ChartInternal.prototype.classBars = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n };\n\n ChartInternal.prototype.classArc = function (d) {\n return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n };\n\n ChartInternal.prototype.classArcs = function (d) {\n return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n };\n\n ChartInternal.prototype.classArea = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n };\n\n ChartInternal.prototype.classAreas = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n };\n\n ChartInternal.prototype.classRegion = function (d, i) {\n return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n };\n\n ChartInternal.prototype.classEvent = function (d) {\n return this.generateClass(CLASS.eventRect, d.index);\n };\n\n ChartInternal.prototype.classTarget = function (id) {\n var $$ = this;\n var additionalClassSuffix = $$.config.data_classes[id],\n additionalClass = '';\n\n if (additionalClassSuffix) {\n additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n }\n\n return $$.generateClass(CLASS.target, id) + additionalClass;\n };\n\n ChartInternal.prototype.classFocus = function (d) {\n return this.classFocused(d) + this.classDefocused(d);\n };\n\n ChartInternal.prototype.classFocused = function (d) {\n return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n };\n\n ChartInternal.prototype.classDefocused = function (d) {\n return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n };\n\n ChartInternal.prototype.classChartText = function (d) {\n return CLASS.chartText + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartLine = function (d) {\n return CLASS.chartLine + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartBar = function (d) {\n return CLASS.chartBar + this.classTarget(d.id);\n };\n\n ChartInternal.prototype.classChartArc = function (d) {\n return CLASS.chartArc + this.classTarget(d.data.id);\n };\n\n ChartInternal.prototype.getTargetSelectorSuffix = function (targetId) {\n return this.generateTargetClass(targetId).replace(/([?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\])/g, '\\\\$1');\n };\n\n ChartInternal.prototype.selectorTarget = function (id, prefix) {\n return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n };\n\n ChartInternal.prototype.selectorTargets = function (ids, prefix) {\n var $$ = this;\n ids = ids || [];\n return ids.length ? ids.map(function (id) {\n return $$.selectorTarget(id, prefix);\n }) : null;\n };\n\n ChartInternal.prototype.selectorLegend = function (id) {\n return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n };\n\n ChartInternal.prototype.selectorLegends = function (ids) {\n var $$ = this;\n return ids && ids.length ? ids.map(function (id) {\n return $$.selectorLegend(id);\n }) : null;\n };\n\n ChartInternal.prototype.getClipPath = function (id) {\n var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n };\n\n ChartInternal.prototype.appendClip = function (parent, id) {\n return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n };\n\n ChartInternal.prototype.getAxisClipX = function (forHorizontal) {\n // axis line width + padding for left\n var left = Math.max(30, this.margin.left);\n return forHorizontal ? -(1 + left) : -(left - 1);\n };\n\n ChartInternal.prototype.getAxisClipY = function (forHorizontal) {\n return forHorizontal ? -20 : -this.margin.top;\n };\n\n ChartInternal.prototype.getXAxisClipX = function () {\n var $$ = this;\n return $$.getAxisClipX(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getXAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipX = function () {\n var $$ = this;\n return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getAxisClipWidth = function (forHorizontal) {\n var $$ = this,\n left = Math.max(30, $$.margin.left),\n right = Math.max(30, $$.margin.right); // width + axis line width + padding for left/right\n\n return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n };\n\n ChartInternal.prototype.getAxisClipHeight = function (forHorizontal) {\n // less than 20 is not enough to show the axis label 'outer' without legend\n return (forHorizontal ? this.margin.bottom : this.margin.top + this.height) + 20;\n };\n\n ChartInternal.prototype.getXAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getXAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight(!$$.config.axis_rotated);\n };\n\n ChartInternal.prototype.getYAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n };\n\n ChartInternal.prototype.getYAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight($$.config.axis_rotated);\n };\n\n ChartInternal.prototype.generateColor = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n colors = config.data_colors,\n pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.schemeCategory10,\n callback = config.data_color,\n ids = [];\n return function (d) {\n var id = d.id || d.data && d.data.id || d,\n color; // if callback function is provided\n\n if (colors[id] instanceof Function) {\n color = colors[id](d);\n } // if specified, choose that color\n else if (colors[id]) {\n color = colors[id];\n } // if not specified, choose from pattern\n else {\n if (ids.indexOf(id) < 0) {\n ids.push(id);\n }\n\n color = pattern[ids.indexOf(id) % pattern.length];\n colors[id] = color;\n }\n\n return callback instanceof Function ? callback(color, d) : color;\n };\n };\n\n ChartInternal.prototype.generateLevelColor = function () {\n var $$ = this,\n config = $$.config,\n colors = config.color_pattern,\n threshold = config.color_threshold,\n asValue = threshold.unit === 'value',\n values = threshold.values && threshold.values.length ? threshold.values : [],\n max = threshold.max || 100;\n return notEmpty(threshold) && notEmpty(colors) ? function (value) {\n var i,\n v,\n color = colors[colors.length - 1];\n\n for (i = 0; i < values.length; i++) {\n v = asValue ? value : value * 100 / max;\n\n if (v < values[i]) {\n color = colors[i];\n break;\n }\n }\n\n return color;\n } : null;\n };\n\n ChartInternal.prototype.getDefaultConfig = function () {\n var config = {\n bindto: '#chart',\n svg_classname: undefined,\n size_width: undefined,\n size_height: undefined,\n padding_left: undefined,\n padding_right: undefined,\n padding_top: undefined,\n padding_bottom: undefined,\n resize_auto: true,\n zoom_enabled: false,\n zoom_initialRange: undefined,\n zoom_type: 'scroll',\n zoom_disableDefaultBehavior: false,\n zoom_privileged: false,\n zoom_rescale: false,\n zoom_onzoom: function zoom_onzoom() {},\n zoom_onzoomstart: function zoom_onzoomstart() {},\n zoom_onzoomend: function zoom_onzoomend() {},\n zoom_x_min: undefined,\n zoom_x_max: undefined,\n interaction_brighten: true,\n interaction_enabled: true,\n onmouseover: function onmouseover() {},\n onmouseout: function onmouseout() {},\n onresize: function onresize() {},\n onresized: function onresized() {},\n oninit: function oninit() {},\n onrendered: function onrendered() {},\n transition_duration: 350,\n data_epochs: 'epochs',\n data_x: undefined,\n data_xs: {},\n data_xFormat: '%Y-%m-%d',\n data_xLocaltime: true,\n data_xSort: true,\n data_idConverter: function data_idConverter(id) {\n return id;\n },\n data_names: {},\n data_classes: {},\n data_groups: [],\n data_axes: {},\n data_type: undefined,\n data_types: {},\n data_labels: {},\n data_order: 'desc',\n data_regions: {},\n data_color: undefined,\n data_colors: {},\n data_hide: false,\n data_filter: undefined,\n data_selection_enabled: false,\n data_selection_grouped: false,\n data_selection_isselectable: function data_selection_isselectable() {\n return true;\n },\n data_selection_multiple: true,\n data_selection_draggable: false,\n data_onclick: function data_onclick() {},\n data_onmouseover: function data_onmouseover() {},\n data_onmouseout: function data_onmouseout() {},\n data_onselected: function data_onselected() {},\n data_onunselected: function data_onunselected() {},\n data_url: undefined,\n data_headers: undefined,\n data_json: undefined,\n data_rows: undefined,\n data_columns: undefined,\n data_mimeType: undefined,\n data_keys: undefined,\n // configuration for no plot-able data supplied.\n data_empty_label_text: \"\",\n // subchart\n subchart_show: false,\n subchart_size_height: 60,\n subchart_axis_x_show: true,\n subchart_onbrush: function subchart_onbrush() {},\n // color\n color_pattern: [],\n color_threshold: {},\n // legend\n legend_show: true,\n legend_hide: false,\n legend_position: 'bottom',\n legend_inset_anchor: 'top-left',\n legend_inset_x: 10,\n legend_inset_y: 0,\n legend_inset_step: undefined,\n legend_item_onclick: undefined,\n legend_item_onmouseover: undefined,\n legend_item_onmouseout: undefined,\n legend_equally: false,\n legend_padding: 0,\n legend_item_tile_width: 10,\n legend_item_tile_height: 10,\n // axis\n axis_rotated: false,\n axis_x_show: true,\n axis_x_type: 'indexed',\n axis_x_localtime: true,\n axis_x_categories: [],\n axis_x_tick_centered: false,\n axis_x_tick_format: undefined,\n axis_x_tick_culling: {},\n axis_x_tick_culling_max: 10,\n axis_x_tick_count: undefined,\n axis_x_tick_fit: true,\n axis_x_tick_values: null,\n axis_x_tick_rotate: 0,\n axis_x_tick_outer: true,\n axis_x_tick_multiline: true,\n axis_x_tick_multilineMax: 0,\n axis_x_tick_width: null,\n axis_x_max: undefined,\n axis_x_min: undefined,\n axis_x_padding: {},\n axis_x_height: undefined,\n axis_x_selection: undefined,\n axis_x_label: {},\n axis_x_inner: undefined,\n axis_y_show: true,\n axis_y_type: undefined,\n axis_y_max: undefined,\n axis_y_min: undefined,\n axis_y_inverted: false,\n axis_y_center: undefined,\n axis_y_inner: undefined,\n axis_y_label: {},\n axis_y_tick_format: undefined,\n axis_y_tick_outer: true,\n axis_y_tick_values: null,\n axis_y_tick_rotate: 0,\n axis_y_tick_count: undefined,\n axis_y_tick_time_type: undefined,\n axis_y_tick_time_interval: undefined,\n axis_y_padding: {},\n axis_y_default: undefined,\n axis_y2_show: false,\n axis_y2_max: undefined,\n axis_y2_min: undefined,\n axis_y2_inverted: false,\n axis_y2_center: undefined,\n axis_y2_inner: undefined,\n axis_y2_label: {},\n axis_y2_tick_format: undefined,\n axis_y2_tick_outer: true,\n axis_y2_tick_values: null,\n axis_y2_tick_count: undefined,\n axis_y2_padding: {},\n axis_y2_default: undefined,\n // grid\n grid_x_show: false,\n grid_x_type: 'tick',\n grid_x_lines: [],\n grid_y_show: false,\n // not used\n // grid_y_type: 'tick',\n grid_y_lines: [],\n grid_y_ticks: 10,\n grid_focus_show: true,\n grid_lines_front: true,\n // point - point of each data\n point_show: true,\n point_r: 2.5,\n point_sensitivity: 10,\n point_focus_expand_enabled: true,\n point_focus_expand_r: undefined,\n point_select_r: undefined,\n // line\n line_connectNull: false,\n line_step_type: 'step',\n // bar\n bar_width: undefined,\n bar_width_ratio: 0.6,\n bar_width_max: undefined,\n bar_zerobased: true,\n bar_space: 0,\n // area\n area_zerobased: true,\n area_above: false,\n // pie\n pie_label_show: true,\n pie_label_format: undefined,\n pie_label_threshold: 0.05,\n pie_label_ratio: undefined,\n pie_expand: {},\n pie_expand_duration: 50,\n // gauge\n gauge_fullCircle: false,\n gauge_label_show: true,\n gauge_labelLine_show: true,\n gauge_label_format: undefined,\n gauge_min: 0,\n gauge_max: 100,\n gauge_startingAngle: -1 * Math.PI / 2,\n gauge_label_extents: undefined,\n gauge_units: undefined,\n gauge_width: undefined,\n gauge_arcs_minWidth: 5,\n gauge_expand: {},\n gauge_expand_duration: 50,\n // donut\n donut_label_show: true,\n donut_label_format: undefined,\n donut_label_threshold: 0.05,\n donut_label_ratio: undefined,\n donut_width: undefined,\n donut_title: \"\",\n donut_expand: {},\n donut_expand_duration: 50,\n // spline\n spline_interpolation_type: 'cardinal',\n // stanford\n stanford_lines: [],\n stanford_regions: [],\n stanford_texts: [],\n stanford_scaleMin: undefined,\n stanford_scaleMax: undefined,\n stanford_scaleWidth: undefined,\n stanford_scaleFormat: undefined,\n stanford_scaleValues: undefined,\n stanford_colors: undefined,\n stanford_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n // region - region to change style\n regions: [],\n // tooltip - show when mouseover on each data\n tooltip_show: true,\n tooltip_grouped: true,\n tooltip_order: undefined,\n tooltip_format_title: undefined,\n tooltip_format_name: undefined,\n tooltip_format_value: undefined,\n tooltip_horizontal: undefined,\n tooltip_position: undefined,\n tooltip_contents: function tooltip_contents(d, defaultTitleFormat, defaultValueFormat, color) {\n return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n },\n tooltip_init_show: false,\n tooltip_init_x: 0,\n tooltip_init_position: {\n top: '0px',\n left: '50px'\n },\n tooltip_onshow: function tooltip_onshow() {},\n tooltip_onhide: function tooltip_onhide() {},\n // title\n title_text: undefined,\n title_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n title_position: 'top-center'\n };\n Object.keys(this.additionalConfig).forEach(function (key) {\n config[key] = this.additionalConfig[key];\n }, this);\n return config;\n };\n\n ChartInternal.prototype.additionalConfig = {};\n\n ChartInternal.prototype.loadConfig = function (config) {\n var this_config = this.config,\n target,\n keys,\n read;\n\n function find() {\n var key = keys.shift(); // console.log(\"key =>\", key, \", target =>\", target);\n\n if (key && target && _typeof(target) === 'object' && key in target) {\n target = target[key];\n return find();\n } else if (!key) {\n return target;\n } else {\n return undefined;\n }\n }\n\n Object.keys(this_config).forEach(function (key) {\n target = config;\n keys = key.split('_');\n read = find(); // console.log(\"CONFIG : \", key, read);\n\n if (isDefined(read)) {\n this_config[key] = read;\n }\n });\n };\n\n ChartInternal.prototype.convertUrlToData = function (url, mimeType, headers, keys, done) {\n var $$ = this,\n type = mimeType ? mimeType : 'csv',\n f,\n converter;\n\n if (type === 'json') {\n f = $$.d3.json;\n converter = $$.convertJsonToData;\n } else if (type === 'tsv') {\n f = $$.d3.tsv;\n converter = $$.convertXsvToData;\n } else {\n f = $$.d3.csv;\n converter = $$.convertXsvToData;\n }\n\n f(url, headers).then(function (data) {\n done.call($$, converter.call($$, data, keys));\n }).catch(function (error) {\n throw error;\n });\n };\n\n ChartInternal.prototype.convertXsvToData = function (xsv) {\n var keys = xsv.columns,\n rows = xsv;\n\n if (rows.length === 0) {\n return {\n keys: keys,\n rows: [keys.reduce(function (row, key) {\n return Object.assign(row, _defineProperty({}, key, null));\n }, {})]\n };\n } else {\n // [].concat() is to convert result into a plain array otherwise\n // test is not happy because rows have properties.\n return {\n keys: keys,\n rows: [].concat(xsv)\n };\n }\n };\n\n ChartInternal.prototype.convertJsonToData = function (json, keys) {\n var $$ = this,\n new_rows = [],\n targetKeys,\n data;\n\n if (keys) {\n // when keys specified, json would be an array that includes objects\n if (keys.x) {\n targetKeys = keys.value.concat(keys.x);\n $$.config.data_x = keys.x;\n } else {\n targetKeys = keys.value;\n }\n\n new_rows.push(targetKeys);\n json.forEach(function (o) {\n var new_row = [];\n targetKeys.forEach(function (key) {\n // convert undefined to null because undefined data will be removed in convertDataToTargets()\n var v = $$.findValueInJson(o, key);\n\n if (isUndefined(v)) {\n v = null;\n }\n\n new_row.push(v);\n });\n new_rows.push(new_row);\n });\n data = $$.convertRowsToData(new_rows);\n } else {\n Object.keys(json).forEach(function (key) {\n new_rows.push([key].concat(json[key]));\n });\n data = $$.convertColumnsToData(new_rows);\n }\n\n return data;\n };\n\n ChartInternal.prototype.findValueInJson = function (object, path) {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n\n path = path.replace(/^\\./, ''); // strip a leading dot\n\n var pathArray = path.split('.');\n\n for (var i = 0; i < pathArray.length; ++i) {\n var k = pathArray[i];\n\n if (k in object) {\n object = object[k];\n } else {\n return;\n }\n }\n\n return object;\n };\n /**\n * Converts the rows to normalized data.\n * @param {any[][]} rows The row data\n * @return {Object}\n */\n\n\n ChartInternal.prototype.convertRowsToData = function (rows) {\n var newRows = [];\n var keys = rows[0];\n\n for (var i = 1; i < rows.length; i++) {\n var newRow = {};\n\n for (var j = 0; j < rows[i].length; j++) {\n if (isUndefined(rows[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n\n newRow[keys[j]] = rows[i][j];\n }\n\n newRows.push(newRow);\n }\n\n return {\n keys: keys,\n rows: newRows\n };\n };\n /**\n * Converts the columns to normalized data.\n * @param {any[][]} columns The column data\n * @return {Object}\n */\n\n\n ChartInternal.prototype.convertColumnsToData = function (columns) {\n var newRows = [];\n var keys = [];\n\n for (var i = 0; i < columns.length; i++) {\n var key = columns[i][0];\n\n for (var j = 1; j < columns[i].length; j++) {\n if (isUndefined(newRows[j - 1])) {\n newRows[j - 1] = {};\n }\n\n if (isUndefined(columns[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n\n newRows[j - 1][key] = columns[i][j];\n }\n\n keys.push(key);\n }\n\n return {\n keys: keys,\n rows: newRows\n };\n };\n /**\n * Converts the data format into the target format.\n * @param {!Object} data\n * @param {!Array} data.keys Ordered list of target IDs.\n * @param {!Array} data.rows Rows of data to convert.\n * @param {boolean} appendXs True to append to $$.data.xs, False to replace.\n * @return {!Array}\n */\n\n\n ChartInternal.prototype.convertDataToTargets = function (data, appendXs) {\n var $$ = this,\n config = $$.config,\n targets,\n ids,\n xs,\n keys,\n epochs; // handles format where keys are not orderly provided\n\n if (isArray(data)) {\n keys = Object.keys(data[0]);\n } else {\n keys = data.keys;\n data = data.rows;\n }\n\n xs = keys.filter($$.isX, $$);\n\n if (!$$.isStanfordGraphType()) {\n ids = keys.filter($$.isNotX, $$);\n } else {\n epochs = keys.filter($$.isEpochs, $$);\n ids = keys.filter($$.isNotXAndNotEpochs, $$);\n\n if (xs.length !== 1 || epochs.length !== 1 || ids.length !== 1) {\n throw new Error('You must define the \\'x\\' key name and the \\'epochs\\' for Stanford Diagrams');\n }\n } // save x for update data by load when custom x and c3.x API\n\n\n ids.forEach(function (id) {\n var xKey = $$.getXKey(id);\n\n if ($$.isCustomX() || $$.isTimeSeries()) {\n // if included in input data\n if (xs.indexOf(xKey) >= 0) {\n $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(data.map(function (d) {\n return d[xKey];\n }).filter(isValue).map(function (rawX, i) {\n return $$.generateTargetX(rawX, id, i);\n }));\n } // if not included in input data, find from preloaded data of other id's x\n else if (config.data_x) {\n $$.data.xs[id] = $$.getOtherTargetXs();\n } // if not included in input data, find from preloaded data\n else if (notEmpty(config.data_xs)) {\n $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n } // MEMO: if no x included, use same x of current will be used\n\n } else {\n $$.data.xs[id] = data.map(function (d, i) {\n return i;\n });\n }\n }); // check x is defined\n\n ids.forEach(function (id) {\n if (!$$.data.xs[id]) {\n throw new Error('x is not defined for id = \"' + id + '\".');\n }\n }); // convert to target\n\n targets = ids.map(function (id, index) {\n var convertedId = config.data_idConverter(id);\n return {\n id: convertedId,\n id_org: id,\n values: data.map(function (d, i) {\n var xKey = $$.getXKey(id),\n rawX = d[xKey],\n value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null,\n x,\n returnData; // use x as categories if custom x and categorized\n\n if ($$.isCustomX() && $$.isCategorized() && !isUndefined(rawX)) {\n if (index === 0 && i === 0) {\n config.axis_x_categories = [];\n }\n\n x = config.axis_x_categories.indexOf(rawX);\n\n if (x === -1) {\n x = config.axis_x_categories.length;\n config.axis_x_categories.push(rawX);\n }\n } else {\n x = $$.generateTargetX(rawX, id, i);\n } // mark as x = undefined if value is undefined and filter to remove after mapped\n\n\n if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n x = undefined;\n }\n\n returnData = {\n x: x,\n value: value,\n id: convertedId\n };\n\n if ($$.isStanfordGraphType()) {\n returnData.epochs = d[epochs];\n }\n\n return returnData;\n }).filter(function (v) {\n return isDefined(v.x);\n })\n };\n }); // finish targets\n\n targets.forEach(function (t) {\n var i; // sort values by its x\n\n if (config.data_xSort) {\n t.values = t.values.sort(function (v1, v2) {\n var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n return x1 - x2;\n });\n } // indexing each value\n\n\n i = 0;\n t.values.forEach(function (v) {\n v.index = i++;\n }); // this needs to be sorted because its index and value.index is identical\n\n $$.data.xs[t.id].sort(function (v1, v2) {\n return v1 - v2;\n });\n }); // cache information about values\n\n $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets); // set target types\n\n if (config.data_type) {\n $$.setTargetType($$.mapToIds(targets).filter(function (id) {\n return !(id in config.data_types);\n }), config.data_type);\n } // cache as original id keyed\n\n\n targets.forEach(function (d) {\n $$.addCache(d.id_org, d);\n });\n return targets;\n };\n\n ChartInternal.prototype.isEpochs = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_epochs && key === config.data_epochs;\n };\n\n ChartInternal.prototype.isX = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_x && key === config.data_x || notEmpty(config.data_xs) && hasValue(config.data_xs, key);\n };\n\n ChartInternal.prototype.isNotX = function (key) {\n return !this.isX(key);\n };\n\n ChartInternal.prototype.isNotXAndNotEpochs = function (key) {\n return !this.isX(key) && !this.isEpochs(key);\n };\n\n ChartInternal.prototype.getXKey = function (id) {\n var $$ = this,\n config = $$.config;\n return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n };\n\n ChartInternal.prototype.getXValuesOfXKey = function (key, targets) {\n var $$ = this,\n xValues,\n ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n ids.forEach(function (id) {\n if ($$.getXKey(id) === key) {\n xValues = $$.data.xs[id];\n }\n });\n return xValues;\n };\n\n ChartInternal.prototype.getXValue = function (id, i) {\n var $$ = this;\n return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n };\n\n ChartInternal.prototype.getOtherTargetXs = function () {\n var $$ = this,\n idsForX = Object.keys($$.data.xs);\n return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n };\n\n ChartInternal.prototype.getOtherTargetX = function (index) {\n var xs = this.getOtherTargetXs();\n return xs && index < xs.length ? xs[index] : null;\n };\n\n ChartInternal.prototype.addXs = function (xs) {\n var $$ = this;\n Object.keys(xs).forEach(function (id) {\n $$.config.data_xs[id] = xs[id];\n });\n };\n\n ChartInternal.prototype.addName = function (data) {\n var $$ = this,\n name;\n\n if (data) {\n name = $$.config.data_names[data.id];\n data.name = name !== undefined ? name : data.id;\n }\n\n return data;\n };\n\n ChartInternal.prototype.getValueOnIndex = function (values, index) {\n var valueOnIndex = values.filter(function (v) {\n return v.index === index;\n });\n return valueOnIndex.length ? valueOnIndex[0] : null;\n };\n\n ChartInternal.prototype.updateTargetX = function (targets, x) {\n var $$ = this;\n targets.forEach(function (t) {\n t.values.forEach(function (v, i) {\n v.x = $$.generateTargetX(x[i], t.id, i);\n });\n $$.data.xs[t.id] = x;\n });\n };\n\n ChartInternal.prototype.updateTargetXs = function (targets, xs) {\n var $$ = this;\n targets.forEach(function (t) {\n if (xs[t.id]) {\n $$.updateTargetX([t], xs[t.id]);\n }\n });\n };\n\n ChartInternal.prototype.generateTargetX = function (rawX, id, index) {\n var $$ = this,\n x;\n\n if ($$.isTimeSeries()) {\n x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n } else if ($$.isCustomX() && !$$.isCategorized()) {\n x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n } else {\n x = index;\n }\n\n return x;\n };\n\n ChartInternal.prototype.cloneTarget = function (target) {\n return {\n id: target.id,\n id_org: target.id_org,\n values: target.values.map(function (d) {\n return {\n x: d.x,\n value: d.value,\n id: d.id\n };\n })\n };\n };\n\n ChartInternal.prototype.getMaxDataCount = function () {\n var $$ = this;\n return $$.d3.max($$.data.targets, function (t) {\n return t.values.length;\n });\n };\n\n ChartInternal.prototype.mapToIds = function (targets) {\n return targets.map(function (d) {\n return d.id;\n });\n };\n\n ChartInternal.prototype.mapToTargetIds = function (ids) {\n var $$ = this;\n return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n };\n\n ChartInternal.prototype.hasTarget = function (targets, id) {\n var ids = this.mapToIds(targets),\n i;\n\n for (i = 0; i < ids.length; i++) {\n if (ids[i] === id) {\n return true;\n }\n }\n\n return false;\n };\n\n ChartInternal.prototype.isTargetToShow = function (targetId) {\n return this.hiddenTargetIds.indexOf(targetId) < 0;\n };\n\n ChartInternal.prototype.isLegendToShow = function (targetId) {\n return this.hiddenLegendIds.indexOf(targetId) < 0;\n };\n\n ChartInternal.prototype.filterTargetsToShow = function (targets) {\n var $$ = this;\n return targets.filter(function (t) {\n return $$.isTargetToShow(t.id);\n });\n };\n\n ChartInternal.prototype.mapTargetsToUniqueXs = function (targets) {\n var $$ = this;\n var xs = $$.d3.set($$.d3.merge(targets.map(function (t) {\n return t.values.map(function (v) {\n return +v.x;\n });\n }))).values();\n xs = $$.isTimeSeries() ? xs.map(function (x) {\n return new Date(+x);\n }) : xs.map(function (x) {\n return +x;\n });\n return xs.sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n });\n };\n\n ChartInternal.prototype.addHiddenTargetIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenTargetIds.indexOf(targetIds[i]) < 0) {\n this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds[i]);\n }\n }\n };\n\n ChartInternal.prototype.removeHiddenTargetIds = function (targetIds) {\n this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n ChartInternal.prototype.addHiddenLegendIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenLegendIds.indexOf(targetIds[i]) < 0) {\n this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds[i]);\n }\n }\n };\n\n ChartInternal.prototype.removeHiddenLegendIds = function (targetIds) {\n this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n ChartInternal.prototype.getValuesAsIdKeyed = function (targets) {\n var ys = {};\n targets.forEach(function (t) {\n ys[t.id] = [];\n t.values.forEach(function (v) {\n ys[t.id].push(v.value);\n });\n });\n return ys;\n };\n\n ChartInternal.prototype.checkValueInTargets = function (targets, checker) {\n var ids = Object.keys(targets),\n i,\n j,\n values;\n\n for (i = 0; i < ids.length; i++) {\n values = targets[ids[i]].values;\n\n for (j = 0; j < values.length; j++) {\n if (checker(values[j].value)) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n ChartInternal.prototype.hasNegativeValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v < 0;\n });\n };\n\n ChartInternal.prototype.hasPositiveValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v > 0;\n });\n };\n\n ChartInternal.prototype.isOrderDesc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'desc';\n };\n\n ChartInternal.prototype.isOrderAsc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'asc';\n };\n\n ChartInternal.prototype.getOrderFunction = function () {\n var $$ = this,\n config = $$.config,\n orderAsc = $$.isOrderAsc(),\n orderDesc = $$.isOrderDesc();\n\n if (orderAsc || orderDesc) {\n var reducer = function reducer(p, c) {\n return p + Math.abs(c.value);\n };\n\n return function (t1, t2) {\n var t1Sum = t1.values.reduce(reducer, 0),\n t2Sum = t2.values.reduce(reducer, 0);\n return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\n };\n } else if (isFunction(config.data_order)) {\n return config.data_order;\n } else if (isArray(config.data_order)) {\n var order = config.data_order;\n return function (t1, t2) {\n return order.indexOf(t1.id) - order.indexOf(t2.id);\n };\n }\n };\n\n ChartInternal.prototype.orderTargets = function (targets) {\n var fct = this.getOrderFunction();\n\n if (fct) {\n targets.sort(fct);\n }\n\n return targets;\n };\n\n ChartInternal.prototype.filterByX = function (targets, x) {\n return this.d3.merge(targets.map(function (t) {\n return t.values;\n })).filter(function (v) {\n return v.x - x === 0;\n });\n };\n\n ChartInternal.prototype.filterRemoveNull = function (data) {\n return data.filter(function (d) {\n return isValue(d.value);\n });\n };\n\n ChartInternal.prototype.filterByXDomain = function (targets, xDomain) {\n return targets.map(function (t) {\n return {\n id: t.id,\n id_org: t.id_org,\n values: t.values.filter(function (v) {\n return xDomain[0] <= v.x && v.x <= xDomain[1];\n })\n };\n });\n };\n\n ChartInternal.prototype.hasDataLabel = function () {\n var config = this.config;\n\n if (typeof config.data_labels === 'boolean' && config.data_labels) {\n return true;\n } else if (_typeof(config.data_labels) === 'object' && notEmpty(config.data_labels)) {\n return true;\n }\n\n return false;\n };\n\n ChartInternal.prototype.getDataLabelLength = function (min, max, key) {\n var $$ = this,\n lengths = [0, 0],\n paddingCoef = 1.3;\n $$.selectChart.select('svg').selectAll('.dummy').data([min, max]).enter().append('text').text(function (d) {\n return $$.dataLabelFormat(d.id)(d);\n }).each(function (d, i) {\n lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n }).remove();\n return lengths;\n };\n /**\n * Returns true if the given data point is not arc type, otherwise false.\n * @param {Object} d The data point\n * @return {boolean}\n */\n\n\n ChartInternal.prototype.isNoneArc = function (d) {\n return this.hasTarget(this.data.targets, d.id);\n };\n /**\n * Returns true if the given data point is arc type, otherwise false.\n * @param {Object} d The data point\n * @return {boolean}\n */\n\n\n ChartInternal.prototype.isArc = function (d) {\n return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n };\n\n ChartInternal.prototype.findClosestFromTargets = function (targets, pos) {\n var $$ = this,\n candidates; // map to array of closest points of each target\n\n candidates = targets.map(function (target) {\n return $$.findClosest(target.values, pos);\n }); // decide closest point and return\n\n return $$.findClosest(candidates, pos);\n };\n\n ChartInternal.prototype.findClosest = function (values, pos) {\n var $$ = this,\n minDist = $$.config.point_sensitivity,\n closest; // find mouseovering bar\n\n values.filter(function (v) {\n return v && $$.isBarType(v.id);\n }).forEach(function (v) {\n var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n\n if (!closest && $$.isWithinBar($$.d3.mouse(shape), shape)) {\n closest = v;\n }\n }); // find closest point from non-bar\n\n values.filter(function (v) {\n return v && !$$.isBarType(v.id);\n }).forEach(function (v) {\n var d = $$.config.tooltip_horizontal ? $$.horizontalDistance(v, pos) : $$.dist(v, pos);\n\n if (d < minDist) {\n minDist = d;\n closest = v;\n }\n });\n return closest;\n };\n\n ChartInternal.prototype.dist = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n yIndex = config.axis_rotated ? 0 : 1,\n y = $$.circleY(data, data.index),\n x = $$.x(data.x);\n return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n };\n\n ChartInternal.prototype.horizontalDistance = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n x = $$.x(data.x);\n return Math.abs(x - pos[xIndex]);\n };\n\n ChartInternal.prototype.convertValuesToStep = function (values) {\n var converted = [].concat(values),\n i;\n\n if (!this.isCategorized()) {\n return values;\n }\n\n for (i = values.length + 1; 0 < i; i--) {\n converted[i] = converted[i - 1];\n }\n\n converted[0] = {\n x: converted[0].x - 1,\n value: converted[0].value,\n id: converted[0].id\n };\n converted[values.length + 1] = {\n x: converted[values.length].x + 1,\n value: converted[values.length].value,\n id: converted[values.length].id\n };\n return converted;\n };\n\n ChartInternal.prototype.updateDataAttributes = function (name, attrs) {\n var $$ = this,\n config = $$.config,\n current = config['data_' + name];\n\n if (typeof attrs === 'undefined') {\n return current;\n }\n\n Object.keys(attrs).forEach(function (id) {\n current[id] = attrs[id];\n });\n $$.redraw({\n withLegend: true\n });\n return current;\n };\n\n ChartInternal.prototype.load = function (targets, args) {\n var $$ = this;\n\n if (targets) {\n // filter loading targets if needed\n if (args.filter) {\n targets = targets.filter(args.filter);\n } // set type if args.types || args.type specified\n\n\n if (args.type || args.types) {\n targets.forEach(function (t) {\n var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n $$.setTargetType(t.id, type);\n });\n } // Update/Add data\n\n\n $$.data.targets.forEach(function (d) {\n for (var i = 0; i < targets.length; i++) {\n if (d.id === targets[i].id) {\n d.values = targets[i].values;\n targets.splice(i, 1);\n break;\n }\n }\n });\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n } // Set targets\n\n\n $$.updateTargets($$.data.targets); // Redraw with new targets\n\n $$.redraw({\n withUpdateOrgXDomain: true,\n withUpdateXDomain: true,\n withLegend: true\n });\n\n if (args.done) {\n args.done();\n }\n };\n\n ChartInternal.prototype.loadFromArgs = function (args) {\n var $$ = this;\n\n if (args.data) {\n $$.load($$.convertDataToTargets(args.data), args);\n } else if (args.url) {\n $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n $$.load($$.convertDataToTargets(data), args);\n });\n } else if (args.json) {\n $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n } else if (args.rows) {\n $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n } else if (args.columns) {\n $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n } else {\n $$.load(null, args);\n }\n };\n\n ChartInternal.prototype.unload = function (targetIds, done) {\n var $$ = this;\n\n if (!done) {\n done = function done() {};\n } // filter existing target\n\n\n targetIds = targetIds.filter(function (id) {\n return $$.hasTarget($$.data.targets, id);\n }); // If no target, call done and return\n\n if (!targetIds || targetIds.length === 0) {\n done();\n return;\n }\n\n $$.svg.selectAll(targetIds.map(function (id) {\n return $$.selectorTarget(id);\n })).transition().style('opacity', 0).remove().call($$.endall, done);\n targetIds.forEach(function (id) {\n // Reset fadein for future load\n $$.withoutFadeIn[id] = false; // Remove target's elements\n\n if ($$.legend) {\n $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n } // Remove target\n\n\n $$.data.targets = $$.data.targets.filter(function (t) {\n return t.id !== id;\n });\n });\n };\n\n ChartInternal.prototype.getYDomainMin = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasNegativeValue;\n\n if (config.data_groups.length > 0) {\n hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n\n if (idsInGroup.length === 0) {\n continue;\n }\n\n baseId = idsInGroup[0]; // Consider negative values\n\n if (hasNegativeValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v < 0 ? v : 0;\n });\n } // Compute min\n\n\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n\n if (!ys[id]) {\n continue;\n }\n\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n\n return $$.d3.min(Object.keys(ys).map(function (key) {\n return $$.d3.min(ys[key]);\n }));\n };\n\n ChartInternal.prototype.getYDomainMax = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasPositiveValue;\n\n if (config.data_groups.length > 0) {\n hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n\n if (idsInGroup.length === 0) {\n continue;\n }\n\n baseId = idsInGroup[0]; // Consider positive values\n\n if (hasPositiveValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v > 0 ? v : 0;\n });\n } // Compute max\n\n\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n\n if (!ys[id]) {\n continue;\n }\n\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n\n return $$.d3.max(Object.keys(ys).map(function (key) {\n return $$.d3.max(ys[key]);\n }));\n };\n\n ChartInternal.prototype.getYDomain = function (targets, axisId, xDomain) {\n var $$ = this,\n config = $$.config,\n targetsByAxisId = targets.filter(function (t) {\n return $$.axis.getId(t.id) === axisId;\n }),\n yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n yDomainMin = $$.getYDomainMin(yTargets),\n yDomainMax = $$.getYDomainMax(yTargets),\n domain,\n domainLength,\n padding,\n padding_top,\n padding_bottom,\n center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n yDomainAbs,\n lengths,\n diff,\n ratio,\n isAllPositive,\n isAllNegative,\n isZeroBased = $$.hasType('bar', yTargets) && config.bar_zerobased || $$.hasType('area', yTargets) && config.area_zerobased,\n isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated; // MEMO: avoid inverting domain unexpectedly\n\n yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? yDomainMin < yMax ? yDomainMin : yMax - 10 : yDomainMin;\n yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? yMin < yDomainMax ? yDomainMax : yMin + 10 : yDomainMax;\n\n if (yTargets.length === 0) {\n // use current domain if target of axisId is none\n return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n }\n\n if (isNaN(yDomainMin)) {\n // set minimum to zero when not number\n yDomainMin = 0;\n }\n\n if (isNaN(yDomainMax)) {\n // set maximum to have same value as yDomainMin\n yDomainMax = yDomainMin;\n }\n\n if (yDomainMin === yDomainMax) {\n yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n }\n\n isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n isAllNegative = yDomainMin <= 0 && yDomainMax <= 0; // Cancel zerobased if axis_*_min / axis_*_max specified\n\n if (isValue(yMin) && isAllPositive || isValue(yMax) && isAllNegative) {\n isZeroBased = false;\n } // Bar/Area chart should be 0-based if all positive|negative\n\n\n if (isZeroBased) {\n if (isAllPositive) {\n yDomainMin = 0;\n }\n\n if (isAllNegative) {\n yDomainMax = 0;\n }\n }\n\n domainLength = Math.abs(yDomainMax - yDomainMin);\n padding = padding_top = padding_bottom = domainLength * 0.1;\n\n if (typeof center !== 'undefined') {\n yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n yDomainMax = center + yDomainAbs;\n yDomainMin = center - yDomainAbs;\n } // add padding for data label\n\n\n if (showHorizontalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n diff = diffDomain($$.y.range());\n ratio = [lengths[0] / diff, lengths[1] / diff];\n padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n } else if (showVerticalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n }\n\n if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n }\n\n if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n } // Bar/Area chart should be 0-based if all positive|negative\n\n\n if (isZeroBased) {\n if (isAllPositive) {\n padding_bottom = yDomainMin;\n }\n\n if (isAllNegative) {\n padding_top = -yDomainMax;\n }\n }\n\n domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n return isInverted ? domain.reverse() : domain;\n };\n\n ChartInternal.prototype.getXDomainMin = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_min) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min : $$.d3.min(targets, function (t) {\n return $$.d3.min(t.values, function (v) {\n return v.x;\n });\n });\n };\n\n ChartInternal.prototype.getXDomainMax = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_max) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max : $$.d3.max(targets, function (t) {\n return $$.d3.max(t.values, function (v) {\n return v.x;\n });\n });\n };\n\n ChartInternal.prototype.getXDomainPadding = function (domain) {\n var $$ = this,\n config = $$.config,\n diff = domain[1] - domain[0],\n maxDataCount,\n padding,\n paddingLeft,\n paddingRight;\n\n if ($$.isCategorized()) {\n padding = 0;\n } else if ($$.hasType('bar')) {\n maxDataCount = $$.getMaxDataCount();\n padding = maxDataCount > 1 ? diff / (maxDataCount - 1) / 2 : 0.5;\n } else {\n padding = diff * 0.01;\n }\n\n if (_typeof(config.axis_x_padding) === 'object' && notEmpty(config.axis_x_padding)) {\n paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n } else if (typeof config.axis_x_padding === 'number') {\n paddingLeft = paddingRight = config.axis_x_padding;\n } else {\n paddingLeft = paddingRight = padding;\n }\n\n return {\n left: paddingLeft,\n right: paddingRight\n };\n };\n\n ChartInternal.prototype.getXDomain = function (targets) {\n var $$ = this,\n xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n firstX = xDomain[0],\n lastX = xDomain[1],\n padding = $$.getXDomainPadding(xDomain),\n min = 0,\n max = 0; // show center of x domain if min and max are the same\n\n if (firstX - lastX === 0 && !$$.isCategorized()) {\n if ($$.isTimeSeries()) {\n firstX = new Date(firstX.getTime() * 0.5);\n lastX = new Date(lastX.getTime() * 1.5);\n } else {\n firstX = firstX === 0 ? 1 : firstX * 0.5;\n lastX = lastX === 0 ? -1 : lastX * 1.5;\n }\n }\n\n if (firstX || firstX === 0) {\n min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n }\n\n if (lastX || lastX === 0) {\n max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n }\n\n return [min, max];\n };\n\n ChartInternal.prototype.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n var $$ = this,\n config = $$.config;\n\n if (withUpdateOrgXDomain) {\n $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n $$.orgXDomain = $$.x.domain();\n\n if (config.zoom_enabled) {\n $$.zoom.update();\n }\n\n $$.subX.domain($$.x.domain());\n\n if ($$.brush) {\n $$.brush.updateScale($$.subX);\n }\n }\n\n if (withUpdateXDomain) {\n $$.x.domain(domain ? domain : !$$.brush || $$.brush.empty() ? $$.orgXDomain : $$.brush.selectionAsValue());\n } // Trim domain when too big by zoom mousemove event\n\n\n if (withTrim) {\n $$.x.domain($$.trimXDomain($$.x.orgDomain()));\n }\n\n return $$.x.domain();\n };\n\n ChartInternal.prototype.trimXDomain = function (domain) {\n var zoomDomain = this.getZoomDomain(),\n min = zoomDomain[0],\n max = zoomDomain[1];\n\n if (domain[0] <= min) {\n domain[1] = +domain[1] + (min - domain[0]);\n domain[0] = min;\n }\n\n if (max <= domain[1]) {\n domain[0] = +domain[0] - (domain[1] - max);\n domain[1] = max;\n }\n\n return domain;\n };\n\n ChartInternal.prototype.drag = function (mouse) {\n var $$ = this,\n config = $$.config,\n main = $$.main,\n d3 = $$.d3;\n var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n if (!config.data_selection_multiple) {\n return;\n } // skip when single selection because drag is used for multiple selection\n\n\n sx = $$.dragStart[0];\n sy = $$.dragStart[1];\n mx = mouse[0];\n my = mouse[1];\n minX = Math.min(sx, mx);\n maxX = Math.max(sx, mx);\n minY = config.data_selection_grouped ? $$.margin.top : Math.min(sy, my);\n maxY = config.data_selection_grouped ? $$.height : Math.max(sy, my);\n main.select('.' + CLASS.dragarea).attr('x', minX).attr('y', minY).attr('width', maxX - minX).attr('height', maxY - minY); // TODO: binary search when multiple xs\n\n main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).filter(function (d) {\n return config.data_selection_isselectable(d);\n }).each(function (d, i) {\n var shape = d3.select(this),\n isSelected = shape.classed(CLASS.SELECTED),\n isIncluded = shape.classed(CLASS.INCLUDED),\n _x,\n _y,\n _w,\n _h,\n toggle,\n isWithin = false,\n box;\n\n if (shape.classed(CLASS.circle)) {\n _x = shape.attr(\"cx\") * 1;\n _y = shape.attr(\"cy\") * 1;\n toggle = $$.togglePoint;\n isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n } else if (shape.classed(CLASS.bar)) {\n box = getPathBox(this);\n _x = box.x;\n _y = box.y;\n _w = box.width;\n _h = box.height;\n toggle = $$.togglePath;\n isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n } else {\n // line/area selection not supported yet\n return;\n }\n\n if (isWithin ^ isIncluded) {\n shape.classed(CLASS.INCLUDED, !isIncluded); // TODO: included/unincluded callback here\n\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle.call($$, !isSelected, shape, d, i);\n }\n });\n };\n\n ChartInternal.prototype.dragstart = function (mouse) {\n var $$ = this,\n config = $$.config;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n $$.dragStart = mouse;\n $$.main.select('.' + CLASS.chart).append('rect').attr('class', CLASS.dragarea).style('opacity', 0.1);\n $$.dragging = true;\n };\n\n ChartInternal.prototype.dragend = function () {\n var $$ = this,\n config = $$.config;\n\n if ($$.hasArcType()) {\n return;\n }\n\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n\n\n $$.main.select('.' + CLASS.dragarea).transition().duration(100).style('opacity', 0).remove();\n $$.main.selectAll('.' + CLASS.shape).classed(CLASS.INCLUDED, false);\n $$.dragging = false;\n };\n\n ChartInternal.prototype.getYFormat = function (forArc) {\n var $$ = this,\n formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n return function (v, ratio, id) {\n var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n return format.call($$, v, ratio);\n };\n };\n\n ChartInternal.prototype.yFormat = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n\n ChartInternal.prototype.y2Format = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n\n ChartInternal.prototype.defaultValueFormat = function (v) {\n return isValue(v) ? +v : \"\";\n };\n\n ChartInternal.prototype.defaultArcValueFormat = function (v, ratio) {\n return (ratio * 100).toFixed(1) + '%';\n };\n\n ChartInternal.prototype.dataLabelFormat = function (targetId) {\n var $$ = this,\n data_labels = $$.config.data_labels,\n format,\n defaultFormat = function defaultFormat(v) {\n return isValue(v) ? +v : \"\";\n }; // find format according to axis id\n\n\n if (typeof data_labels.format === 'function') {\n format = data_labels.format;\n } else if (_typeof(data_labels.format) === 'object') {\n if (data_labels.format[targetId]) {\n format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n } else {\n format = function format() {\n return '';\n };\n }\n } else {\n format = defaultFormat;\n }\n\n return format;\n };\n\n ChartInternal.prototype.initGrid = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n $$.grid = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid);\n\n if (config.grid_x_show) {\n $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n }\n\n if (config.grid_y_show) {\n $$.grid.append('g').attr('class', CLASS.ygrids);\n }\n\n if (config.grid_focus_show) {\n $$.grid.append('g').attr(\"class\", CLASS.xgridFocus).append('line').attr('class', CLASS.xgridFocus);\n }\n\n $$.xgrid = d3.selectAll([]);\n\n if (!config.grid_lines_front) {\n $$.initGridLines();\n }\n };\n\n ChartInternal.prototype.initGridLines = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.gridLines = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n $$.xgridLines = d3.selectAll([]);\n };\n\n ChartInternal.prototype.updateXGrid = function (withoutUpdate) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n $$.xgridAttr = config.axis_rotated ? {\n 'x1': 0,\n 'x2': $$.width,\n 'y1': function y1(d) {\n return $$.x(d) - tickOffset;\n },\n 'y2': function y2(d) {\n return $$.x(d) - tickOffset;\n }\n } : {\n 'x1': function x1(d) {\n return $$.x(d) + tickOffset;\n },\n 'x2': function x2(d) {\n return $$.x(d) + tickOffset;\n },\n 'y1': 0,\n 'y2': $$.height\n };\n\n $$.xgridAttr.opacity = function () {\n var pos = +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1');\n return pos === (config.axis_rotated ? $$.height : 0) ? 0 : 1;\n };\n\n var xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid).data(xgridData);\n var xgridEnter = xgrid.enter().append('line').attr(\"class\", CLASS.xgrid).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", 0);\n $$.xgrid = xgridEnter.merge(xgrid);\n\n if (!withoutUpdate) {\n $$.xgrid.attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n }\n\n xgrid.exit().remove();\n };\n\n ChartInternal.prototype.updateYGrid = function () {\n var $$ = this,\n config = $$.config,\n gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n var ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid).data(gridValues);\n var ygridEnter = ygrid.enter().append('line') // TODO: x1, x2, y1, y2, opacity need to be set here maybe\n .attr('class', CLASS.ygrid);\n $$.ygrid = ygridEnter.merge(ygrid);\n $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0).attr(\"x2\", config.axis_rotated ? $$.y : $$.width).attr(\"y1\", config.axis_rotated ? 0 : $$.y).attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n ygrid.exit().remove();\n $$.smoothLines($$.ygrid, 'grid');\n };\n\n ChartInternal.prototype.gridTextAnchor = function (d) {\n return d.position ? d.position : \"end\";\n };\n\n ChartInternal.prototype.gridTextDx = function (d) {\n return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n };\n\n ChartInternal.prototype.xGridTextX = function (d) {\n return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n };\n\n ChartInternal.prototype.yGridTextX = function (d) {\n return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n };\n\n ChartInternal.prototype.updateGrid = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n xgridLine,\n xgridLineEnter,\n ygridLine,\n ygridLineEnter,\n xv = $$.xv.bind($$),\n yv = $$.yv.bind($$),\n xGridTextX = $$.xGridTextX.bind($$),\n yGridTextX = $$.yGridTextX.bind($$); // hide if arc type\n\n $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n\n if (config.grid_x_show) {\n $$.updateXGrid();\n }\n\n xgridLine = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine).data(config.grid_x_lines); // enter\n\n xgridLineEnter = xgridLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n xgridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 0);\n xgridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").attr(\"x\", config.axis_rotated ? yGridTextX : xGridTextX).attr(\"y\", xv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0); // udpate\n\n $$.xgridLines = xgridLineEnter.merge(xgridLine); // done in d3.transition() of the end of this function\n // exit\n\n xgridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Y-Grid\n\n if (config.grid_y_show) {\n $$.updateYGrid();\n }\n\n ygridLine = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine).data(config.grid_y_lines); // enter\n\n ygridLineEnter = ygridLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n ygridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 0);\n ygridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").attr(\"x\", config.axis_rotated ? xGridTextX : yGridTextX).attr(\"y\", yv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0); // update\n\n $$.ygridLines = ygridLineEnter.merge(ygridLine);\n $$.ygridLines.select('line').transition().duration(duration).attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 1);\n $$.ygridLines.select('text').transition().duration(duration).attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$)).attr(\"y\", yv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1); // exit\n\n ygridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.redrawGrid = function (withTransition, transition) {\n var $$ = this,\n config = $$.config,\n xv = $$.xv.bind($$),\n lines = $$.xgridLines.select('line'),\n texts = $$.xgridLines.select('text');\n return [(withTransition ? lines.transition(transition) : lines).attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 1), (withTransition ? texts.transition(transition) : texts).attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$)).attr(\"y\", xv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.showXGridFocus = function (selectedData) {\n var $$ = this,\n config = $$.config,\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n xx = $$.xx.bind($$);\n\n if (!config.tooltip_show) {\n return;\n } // Hide when scatter plot exists\n\n\n if ($$.hasType('scatter') || $$.hasType('stanford') || $$.hasArcType()) {\n return;\n }\n\n focusEl.style(\"visibility\", \"visible\").data([dataToShow[0]]).attr(config.axis_rotated ? 'y1' : 'x1', xx).attr(config.axis_rotated ? 'y2' : 'x2', xx);\n $$.smoothLines(focusEl, 'grid');\n };\n\n ChartInternal.prototype.hideXGridFocus = function () {\n this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n };\n\n ChartInternal.prototype.updateXgridFocus = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('line.' + CLASS.xgridFocus).attr(\"x1\", config.axis_rotated ? 0 : -10).attr(\"x2\", config.axis_rotated ? $$.width : -10).attr(\"y1\", config.axis_rotated ? -10 : 0).attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n };\n\n ChartInternal.prototype.generateGridData = function (type, scale) {\n var $$ = this,\n gridData = [],\n xDomain,\n firstYear,\n lastYear,\n i,\n tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n\n if (type === 'year') {\n xDomain = $$.getXDomain();\n firstYear = xDomain[0].getFullYear();\n lastYear = xDomain[1].getFullYear();\n\n for (i = firstYear; i <= lastYear; i++) {\n gridData.push(new Date(i + '-01-01 00:00:00'));\n }\n } else {\n gridData = scale.ticks(10);\n\n if (gridData.length > tickNum) {\n // use only int\n gridData = gridData.filter(function (d) {\n return (\"\" + d).indexOf('.') < 0;\n });\n }\n }\n\n return gridData;\n };\n\n ChartInternal.prototype.getGridFilterToRemove = function (params) {\n return params ? function (line) {\n var found = false;\n [].concat(params).forEach(function (param) {\n if ('value' in param && line.value === param.value || 'class' in param && line['class'] === param['class']) {\n found = true;\n }\n });\n return found;\n } : function () {\n return true;\n };\n };\n\n ChartInternal.prototype.removeGridLines = function (params, forX) {\n var $$ = this,\n config = $$.config,\n toRemove = $$.getGridFilterToRemove(params),\n toShow = function toShow(line) {\n return !toRemove(line);\n },\n classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n\n $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove).transition().duration(config.transition_duration).style('opacity', 0).remove();\n\n if (forX) {\n config.grid_x_lines = config.grid_x_lines.filter(toShow);\n } else {\n config.grid_y_lines = config.grid_y_lines.filter(toShow);\n }\n };\n\n ChartInternal.prototype.initEventRect = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.eventRects).style('fill-opacity', 0);\n $$.eventRect = $$.main.select('.' + CLASS.eventRects).append('rect').attr('class', CLASS.eventRect); // event rect handle zoom event as well\n\n if (config.zoom_enabled && $$.zoom) {\n $$.eventRect.call($$.zoom).on(\"dblclick.zoom\", null);\n\n if (config.zoom_initialRange) {\n // WORKAROUND: Add transition to apply transform immediately when no subchart\n $$.eventRect.transition().duration(0).call($$.zoom.transform, $$.zoomTransform(config.zoom_initialRange));\n }\n }\n };\n\n ChartInternal.prototype.redrawEventRect = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n x,\n y,\n w,\n h; // TODO: rotated not supported yet\n\n x = 0;\n y = 0;\n w = $$.width;\n h = $$.height;\n\n function mouseout() {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n $$.hideXGridFocus();\n $$.hideTooltip();\n $$.unexpandCircles();\n $$.unexpandBars();\n } // rects for mouseover\n\n\n $$.main.select('.' + CLASS.eventRects).style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null);\n $$.eventRect.attr('x', x).attr('y', y).attr('width', w).attr('height', h).on('mouseout', config.interaction_enabled ? function () {\n if (!config) {\n return;\n } // chart is destroyed\n\n\n if ($$.hasArcType()) {\n return;\n }\n\n mouseout();\n } : null).on('mousemove', config.interaction_enabled ? function () {\n var targetsToShow, mouse, closest, sameXData, selectedData;\n\n if ($$.dragging) {\n return;\n } // do nothing when dragging\n\n\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n config.data_onmouseout.call($$.api, $$.mouseover);\n $$.mouseover = undefined;\n }\n\n if (!closest) {\n mouseout();\n return;\n }\n\n if ($$.isScatterOrStanfordType(closest) || !config.tooltip_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n } // show tooltip when cursor is close to some point\n\n\n selectedData = sameXData.map(function (d) {\n return $$.addName(d);\n });\n $$.showTooltip(selectedData, this); // expand points\n\n if (config.point_focus_expand_enabled) {\n $$.unexpandCircles();\n selectedData.forEach(function (d) {\n $$.expandCircles(d.index, d.id, false);\n });\n }\n\n $$.expandBars(closest.index, closest.id, true); // Show xgrid focus line\n\n $$.showXGridFocus(selectedData); // Show cursor as pointer if point is close to mouse position\n\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n\n if (!$$.mouseover) {\n config.data_onmouseover.call($$.api, closest);\n $$.mouseover = closest;\n }\n }\n } : null).on('click', config.interaction_enabled ? function () {\n var targetsToShow, mouse, closest, sameXData;\n\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if (!closest) {\n return;\n } // select if selection enabled\n\n\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n if ($$.isScatterOrStanfordType(closest) || !config.data_selection_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n }\n\n sameXData.forEach(function (d) {\n $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.shape + '-' + d.index).each(function () {\n if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n $$.toggleShape(this, d, d.index);\n config.data_onclick.call($$.api, d, this);\n }\n });\n });\n }\n } : null).call(config.interaction_enabled && config.data_selection_draggable && $$.drag ? d3.drag().on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('start', function () {\n $$.dragstart(d3.mouse(this));\n }).on('end', function () {\n $$.dragend();\n }) : function () {});\n };\n\n ChartInternal.prototype.getMousePosition = function (data) {\n var $$ = this;\n return [$$.x(data.x), $$.getYScale(data.id)(data.value)];\n };\n\n ChartInternal.prototype.dispatchEvent = function (type, mouse) {\n var $$ = this,\n selector = '.' + CLASS.eventRect,\n eventRect = $$.main.select(selector).node(),\n box = eventRect.getBoundingClientRect(),\n x = box.left + (mouse ? mouse[0] : 0),\n y = box.top + (mouse ? mouse[1] : 0),\n event = document.createEvent(\"MouseEvents\");\n event.initMouseEvent(type, true, true, window, 0, x, y, x, y, false, false, false, false, 0, null);\n eventRect.dispatchEvent(event);\n };\n\n ChartInternal.prototype.initLegend = function () {\n var $$ = this;\n $$.legendItemTextBox = {};\n $$.legendHasRendered = false;\n $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n\n if (!$$.config.legend_show) {\n $$.legend.style('visibility', 'hidden');\n $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n return;\n } // MEMO: call here to update legend box and tranlate for all\n // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n\n\n $$.updateLegendWithDefaults();\n };\n\n ChartInternal.prototype.updateLegendWithDefaults = function () {\n var $$ = this;\n $$.updateLegend($$.mapToIds($$.data.targets), {\n withTransform: false,\n withTransitionForTransform: false,\n withTransition: false\n });\n };\n\n ChartInternal.prototype.updateSizeForLegend = function (legendHeight, legendWidth) {\n var $$ = this,\n config = $$.config,\n insetLegendPosition = {\n top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n };\n $$.margin3 = {\n top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n right: NaN,\n bottom: 0,\n left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n };\n };\n\n ChartInternal.prototype.transformLegend = function (withTransition) {\n var $$ = this;\n (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n };\n\n ChartInternal.prototype.updateLegendStep = function (step) {\n this.legendStep = step;\n };\n\n ChartInternal.prototype.updateLegendItemWidth = function (w) {\n this.legendItemWidth = w;\n };\n\n ChartInternal.prototype.updateLegendItemHeight = function (h) {\n this.legendItemHeight = h;\n };\n\n ChartInternal.prototype.getLegendWidth = function () {\n var $$ = this;\n return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n };\n\n ChartInternal.prototype.getLegendHeight = function () {\n var $$ = this,\n h = 0;\n\n if ($$.config.legend_show) {\n if ($$.isLegendRight) {\n h = $$.currentHeight;\n } else {\n h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n }\n }\n\n return h;\n };\n\n ChartInternal.prototype.opacityForLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n };\n\n ChartInternal.prototype.opacityForUnfocusedLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n };\n\n ChartInternal.prototype.toggleFocusLegend = function (targetIds, focus) {\n var $$ = this;\n targetIds = $$.mapToTargetIds(targetIds);\n $$.legend.selectAll('.' + CLASS.legendItem).filter(function (id) {\n return targetIds.indexOf(id) >= 0;\n }).classed(CLASS.legendItemFocused, focus).transition().duration(100).style('opacity', function () {\n var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n return opacity.call($$, $$.d3.select(this));\n });\n };\n\n ChartInternal.prototype.revertLegend = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemFocused, false).transition().duration(100).style('opacity', function () {\n return $$.opacityForLegend(d3.select(this));\n });\n };\n\n ChartInternal.prototype.showLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n\n if (!config.legend_show) {\n config.legend_show = true;\n $$.legend.style('visibility', 'visible');\n\n if (!$$.legendHasRendered) {\n $$.updateLegendWithDefaults();\n }\n }\n\n $$.removeHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('visibility', 'visible').transition().style('opacity', function () {\n return $$.opacityForLegend($$.d3.select(this));\n });\n };\n\n ChartInternal.prototype.hideLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n\n if (config.legend_show && isEmpty(targetIds)) {\n config.legend_show = false;\n $$.legend.style('visibility', 'hidden');\n }\n\n $$.addHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('opacity', 0).style('visibility', 'hidden');\n };\n\n ChartInternal.prototype.clearLegendItemTextBoxCache = function () {\n this.legendItemTextBox = {};\n };\n\n ChartInternal.prototype.updateLegend = function (targetIds, options, transitions) {\n var $$ = this,\n config = $$.config;\n var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n var paddingTop = 4,\n paddingRight = 10,\n maxWidth = 0,\n maxHeight = 0,\n posMin = 10,\n tileWidth = config.legend_item_tile_width + 5;\n var l,\n totalLength = 0,\n offsets = {},\n widths = {},\n heights = {},\n margins = [0],\n steps = {},\n step = 0;\n var withTransition, withTransitionForTransform;\n var texts, rects, tiles, background; // Skip elements when their name is set to null\n\n targetIds = targetIds.filter(function (id) {\n return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n });\n options = options || {};\n withTransition = getOption(options, \"withTransition\", true);\n withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n function getTextBox(textElement, id) {\n if (!$$.legendItemTextBox[id]) {\n $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n }\n\n return $$.legendItemTextBox[id];\n }\n\n function updatePositions(textElement, id, index) {\n var reset = index === 0,\n isLast = index === targetIds.length - 1,\n box = getTextBox(textElement, id),\n itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n itemHeight = box.height + paddingTop,\n itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n margin,\n maxLength; // MEMO: care about condifion of step, totalLength\n\n function updateValues(id, withoutStep) {\n if (!withoutStep) {\n margin = (areaLength - totalLength - itemLength) / 2;\n\n if (margin < posMin) {\n margin = (areaLength - itemLength) / 2;\n totalLength = 0;\n step++;\n }\n }\n\n steps[id] = step;\n margins[step] = $$.isLegendInset ? 10 : margin;\n offsets[id] = totalLength;\n totalLength += itemLength;\n }\n\n if (reset) {\n totalLength = 0;\n step = 0;\n maxWidth = 0;\n maxHeight = 0;\n }\n\n if (config.legend_show && !$$.isLegendToShow(id)) {\n widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n return;\n }\n\n widths[id] = itemWidth;\n heights[id] = itemHeight;\n\n if (!maxWidth || itemWidth >= maxWidth) {\n maxWidth = itemWidth;\n }\n\n if (!maxHeight || itemHeight >= maxHeight) {\n maxHeight = itemHeight;\n }\n\n maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n if (config.legend_equally) {\n Object.keys(widths).forEach(function (id) {\n widths[id] = maxWidth;\n });\n Object.keys(heights).forEach(function (id) {\n heights[id] = maxHeight;\n });\n margin = (areaLength - maxLength * targetIds.length) / 2;\n\n if (margin < posMin) {\n totalLength = 0;\n step = 0;\n targetIds.forEach(function (id) {\n updateValues(id);\n });\n } else {\n updateValues(id, true);\n }\n } else {\n updateValues(id);\n }\n }\n\n if ($$.isLegendInset) {\n step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n $$.updateLegendStep(step);\n }\n\n if ($$.isLegendRight) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id];\n };\n\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else if ($$.isLegendInset) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id] + 10;\n };\n\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else {\n xForLegend = function xForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n\n yForLegend = function yForLegend(id) {\n return maxHeight * steps[id];\n };\n }\n\n xForLegendText = function xForLegendText(id, i) {\n return xForLegend(id, i) + 4 + config.legend_item_tile_width;\n };\n\n yForLegendText = function yForLegendText(id, i) {\n return yForLegend(id, i) + 9;\n };\n\n xForLegendRect = function xForLegendRect(id, i) {\n return xForLegend(id, i);\n };\n\n yForLegendRect = function yForLegendRect(id, i) {\n return yForLegend(id, i) - 5;\n };\n\n x1ForLegendTile = function x1ForLegendTile(id, i) {\n return xForLegend(id, i) - 2;\n };\n\n x2ForLegendTile = function x2ForLegendTile(id, i) {\n return xForLegend(id, i) - 2 + config.legend_item_tile_width;\n };\n\n yForLegendTile = function yForLegendTile(id, i) {\n return yForLegend(id, i) + 4;\n }; // Define g for legend area\n\n\n l = $$.legend.selectAll('.' + CLASS.legendItem).data(targetIds).enter().append('g').attr('class', function (id) {\n return $$.generateClass(CLASS.legendItem, id);\n }).style('visibility', function (id) {\n return $$.isLegendToShow(id) ? 'visible' : 'hidden';\n }).style('cursor', 'pointer').on('click', function (id) {\n if (config.legend_item_onclick) {\n config.legend_item_onclick.call($$, id);\n } else {\n if ($$.d3.event.altKey) {\n $$.api.hide();\n $$.api.show(id);\n } else {\n $$.api.toggle(id);\n $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n }\n }\n }).on('mouseover', function (id) {\n if (config.legend_item_onmouseover) {\n config.legend_item_onmouseover.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n\n if (!$$.transiting && $$.isTargetToShow(id)) {\n $$.api.focus(id);\n }\n }\n }).on('mouseout', function (id) {\n if (config.legend_item_onmouseout) {\n config.legend_item_onmouseout.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n $$.api.revert();\n }\n });\n l.append('text').text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }).each(function (id, i) {\n updatePositions(this, id, i);\n }).style(\"pointer-events\", \"none\").attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n l.append('rect').attr(\"class\", CLASS.legendItemEvent).style('fill-opacity', 0).attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n l.append('line').attr('class', CLASS.legendItemTile).style('stroke', $$.color).style(\"pointer-events\", \"none\").attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200).attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200).attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('stroke-width', config.legend_item_tile_height); // Set background for inset legend\n\n background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n\n if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n background = $$.legend.insert('g', '.' + CLASS.legendItem).attr(\"class\", CLASS.legendBackground).append('rect');\n }\n\n texts = $$.legend.selectAll('text').data(targetIds).text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }) // MEMO: needed for update\n .each(function (id, i) {\n updatePositions(this, id, i);\n });\n (withTransition ? texts.transition() : texts).attr('x', xForLegendText).attr('y', yForLegendText);\n rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent).data(targetIds);\n (withTransition ? rects.transition() : rects).attr('width', function (id) {\n return widths[id];\n }).attr('height', function (id) {\n return heights[id];\n }).attr('x', xForLegendRect).attr('y', yForLegendRect);\n tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile).data(targetIds);\n (withTransition ? tiles.transition() : tiles).style('stroke', $$.levelColor ? function (id) {\n return $$.levelColor($$.cache[id].values[0].value);\n } : $$.color).attr('x1', x1ForLegendTile).attr('y1', yForLegendTile).attr('x2', x2ForLegendTile).attr('y2', yForLegendTile);\n\n if (background) {\n (withTransition ? background.transition() : background).attr('height', $$.getLegendHeight() - 12).attr('width', maxWidth * (step + 1) + 10);\n } // toggle legend state\n\n\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemHidden, function (id) {\n return !$$.isTargetToShow(id);\n }); // Update all to reflect change of legend\n\n $$.updateLegendItemWidth(maxWidth);\n $$.updateLegendItemHeight(maxHeight);\n $$.updateLegendStep(step); // Update size and scale\n\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize(); // Update g positions\n\n $$.transformAll(withTransitionForTransform, transitions);\n $$.legendHasRendered = true;\n };\n\n ChartInternal.prototype.initRegion = function () {\n var $$ = this;\n $$.region = $$.main.append('g').attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.regions);\n };\n\n ChartInternal.prototype.updateRegion = function (duration) {\n var $$ = this,\n config = $$.config; // hide if arc type\n\n $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n var mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region).data(config.regions);\n var mainRegionEnter = mainRegion.enter().append('rect').attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", 0);\n $$.mainRegion = mainRegionEnter.merge(mainRegion).attr('class', $$.classRegion.bind($$));\n mainRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.redrawRegion = function (withTransition, transition) {\n var $$ = this,\n regions = $$.mainRegion;\n return [(withTransition ? regions.transition(transition) : regions).attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", function (d) {\n return isValue(d.opacity) ? d.opacity : 0.1;\n })];\n };\n\n ChartInternal.prototype.regionX = function (d) {\n var $$ = this,\n config = $$.config,\n xPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n xPos = config.axis_rotated ? 'start' in d ? yScale(d.start) : 0 : 0;\n } else {\n xPos = config.axis_rotated ? 0 : 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0;\n }\n\n return xPos;\n };\n\n ChartInternal.prototype.regionY = function (d) {\n var $$ = this,\n config = $$.config,\n yPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n yPos = config.axis_rotated ? 0 : 'end' in d ? yScale(d.end) : 0;\n } else {\n yPos = config.axis_rotated ? 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0 : 0;\n }\n\n return yPos;\n };\n\n ChartInternal.prototype.regionWidth = function (d) {\n var $$ = this,\n config = $$.config,\n start = $$.regionX(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? 'end' in d ? yScale(d.end) : $$.width : $$.width;\n } else {\n end = config.axis_rotated ? $$.width : 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width;\n }\n\n return end < start ? 0 : end - start;\n };\n\n ChartInternal.prototype.regionHeight = function (d) {\n var $$ = this,\n config = $$.config,\n start = this.regionY(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? $$.height : 'start' in d ? yScale(d.start) : $$.height;\n } else {\n end = config.axis_rotated ? 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height : $$.height;\n }\n\n return end < start ? 0 : end - start;\n };\n\n ChartInternal.prototype.isRegionOnX = function (d) {\n return !d.axis || d.axis === 'x';\n };\n\n ChartInternal.prototype.getScale = function (min, max, forTimeseries) {\n return (forTimeseries ? this.d3.scaleTime() : this.d3.scaleLinear()).range([min, max]);\n };\n\n ChartInternal.prototype.getX = function (min, max, domain, offset) {\n var $$ = this,\n scale = $$.getScale(min, max, $$.isTimeSeries()),\n _scale = domain ? scale.domain(domain) : scale,\n key; // Define customized scale if categorized axis\n\n\n if ($$.isCategorized()) {\n offset = offset || function () {\n return 0;\n };\n\n scale = function scale(d, raw) {\n var v = _scale(d) + offset(d);\n return raw ? v : Math.ceil(v);\n };\n } else {\n scale = function scale(d, raw) {\n var v = _scale(d);\n\n return raw ? v : Math.ceil(v);\n };\n } // define functions\n\n\n for (key in _scale) {\n scale[key] = _scale[key];\n }\n\n scale.orgDomain = function () {\n return _scale.domain();\n }; // define custom domain() for categorized axis\n\n\n if ($$.isCategorized()) {\n scale.domain = function (domain) {\n if (!arguments.length) {\n domain = this.orgDomain();\n return [domain[0], domain[1] + 1];\n }\n\n _scale.domain(domain);\n\n return scale;\n };\n }\n\n return scale;\n };\n\n ChartInternal.prototype.getY = function (min, max, domain) {\n var scale = this.getScale(min, max, this.isTimeSeriesY());\n\n if (domain) {\n scale.domain(domain);\n }\n\n return scale;\n };\n\n ChartInternal.prototype.getYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n };\n\n ChartInternal.prototype.getSubYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n };\n\n ChartInternal.prototype.updateScales = function () {\n var $$ = this,\n config = $$.config,\n forInit = !$$.x; // update edges\n\n $$.xMin = config.axis_rotated ? 1 : 0;\n $$.xMax = config.axis_rotated ? $$.height : $$.width;\n $$.yMin = config.axis_rotated ? 0 : $$.height;\n $$.yMax = config.axis_rotated ? $$.width : 1;\n $$.subXMin = $$.xMin;\n $$.subXMax = $$.xMax;\n $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n $$.subYMax = config.axis_rotated ? $$.width2 : 1; // update scales\n\n $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () {\n return $$.xAxis.tickOffset();\n });\n $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) {\n return d % 1 ? 0 : $$.subXAxis.tickOffset();\n });\n $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain()); // update axes\n\n $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer); // Set initialized scales to brush and zoom\n\n if (!forInit) {\n if ($$.brush) {\n $$.brush.updateScale($$.subX);\n }\n } // update for arc\n\n\n if ($$.updateArc) {\n $$.updateArc();\n }\n };\n\n ChartInternal.prototype.selectPoint = function (target, d, i) {\n var $$ = this,\n config = $$.config,\n cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n r = $$.pointSelectR.bind($$);\n config.data_onselected.call($$.api, d, target.node()); // add selected-circle on low layer g\n\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).data([d]).enter().append('circle').attr(\"class\", function () {\n return $$.generateClass(CLASS.selectedCircle, i);\n }).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"stroke\", function () {\n return $$.color(d);\n }).attr(\"r\", function (d) {\n return $$.pointSelectR(d) * 1.4;\n }).transition().duration(100).attr(\"r\", r);\n };\n\n ChartInternal.prototype.unselectPoint = function (target, d, i) {\n var $$ = this;\n $$.config.data_onunselected.call($$.api, d, target.node()); // remove selected-circle from low layer g\n\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).transition().duration(100).attr('r', 0).remove();\n };\n\n ChartInternal.prototype.togglePoint = function (selected, target, d, i) {\n selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n };\n\n ChartInternal.prototype.selectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onselected.call($$, d, target.node());\n\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.d3.rgb($$.color(d)).brighter(0.75);\n });\n }\n };\n\n ChartInternal.prototype.unselectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onunselected.call($$, d, target.node());\n\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.color(d);\n });\n }\n };\n\n ChartInternal.prototype.togglePath = function (selected, target, d, i) {\n selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n };\n\n ChartInternal.prototype.getToggle = function (that, d) {\n var $$ = this,\n toggle;\n\n if (that.nodeName === 'circle') {\n if ($$.isStepType(d)) {\n // circle is hidden in step chart, so treat as within the click area\n toggle = function toggle() {}; // TODO: how to select step chart?\n\n } else {\n toggle = $$.togglePoint;\n }\n } else if (that.nodeName === 'path') {\n toggle = $$.togglePath;\n }\n\n return toggle;\n };\n\n ChartInternal.prototype.toggleShape = function (that, d, i) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n shape = d3.select(that),\n isSelected = shape.classed(CLASS.SELECTED),\n toggle = $$.getToggle(that, d).bind($$);\n\n if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n if (!config.data_selection_multiple) {\n $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this);\n\n if (shape.classed(CLASS.SELECTED)) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n });\n }\n\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle(!isSelected, shape, d, i);\n }\n };\n\n ChartInternal.prototype.initBar = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n };\n\n ChartInternal.prototype.updateTargetsForBar = function (targets) {\n var $$ = this,\n config = $$.config,\n mainBars,\n mainBarEnter,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainBars = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', function (d) {\n return classChartBar(d) + classFocus(d);\n });\n mainBarEnter = mainBars.enter().append('g').attr('class', classChartBar).style(\"pointer-events\", \"none\"); // Bars for each data\n\n mainBarEnter.append('g').attr(\"class\", classBars).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n };\n\n ChartInternal.prototype.updateBar = function (durationForExit) {\n var $$ = this,\n barData = $$.barData.bind($$),\n classBar = $$.classBar.bind($$),\n initialOpacity = $$.initialOpacity.bind($$),\n color = function color(d) {\n return $$.color(d.id);\n };\n\n var mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data(barData);\n var mainBarEnter = mainBar.enter().append('path').attr(\"class\", classBar).style(\"stroke\", color).style(\"fill\", color);\n $$.mainBar = mainBarEnter.merge(mainBar).style(\"opacity\", initialOpacity);\n mainBar.exit().transition().duration(durationForExit).style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawBar = function (drawBar, withTransition, transition) {\n return [(withTransition ? this.mainBar.transition(transition) : this.mainBar).attr('d', drawBar).style(\"stroke\", this.color).style(\"fill\", this.color).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.getBarW = function (axis, barTargetsNum) {\n var $$ = this,\n config = $$.config,\n w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? axis.tickInterval() * config.bar_width_ratio / barTargetsNum : 0;\n return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n };\n\n ChartInternal.prototype.getBars = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n };\n\n ChartInternal.prototype.expandBars = function (i, id, reset) {\n var $$ = this;\n\n if (reset) {\n $$.unexpandBars();\n }\n\n $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n };\n\n ChartInternal.prototype.unexpandBars = function (i) {\n var $$ = this;\n $$.getBars(i).classed(CLASS.EXPANDED, false);\n };\n\n ChartInternal.prototype.generateDrawBar = function (barIndices, isSub) {\n var $$ = this,\n config = $$.config,\n getPoints = $$.generateGetBarPoints(barIndices, isSub);\n return function (d, i) {\n // 4 points that make a bar\n var points = getPoints(d, i); // switch points if axis is rotated, not applicable for sub chart\n\n var indexX = config.axis_rotated ? 1 : 0;\n var indexY = config.axis_rotated ? 0 : 1;\n var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' + 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' + 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' + 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' + 'z';\n return path;\n };\n };\n\n ChartInternal.prototype.generateGetBarPoints = function (barIndices, isSub) {\n var $$ = this,\n axis = isSub ? $$.subXAxis : $$.xAxis,\n barTargetsNum = barIndices.__max__ + 1,\n barW = $$.getBarW(axis, barTargetsNum),\n barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n barY = $$.getShapeY(!!isSub),\n barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n barSpaceOffset = barW * ($$.config.bar_space / 2),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = barOffset(d, i) || y0,\n // offset is for stacked bar chart\n posX = barX(d),\n posY = barY(d); // fix posY not to overflow opposite quadrant\n\n if ($$.config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 4 points that make a bar\n\n\n return [[posX + barSpaceOffset, offset], [posX + barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, offset]];\n };\n };\n\n ChartInternal.prototype.isWithinBar = function (mouse, that) {\n var box = that.getBoundingClientRect(),\n seg0 = that.pathSegList.getItem(0),\n seg1 = that.pathSegList.getItem(1),\n x = Math.min(seg0.x, seg1.x),\n y = Math.min(seg0.y, seg1.y),\n w = box.width,\n h = box.height,\n offset = 2,\n sx = x - offset,\n ex = x + w + offset,\n sy = y + h + offset,\n ey = y - offset;\n return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n };\n\n ChartInternal.prototype.getShapeIndices = function (typeFilter) {\n var $$ = this,\n config = $$.config,\n indices = {},\n i = 0,\n j,\n k;\n $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n for (j = 0; j < config.data_groups.length; j++) {\n if (config.data_groups[j].indexOf(d.id) < 0) {\n continue;\n }\n\n for (k = 0; k < config.data_groups[j].length; k++) {\n if (config.data_groups[j][k] in indices) {\n indices[d.id] = indices[config.data_groups[j][k]];\n break;\n }\n }\n }\n\n if (isUndefined(indices[d.id])) {\n indices[d.id] = i++;\n }\n });\n indices.__max__ = i - 1;\n return indices;\n };\n\n ChartInternal.prototype.getShapeX = function (offset, targetsNum, indices, isSub) {\n var $$ = this,\n scale = isSub ? $$.subX : $$.x;\n return function (d) {\n var index = d.id in indices ? indices[d.id] : 0;\n return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n };\n };\n\n ChartInternal.prototype.getShapeY = function (isSub) {\n var $$ = this;\n return function (d) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n return scale(d.value);\n };\n };\n\n ChartInternal.prototype.getShapeOffset = function (typeFilter, indices, isSub) {\n var $$ = this,\n targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n targetIds = targets.map(function (t) {\n return t.id;\n });\n return function (d, i) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n y0 = scale(0),\n offset = y0;\n targets.forEach(function (t) {\n var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n\n if (t.id === d.id || indices[t.id] !== indices[d.id]) {\n return;\n }\n\n if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n // check if the x values line up\n if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {\n // \"+\" for timeseries\n // if not, try to find the value that does line up\n i = -1;\n values.forEach(function (v, j) {\n if (v.x === d.x) {\n i = j;\n }\n });\n }\n\n if (i in values && values[i].value * d.value >= 0) {\n offset += scale(values[i].value) - y0;\n }\n }\n });\n return offset;\n };\n };\n\n ChartInternal.prototype.isWithinShape = function (that, d) {\n var $$ = this,\n shape = $$.d3.select(that),\n isWithin;\n\n if (!$$.isTargetToShow(d.id)) {\n isWithin = false;\n } else if (that.nodeName === 'circle') {\n isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n } else if (that.nodeName === 'path') {\n isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar($$.d3.mouse(that), that) : true;\n }\n\n return isWithin;\n };\n\n ChartInternal.prototype.getInterpolate = function (d) {\n var $$ = this,\n d3 = $$.d3,\n types = {\n 'linear': d3.curveLinear,\n 'linear-closed': d3.curveLinearClosed,\n 'basis': d3.curveBasis,\n 'basis-open': d3.curveBasisOpen,\n 'basis-closed': d3.curveBasisClosed,\n 'bundle': d3.curveBundle,\n 'cardinal': d3.curveCardinal,\n 'cardinal-open': d3.curveCardinalOpen,\n 'cardinal-closed': d3.curveCardinalClosed,\n 'monotone': d3.curveMonotoneX,\n 'step': d3.curveStep,\n 'step-before': d3.curveStepBefore,\n 'step-after': d3.curveStepAfter\n },\n type;\n\n if ($$.isSplineType(d)) {\n type = types[$$.config.spline_interpolation_type] || types.cardinal;\n } else if ($$.isStepType(d)) {\n type = types[$$.config.line_step_type];\n } else {\n type = types.linear;\n }\n\n return type;\n };\n\n ChartInternal.prototype.initLine = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n };\n\n ChartInternal.prototype.updateTargetsForLine = function (targets) {\n var $$ = this,\n config = $$.config,\n mainLines,\n mainLineEnter,\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$),\n classCircles = $$.classCircles.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainLines = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', function (d) {\n return classChartLine(d) + classFocus(d);\n });\n mainLineEnter = mainLines.enter().append('g').attr('class', classChartLine).style('opacity', 0).style(\"pointer-events\", \"none\"); // Lines for each data\n\n mainLineEnter.append('g').attr(\"class\", classLines); // Areas\n\n mainLineEnter.append('g').attr('class', classAreas); // Circles for each data point on lines\n\n mainLineEnter.append('g').attr(\"class\", function (d) {\n return $$.generateClass(CLASS.selectedCircles, d.id);\n });\n mainLineEnter.append('g').attr(\"class\", classCircles).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n }); // Update date for selected circles\n\n targets.forEach(function (t) {\n $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n d.value = t.values[d.index].value;\n });\n }); // MEMO: can not keep same color...\n //mainLineUpdate.exit().remove();\n };\n\n ChartInternal.prototype.updateLine = function (durationForExit) {\n var $$ = this;\n var mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n var mainLineEnter = mainLine.enter().append('path').attr('class', $$.classLine.bind($$)).style(\"stroke\", $$.color);\n $$.mainLine = mainLineEnter.merge(mainLine).style(\"opacity\", $$.initialOpacity.bind($$)).style('shape-rendering', function (d) {\n return $$.isStepType(d) ? 'crispEdges' : '';\n }).attr('transform', null);\n mainLine.exit().transition().duration(durationForExit).style('opacity', 0);\n };\n\n ChartInternal.prototype.redrawLine = function (drawLine, withTransition, transition) {\n return [(withTransition ? this.mainLine.transition(transition) : this.mainLine).attr(\"d\", drawLine).style(\"stroke\", this.color).style(\"opacity\", 1)];\n };\n\n ChartInternal.prototype.generateDrawLine = function (lineIndices, isSub) {\n var $$ = this,\n config = $$.config,\n line = $$.d3.line(),\n getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n yValue = function yValue(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n\n if (!config.line_connectNull) {\n line = line.defined(function (d) {\n return d.value != null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x = isSub ? $$.subX : $$.x,\n y = yScaleGetter.call($$, d.id),\n x0 = 0,\n y0 = 0,\n path;\n\n if ($$.isLineType(d)) {\n if (config.data_regions[d.id]) {\n path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n } else {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n\n path = line.curve($$.getInterpolate(d))(values);\n }\n } else {\n if (values[0]) {\n x0 = x(values[0].x);\n y0 = y(values[0].value);\n }\n\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n\n return path ? path : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.generateGetLinePoints = function (lineIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n lineTargetsNum = lineIndices.__max__ + 1,\n x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = lineOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d); // fix posY not to overflow opposite quadrant\n\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 1 point that marks the line position\n\n\n return [[posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)] // needed for compatibility\n ];\n };\n };\n\n ChartInternal.prototype.lineWithRegions = function (d, x, y, _regions) {\n var $$ = this,\n config = $$.config,\n prev = -1,\n i,\n j,\n s = \"M\",\n sWithRegion,\n xp,\n yp,\n dx,\n dy,\n dd,\n diff,\n diffx2,\n xOffset = $$.isCategorized() ? 0.5 : 0,\n xValue,\n yValue,\n regions = [];\n\n function isWithinRegions(x, regions) {\n var i;\n\n for (i = 0; i < regions.length; i++) {\n if (regions[i].start < x && x <= regions[i].end) {\n return true;\n }\n }\n\n return false;\n } // Check start/end of regions\n\n\n if (isDefined(_regions)) {\n for (i = 0; i < _regions.length; i++) {\n regions[i] = {};\n\n if (isUndefined(_regions[i].start)) {\n regions[i].start = d[0].x;\n } else {\n regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n }\n\n if (isUndefined(_regions[i].end)) {\n regions[i].end = d[d.length - 1].x;\n } else {\n regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n }\n }\n } // Set scales\n\n\n xValue = config.axis_rotated ? function (d) {\n return y(d.value);\n } : function (d) {\n return x(d.x);\n };\n yValue = config.axis_rotated ? function (d) {\n return x(d.x);\n } : function (d) {\n return y(d.value);\n }; // Define svg generator function for region\n\n function generateM(points) {\n return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n }\n\n if ($$.isTimeSeries()) {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var x0 = d0.x.getTime(),\n x_diff = d1.x - d0.x,\n xv0 = new Date(x0 + x_diff * j),\n xv1 = new Date(x0 + x_diff * (j + diff)),\n points;\n\n if (config.axis_rotated) {\n points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n } else {\n points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n }\n\n return generateM(points);\n };\n } else {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var points;\n\n if (config.axis_rotated) {\n points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n } else {\n points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n }\n\n return generateM(points);\n };\n } // Generate\n\n\n for (i = 0; i < d.length; i++) {\n // Draw as normal\n if (isUndefined(regions) || !isWithinRegions(d[i].x, regions)) {\n s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n } // Draw with region // TODO: Fix for horizotal charts\n else {\n xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n yp = $$.getScale(d[i - 1].value, d[i].value);\n dx = x(d[i].x) - x(d[i - 1].x);\n dy = y(d[i].value) - y(d[i - 1].value);\n dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n diff = 2 / dd;\n diffx2 = diff * 2;\n\n for (j = diff; j <= 1; j += diffx2) {\n s += sWithRegion(d[i - 1], d[i], j, diff);\n }\n }\n\n prev = d[i].x;\n }\n\n return s;\n };\n\n ChartInternal.prototype.updateArea = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n var mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n var mainAreaEnter = mainArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\n return 0;\n });\n $$.mainArea = mainAreaEnter.merge(mainArea).style(\"opacity\", $$.orgAreaOpacity);\n mainArea.exit().transition().duration(durationForExit).style('opacity', 0);\n };\n\n ChartInternal.prototype.redrawArea = function (drawArea, withTransition, transition) {\n return [(withTransition ? this.mainArea.transition(transition) : this.mainArea).attr(\"d\", drawArea).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity)];\n };\n\n ChartInternal.prototype.generateDrawArea = function (areaIndices, isSub) {\n var $$ = this,\n config = $$.config,\n area = $$.d3.area(),\n getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n value0 = function value0(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n },\n value1 = function value1(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n\n if (!config.line_connectNull) {\n area = area.defined(function (d) {\n return d.value !== null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x0 = 0,\n y0 = 0,\n path;\n\n if ($$.isAreaType(d)) {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n\n path = area.curve($$.getInterpolate(d))(values);\n } else {\n if (values[0]) {\n x0 = $$.x(values[0].x);\n y0 = $$.getYScale(d.id)(values[0].value);\n }\n\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n\n return path ? path : \"M 0 0\";\n };\n };\n\n ChartInternal.prototype.getAreaBaseValue = function () {\n return 0;\n };\n\n ChartInternal.prototype.generateGetAreaPoints = function (areaIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n areaTargetsNum = areaIndices.__max__ + 1,\n x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = areaOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d); // fix posY not to overflow opposite quadrant\n\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n } // 1 point that marks the area position\n\n\n return [[posX, offset], [posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, offset] // needed for compatibility\n ];\n };\n };\n\n ChartInternal.prototype.updateCircle = function (cx, cy) {\n var $$ = this;\n var mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle).data($$.lineOrScatterOrStanfordData.bind($$));\n var mainCircleEnter = mainCircle.enter().append(\"circle\").attr('shape-rendering', 'crispEdges').attr(\"class\", $$.classCircle.bind($$)).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"r\", $$.pointR.bind($$)).style(\"fill\", $$.isStanfordGraphType() ? $$.getStanfordPointColor.bind($$) : $$.color);\n $$.mainCircle = mainCircleEnter.merge(mainCircle).style(\"opacity\", $$.isStanfordGraphType() ? 1 : $$.initialOpacityForCircle.bind($$));\n mainCircle.exit().style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawCircle = function (cx, cy, withTransition, transition) {\n var $$ = this,\n selectedCircles = $$.main.selectAll('.' + CLASS.selectedCircle);\n return [(withTransition ? $$.mainCircle.transition(transition) : $$.mainCircle).style('opacity', this.opacityForCircle.bind($$)).style(\"fill\", $$.isStanfordGraphType() ? $$.getStanfordPointColor.bind($$) : $$.color).attr(\"cx\", cx).attr(\"cy\", cy), (withTransition ? selectedCircles.transition(transition) : selectedCircles).attr(\"cx\", cx).attr(\"cy\", cy)];\n };\n\n ChartInternal.prototype.circleX = function (d) {\n return d.x || d.x === 0 ? this.x(d.x) : null;\n };\n\n ChartInternal.prototype.updateCircleY = function () {\n var $$ = this,\n lineIndices,\n getPoints;\n\n if ($$.config.data_groups.length > 0) {\n lineIndices = $$.getShapeIndices($$.isLineType), getPoints = $$.generateGetLinePoints(lineIndices);\n\n $$.circleY = function (d, i) {\n return getPoints(d, i)[0][1];\n };\n } else {\n $$.circleY = function (d) {\n return $$.getYScale(d.id)(d.value);\n };\n }\n };\n\n ChartInternal.prototype.getCircles = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n };\n\n ChartInternal.prototype.expandCircles = function (i, id, reset) {\n var $$ = this,\n r = $$.pointExpandedR.bind($$);\n\n if (reset) {\n $$.unexpandCircles();\n }\n\n $$.getCircles(i, id).classed(CLASS.EXPANDED, true).attr('r', r);\n };\n\n ChartInternal.prototype.unexpandCircles = function (i) {\n var $$ = this,\n r = $$.pointR.bind($$);\n $$.getCircles(i).filter(function () {\n return $$.d3.select(this).classed(CLASS.EXPANDED);\n }).classed(CLASS.EXPANDED, false).attr('r', r);\n };\n\n ChartInternal.prototype.pointR = function (d) {\n var $$ = this,\n config = $$.config;\n return $$.isStepType(d) ? 0 : isFunction(config.point_r) ? config.point_r(d) : config.point_r;\n };\n\n ChartInternal.prototype.pointExpandedR = function (d) {\n var $$ = this,\n config = $$.config;\n\n if (config.point_focus_expand_enabled) {\n return isFunction(config.point_focus_expand_r) ? config.point_focus_expand_r(d) : config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75;\n } else {\n return $$.pointR(d);\n }\n };\n\n ChartInternal.prototype.pointSelectR = function (d) {\n var $$ = this,\n config = $$.config;\n return isFunction(config.point_select_r) ? config.point_select_r(d) : config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;\n };\n\n ChartInternal.prototype.isWithinCircle = function (that, r) {\n var d3 = this.d3,\n mouse = d3.mouse(that),\n d3_this = d3.select(that),\n cx = +d3_this.attr(\"cx\"),\n cy = +d3_this.attr(\"cy\");\n return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n };\n\n ChartInternal.prototype.isWithinStep = function (that, y) {\n return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n };\n\n ChartInternal.prototype.getCurrentWidth = function () {\n var $$ = this,\n config = $$.config;\n return config.size_width ? config.size_width : $$.getParentWidth();\n };\n\n ChartInternal.prototype.getCurrentHeight = function () {\n var $$ = this,\n config = $$.config,\n h = config.size_height ? config.size_height : $$.getParentHeight();\n return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1);\n };\n\n ChartInternal.prototype.getCurrentPaddingTop = function () {\n var $$ = this,\n config = $$.config,\n padding = isValue(config.padding_top) ? config.padding_top : 0;\n\n if ($$.title && $$.title.node()) {\n padding += $$.getTitlePadding();\n }\n\n return padding;\n };\n\n ChartInternal.prototype.getCurrentPaddingBottom = function () {\n var config = this.config;\n return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n };\n\n ChartInternal.prototype.getCurrentPaddingLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config;\n\n if (isValue(config.padding_left)) {\n return config.padding_left;\n } else if (config.axis_rotated) {\n return !config.axis_x_show || config.axis_x_inner ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n } else if (!config.axis_y_show || config.axis_y_inner) {\n // && !config.axis_rotated\n return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n } else {\n return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n }\n };\n\n ChartInternal.prototype.getCurrentPaddingRight = function () {\n var $$ = this,\n config = $$.config,\n padding = 0,\n defaultPadding = 10,\n legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n\n if (isValue(config.padding_right)) {\n padding = config.padding_right + 1; // 1 is needed not to hide tick line\n } else if (config.axis_rotated) {\n padding = defaultPadding + legendWidthOnRight;\n } else if (!config.axis_y2_show || config.axis_y2_inner) {\n // && !config.axis_rotated\n padding = 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n } else {\n padding = ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n }\n\n if ($$.colorScale && $$.colorScale.node()) {\n padding += $$.getColorScalePadding();\n }\n\n return padding;\n };\n\n ChartInternal.prototype.getParentRectValue = function (key) {\n var parent = this.selectChart.node(),\n v;\n\n while (parent && parent.tagName !== 'BODY') {\n try {\n v = parent.getBoundingClientRect()[key];\n } catch (e) {\n if (key === 'width') {\n // In IE in certain cases getBoundingClientRect\n // will cause an \"unspecified error\"\n v = parent.offsetWidth;\n }\n }\n\n if (v) {\n break;\n }\n\n parent = parent.parentNode;\n }\n\n return v;\n };\n\n ChartInternal.prototype.getParentWidth = function () {\n return this.getParentRectValue('width');\n };\n\n ChartInternal.prototype.getParentHeight = function () {\n var h = this.selectChart.style('height');\n return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n };\n\n ChartInternal.prototype.getSvgLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config,\n hasLeftAxisRect = config.axis_rotated || !config.axis_rotated && !config.axis_y_inner,\n leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n leftAxis = $$.main.select('.' + leftAxisClass).node(),\n svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {\n right: 0\n },\n chartRect = $$.selectChart.node().getBoundingClientRect(),\n hasArc = $$.hasArcType(),\n svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n return svgLeft > 0 ? svgLeft : 0;\n };\n\n ChartInternal.prototype.getAxisWidthByAxisId = function (id, withoutRecompute) {\n var $$ = this,\n position = $$.axis.getLabelPositionById(id);\n return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n };\n\n ChartInternal.prototype.getHorizontalAxisHeight = function (axisId) {\n var $$ = this,\n config = $$.config,\n h = 30;\n\n if (axisId === 'x' && !config.axis_x_show) {\n return 8;\n }\n\n if (axisId === 'x' && config.axis_x_height) {\n return config.axis_x_height;\n }\n\n if (axisId === 'y' && !config.axis_y_show) {\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n }\n\n if (axisId === 'y2' && !config.axis_y2_show) {\n return $$.rotated_padding_top;\n } // Calculate x axis height when tick rotated\n\n\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180);\n } // Calculate y axis height when tick rotated\n\n\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180);\n }\n\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n ChartInternal.prototype.initBrush = function (scale) {\n var $$ = this,\n d3 = $$.d3; // TODO: dynamically change brushY/brushX according to axis_rotated.\n\n $$.brush = ($$.config.axis_rotated ? d3.brushY() : d3.brushX()).on(\"brush\", function () {\n var event = d3.event.sourceEvent;\n\n if (event && event.type === \"zoom\") {\n return;\n }\n\n $$.redrawForBrush();\n }).on(\"end\", function () {\n var event = d3.event.sourceEvent;\n\n if (event && event.type === \"zoom\") {\n return;\n }\n\n if ($$.brush.empty() && event && event.type !== 'end') {\n $$.brush.clear();\n }\n });\n\n $$.brush.updateExtent = function () {\n var range = this.scale.range(),\n extent;\n\n if ($$.config.axis_rotated) {\n extent = [[0, range[0]], [$$.width2, range[1]]];\n } else {\n extent = [[range[0], 0], [range[1], $$.height2]];\n }\n\n this.extent(extent);\n return this;\n };\n\n $$.brush.updateScale = function (scale) {\n this.scale = scale;\n return this;\n };\n\n $$.brush.update = function (scale) {\n this.updateScale(scale || $$.subX).updateExtent();\n $$.context.select('.' + CLASS.brush).call(this);\n };\n\n $$.brush.clear = function () {\n $$.context.select('.' + CLASS.brush).call($$.brush.move, null);\n };\n\n $$.brush.selection = function () {\n return d3.brushSelection($$.context.select('.' + CLASS.brush).node());\n };\n\n $$.brush.selectionAsValue = function (selectionAsValue, withTransition) {\n var selection, brush;\n\n if (selectionAsValue) {\n if ($$.context) {\n selection = [this.scale(selectionAsValue[0]), this.scale(selectionAsValue[1])];\n brush = $$.context.select('.' + CLASS.brush);\n\n if (withTransition) {\n brush = brush.transition();\n }\n\n $$.brush.move(brush, selection);\n }\n\n return [];\n }\n\n selection = $$.brush.selection() || [0, 0];\n return [this.scale.invert(selection[0]), this.scale.invert(selection[1])];\n };\n\n $$.brush.empty = function () {\n var selection = $$.brush.selection();\n return !selection || selection[0] === selection[1];\n };\n\n return $$.brush.updateScale(scale);\n };\n\n ChartInternal.prototype.initSubchart = function () {\n var $$ = this,\n config = $$.config,\n context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n visibility = config.subchart_show ? 'visible' : 'hidden'; // set style\n\n context.style('visibility', visibility); // Define g for chart area\n\n context.append('g').attr(\"clip-path\", $$.clipPathForSubchart).attr('class', CLASS.chart); // Define g for bar chart area\n\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars); // Define g for line chart area\n\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines); // Add extent rect for Brush\n\n context.append(\"g\").attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.brush); // ATTENTION: This must be called AFTER chart added\n // Add Axis\n\n $$.axes.subx = context.append(\"g\").attr(\"class\", CLASS.axisX).attr(\"transform\", $$.getTranslate('subx')).attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis);\n };\n\n ChartInternal.prototype.initSubchartBrush = function () {\n var $$ = this; // Add extent rect for Brush\n\n $$.initBrush($$.subX).updateExtent();\n $$.context.select('.' + CLASS.brush).call($$.brush);\n };\n\n ChartInternal.prototype.updateTargetsForSubchart = function (targets) {\n var $$ = this,\n context = $$.context,\n config = $$.config,\n contextLineEnter,\n contextLine,\n contextBarEnter,\n contextBar,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$);\n\n if (config.subchart_show) {\n //-- Bar --//\n contextBar = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets);\n contextBarEnter = contextBar.enter().append('g').style('opacity', 0);\n contextBarEnter.merge(contextBar).attr('class', classChartBar); // Bars for each data\n\n contextBarEnter.append('g').attr(\"class\", classBars); //-- Line --//\n\n contextLine = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets);\n contextLineEnter = contextLine.enter().append('g').style('opacity', 0);\n contextLineEnter.merge(contextLine).attr('class', classChartLine); // Lines for each data\n\n contextLineEnter.append(\"g\").attr(\"class\", classLines); // Area\n\n contextLineEnter.append(\"g\").attr(\"class\", classAreas); //-- Brush --//\n\n context.selectAll('.' + CLASS.brush + ' rect').attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n }\n };\n\n ChartInternal.prototype.updateBarForSubchart = function (durationForExit) {\n var $$ = this;\n var contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data($$.barData.bind($$));\n var contextBarEnter = contextBar.enter().append('path').attr(\"class\", $$.classBar.bind($$)).style(\"stroke\", 'none').style(\"fill\", $$.color);\n contextBar.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextBar = contextBarEnter.merge(contextBar).style(\"opacity\", $$.initialOpacity.bind($$));\n };\n\n ChartInternal.prototype.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar).attr('d', drawBarOnSub).style('opacity', 1);\n };\n\n ChartInternal.prototype.updateLineForSubchart = function (durationForExit) {\n var $$ = this;\n var contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n var contextLineEnter = contextLine.enter().append('path').attr('class', $$.classLine.bind($$)).style('stroke', $$.color);\n contextLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextLine = contextLineEnter.merge(contextLine).style(\"opacity\", $$.initialOpacity.bind($$));\n };\n\n ChartInternal.prototype.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine).attr(\"d\", drawLineOnSub).style('opacity', 1);\n };\n\n ChartInternal.prototype.updateAreaForSubchart = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n var contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n var contextAreaEnter = contextArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');\n return 0;\n });\n contextArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n $$.contextArea = contextAreaEnter.merge(contextArea).style(\"opacity\", 0);\n };\n\n ChartInternal.prototype.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea).attr(\"d\", drawAreaOnSub).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity);\n };\n\n ChartInternal.prototype.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n drawAreaOnSub,\n drawBarOnSub,\n drawLineOnSub;\n $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden'); // subchart\n\n if (config.subchart_show) {\n // reflect main chart to extent on subchart if zoomed\n if (d3.event && d3.event.type === 'zoom') {\n $$.brush.selectionAsValue($$.x.orgDomain());\n } // update subchart elements if needed\n\n\n if (withSubchart) {\n // extent rect\n if (!$$.brush.empty()) {\n $$.brush.selectionAsValue($$.x.orgDomain());\n } // setup drawer - MEMO: this must be called after axis updated\n\n\n drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n drawBarOnSub = $$.generateDrawBar(barIndices, true);\n drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n $$.updateBarForSubchart(duration);\n $$.updateLineForSubchart(duration);\n $$.updateAreaForSubchart(duration);\n $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n }\n }\n };\n\n ChartInternal.prototype.redrawForBrush = function () {\n var $$ = this,\n x = $$.x,\n d3 = $$.d3,\n s;\n $$.redraw({\n withTransition: false,\n withY: $$.config.zoom_rescale,\n withSubchart: false,\n withUpdateXDomain: true,\n withEventRect: false,\n withDimension: false\n }); // update zoom transation binded to event rect\n\n s = d3.event.selection || $$.brush.scale.range();\n $$.main.select('.' + CLASS.eventRect).call($$.zoom.transform, d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0));\n $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n };\n\n ChartInternal.prototype.transformContext = function (withTransition, transitions) {\n var $$ = this,\n subXAxis;\n\n if (transitions && transitions.axisSubX) {\n subXAxis = transitions.axisSubX;\n } else {\n subXAxis = $$.context.select('.' + CLASS.axisX);\n\n if (withTransition) {\n subXAxis = subXAxis.transition();\n }\n }\n\n $$.context.attr(\"transform\", $$.getTranslate('context'));\n subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n };\n\n ChartInternal.prototype.getDefaultSelection = function () {\n var $$ = this,\n config = $$.config,\n selection = isFunction(config.axis_x_selection) ? config.axis_x_selection($$.getXDomain($$.data.targets)) : config.axis_x_selection;\n\n if ($$.isTimeSeries()) {\n selection = [$$.parseDate(selection[0]), $$.parseDate(selection[1])];\n }\n\n return selection;\n };\n\n ChartInternal.prototype.initText = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartTexts);\n $$.mainText = $$.d3.selectAll([]);\n };\n\n ChartInternal.prototype.updateTargetsForText = function (targets) {\n var $$ = this,\n classChartText = $$.classChartText.bind($$),\n classTexts = $$.classTexts.bind($$),\n classFocus = $$.classFocus.bind($$);\n var mainText = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText).data(targets);\n var mainTextEnter = mainText.enter().append('g').attr('class', classChartText).style('opacity', 0).style(\"pointer-events\", \"none\");\n mainTextEnter.append('g').attr('class', classTexts);\n mainTextEnter.merge(mainText).attr('class', function (d) {\n return classChartText(d) + classFocus(d);\n });\n };\n\n ChartInternal.prototype.updateText = function (xForText, yForText, durationForExit) {\n var $$ = this,\n config = $$.config,\n barOrLineData = $$.barOrLineData.bind($$),\n classText = $$.classText.bind($$);\n var mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text).data(barOrLineData);\n var mainTextEnter = mainText.enter().append('text').attr(\"class\", classText).attr('text-anchor', function (d) {\n return config.axis_rotated ? d.value < 0 ? 'end' : 'start' : 'middle';\n }).style(\"stroke\", 'none').attr('x', xForText).attr('y', yForText).style(\"fill\", function (d) {\n return $$.color(d);\n }).style(\"fill-opacity\", 0);\n $$.mainText = mainTextEnter.merge(mainText).text(function (d, i, j) {\n return $$.dataLabelFormat(d.id)(d.value, d.id, i, j);\n });\n mainText.exit().transition().duration(durationForExit).style('fill-opacity', 0).remove();\n };\n\n ChartInternal.prototype.redrawText = function (xForText, yForText, forFlow, withTransition, transition) {\n return [(withTransition ? this.mainText.transition(transition) : this.mainText).attr('x', xForText).attr('y', yForText).style(\"fill\", this.color).style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))];\n };\n\n ChartInternal.prototype.getTextRect = function (text, cls, element) {\n var dummy = this.d3.select('body').append('div').classed('c3', true),\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n font = this.d3.select(element).style('font'),\n rect;\n svg.selectAll('.dummy').data([text]).enter().append('text').classed(cls ? cls : \"\", true).style('font', font).text(text).each(function () {\n rect = this.getBoundingClientRect();\n });\n dummy.remove();\n return rect;\n };\n\n ChartInternal.prototype.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n var $$ = this,\n getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n getBarPoints = $$.generateGetBarPoints(barIndices, false),\n getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n getter = forX ? $$.getXForText : $$.getYForText;\n return function (d, i) {\n var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n return getter.call($$, getPoints(d, i), d, this);\n };\n };\n\n ChartInternal.prototype.getXForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n xPos,\n padding;\n\n if ($$.config.axis_rotated) {\n padding = $$.isBarType(d) ? 4 : 6;\n xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n } else {\n xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n } // show labels regardless of the domain if value is null\n\n\n if (d.value === null) {\n if (xPos > $$.width) {\n xPos = $$.width - box.width;\n } else if (xPos < 0) {\n xPos = 4;\n }\n }\n\n return xPos;\n };\n\n ChartInternal.prototype.getYForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n yPos;\n\n if ($$.config.axis_rotated) {\n yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n } else {\n yPos = points[2][1];\n\n if (d.value < 0 || d.value === 0 && !$$.hasPositiveValue) {\n yPos += box.height;\n\n if ($$.isBarType(d) && $$.isSafari()) {\n yPos -= 3;\n } else if (!$$.isBarType(d) && $$.isChrome()) {\n yPos += 3;\n }\n } else {\n yPos += $$.isBarType(d) ? -3 : -6;\n }\n } // show labels regardless of the domain if value is null\n\n\n if (d.value === null && !$$.config.axis_rotated) {\n if (yPos < box.height) {\n yPos = box.height;\n } else if (yPos > this.height) {\n yPos = this.height - 4;\n }\n }\n\n return yPos;\n };\n\n ChartInternal.prototype.initTitle = function () {\n var $$ = this;\n $$.title = $$.svg.append(\"text\").text($$.config.title_text).attr(\"class\", $$.CLASS.title);\n };\n\n ChartInternal.prototype.redrawTitle = function () {\n var $$ = this;\n $$.title.attr(\"x\", $$.xForTitle.bind($$)).attr(\"y\", $$.yForTitle.bind($$));\n };\n\n ChartInternal.prototype.xForTitle = function () {\n var $$ = this,\n config = $$.config,\n position = config.title_position || 'left',\n x;\n\n if (position.indexOf('right') >= 0) {\n x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n } else if (position.indexOf('center') >= 0) {\n x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n } else {\n // left\n x = config.title_padding.left;\n }\n\n return x;\n };\n\n ChartInternal.prototype.yForTitle = function () {\n var $$ = this;\n return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n };\n\n ChartInternal.prototype.getTitlePadding = function () {\n var $$ = this;\n return $$.yForTitle() + $$.config.title_padding.bottom;\n };\n\n function powerOfTen(d) {\n return d / Math.pow(10, Math.ceil(Math.log(d) / Math.LN10 - 1e-12)) === 1;\n }\n\n ChartInternal.prototype.drawColorScale = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n target = $$.data.targets[0],\n barWidth,\n barHeight,\n axis,\n points,\n legendAxis,\n axisScale,\n inverseScale,\n height;\n barWidth = !isNaN(config.stanford_scaleWidth) ? config.stanford_scaleWidth : 20;\n barHeight = 5;\n\n if (barHeight < 0 || barWidth < 0) {\n throw Error(\"Colorscale's barheight and barwidth must be greater than 0.\");\n }\n\n height = $$.height - config.stanford_padding.bottom - config.stanford_padding.top;\n points = d3.range(config.stanford_padding.bottom, height, barHeight);\n inverseScale = d3.scaleSequential(target.colors).domain([points[points.length - 1], points[0]]);\n\n if ($$.colorScale) {\n $$.colorScale.remove();\n }\n\n $$.colorScale = $$.svg.append(\"g\").attr('width', 50).attr('height', height).attr('class', CLASS.colorScale);\n $$.colorScale.append('g').attr('transform', \"translate(0, \".concat(config.stanford_padding.top, \")\")).selectAll('bars').data(points).enter().append('rect').attr('y', function (d, i) {\n return i * barHeight;\n }).attr('x', 0).attr('width', barWidth).attr('height', barHeight).attr('fill', function (d) {\n return inverseScale(d);\n }); // Legend Axis\n\n axisScale = d3.scaleLog().domain([target.minEpochs, target.maxEpochs]).range([points[0] + config.stanford_padding.top + points[points.length - 1] + barHeight - 1, points[0] + config.stanford_padding.top]);\n legendAxis = d3.axisRight(axisScale);\n\n if (config.stanford_scaleFormat === 'pow10') {\n legendAxis.tickValues([1, 10, 100, 1000, 10000, 100000, 1000000, 10000000]);\n } else if (isFunction(config.stanford_scaleFormat)) {\n legendAxis.tickFormat(config.stanford_scaleFormat);\n } else {\n legendAxis.tickFormat(d3.format(\"d\"));\n }\n\n if (isFunction(config.stanford_scaleValues)) {\n legendAxis.tickValues(config.stanford_scaleValues(target.minEpochs, target.maxEpochs));\n } // Draw Axis\n\n\n axis = $$.colorScale.append(\"g\").attr(\"class\", \"legend axis\").attr(\"transform\", \"translate(\".concat(barWidth, \",0)\")).call(legendAxis);\n\n if (config.stanford_scaleFormat === 'pow10') {\n axis.selectAll(\".tick text\").text(null).filter(powerOfTen).text(10).append(\"tspan\").attr(\"dy\", \"-.7em\") // https://bl.ocks.org/mbostock/6738229\n .text(function (d) {\n return Math.round(Math.log(d) / Math.LN10);\n });\n }\n\n $$.colorScale.attr('transform', \"translate(\".concat($$.currentWidth - $$.xForColorScale(), \", 0)\"));\n };\n\n ChartInternal.prototype.xForColorScale = function () {\n var $$ = this;\n return $$.config.stanford_padding.right + $$.colorScale.node().getBBox().width;\n };\n\n ChartInternal.prototype.getColorScalePadding = function () {\n var $$ = this;\n return $$.xForColorScale() + $$.config.stanford_padding.left + 20;\n };\n\n ChartInternal.prototype.isStanfordGraphType = function () {\n var $$ = this;\n return $$.config.data_type === 'stanford';\n };\n\n ChartInternal.prototype.initStanfordData = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n target = $$.data.targets[0],\n epochs,\n maxEpochs,\n minEpochs; // Make larger values appear on top\n\n target.values.sort(compareEpochs); // Get array of epochs\n\n epochs = target.values.map(function (a) {\n return a.epochs;\n });\n minEpochs = !isNaN(config.stanford_scaleMin) ? config.stanford_scaleMin : d3.min(epochs);\n maxEpochs = !isNaN(config.stanford_scaleMax) ? config.stanford_scaleMax : d3.max(epochs);\n\n if (minEpochs > maxEpochs) {\n throw Error(\"Number of minEpochs has to be smaller than maxEpochs\");\n }\n\n target.colors = isFunction(config.stanford_colors) ? config.stanford_colors : d3.interpolateHslLong(d3.hsl(250, 1, 0.5), d3.hsl(0, 1, 0.5));\n target.colorscale = d3.scaleSequentialLog(target.colors).domain([minEpochs, maxEpochs]);\n target.minEpochs = minEpochs;\n target.maxEpochs = maxEpochs;\n };\n\n ChartInternal.prototype.getStanfordPointColor = function (d) {\n var $$ = this,\n target = $$.data.targets[0];\n return target.colorscale(d.epochs);\n }; // http://jsfiddle.net/Xotic750/KtzLq/\n\n\n ChartInternal.prototype.getCentroid = function (points) {\n var area = getRegionArea(points);\n var x = 0,\n y = 0,\n i,\n j,\n f,\n point1,\n point2;\n\n for (i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {\n point1 = points[i];\n point2 = points[j];\n f = point1.x * point2.y - point2.x * point1.y;\n x += (point1.x + point2.x) * f;\n y += (point1.y + point2.y) * f;\n }\n\n f = area * 6;\n return {\n x: x / f,\n y: y / f\n };\n };\n\n ChartInternal.prototype.getStanfordTooltipTitle = function (d) {\n var $$ = this,\n labelX = $$.axis.getLabelText('x'),\n labelY = $$.axis.getLabelText('y');\n return \"\\n \".concat(labelX ? sanitise(labelX) : \"x\", \"\").concat(d.x, \"\\n \").concat(labelY ? sanitise(labelY) : \"y\", \"\").concat(d.value, \"\\n \");\n };\n\n ChartInternal.prototype.countEpochsInRegion = function (region) {\n var $$ = this,\n target = $$.data.targets[0],\n total,\n count;\n total = target.values.reduce(function (accumulator, currentValue) {\n return accumulator + Number(currentValue.epochs);\n }, 0);\n count = target.values.reduce(function (accumulator, currentValue) {\n if (pointInRegion(currentValue, region)) {\n return accumulator + Number(currentValue.epochs);\n }\n\n return accumulator;\n }, 0);\n return {\n value: count,\n percentage: count !== 0 ? (count / total * 100).toFixed(1) : 0\n };\n };\n\n var getRegionArea = function getRegionArea(points) {\n // thanks to: https://stackoverflow.com/questions/16282330/find-centerpoint-of-polygon-in-javascript\n var area = 0,\n i,\n j,\n point1,\n point2;\n\n for (i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {\n point1 = points[i];\n point2 = points[j];\n area += point1.x * point2.y;\n area -= point1.y * point2.x;\n }\n\n area /= 2;\n return area;\n };\n var pointInRegion = function pointInRegion(point, region) {\n // thanks to: http://bl.ocks.org/bycoffe/5575904\n // ray-casting algorithm based on\n // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n var xi,\n yi,\n yj,\n xj,\n intersect,\n x = point.x,\n y = point.value,\n inside = false;\n\n for (var i = 0, j = region.length - 1; i < region.length; j = i++) {\n xi = region[i].x;\n yi = region[i].y;\n xj = region[j].x;\n yj = region[j].y;\n intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n\n if (intersect) {\n inside = !inside;\n }\n }\n\n return inside;\n };\n var compareEpochs = function compareEpochs(a, b) {\n if (a.epochs < b.epochs) {\n return -1;\n }\n\n if (a.epochs > b.epochs) {\n return 1;\n }\n\n return 0;\n };\n\n ChartInternal.prototype.initStanfordElements = function () {\n var $$ = this; // Avoid blocking eventRect\n\n $$.stanfordElements = $$.main.select('.' + CLASS.chart).append('g').attr('class', CLASS.stanfordElements);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordLines);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordTexts);\n $$.stanfordElements.append('g').attr('class', CLASS.stanfordRegions);\n };\n\n ChartInternal.prototype.updateStanfordElements = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n stanfordLine,\n stanfordLineEnter,\n stanfordRegion,\n stanfordRegionEnter,\n stanfordText,\n stanfordTextEnter,\n xvCustom = $$.xvCustom.bind($$),\n yvCustom = $$.yvCustom.bind($$),\n countPointsInRegion = $$.countEpochsInRegion.bind($$); // Stanford-Lines\n\n stanfordLine = main.select('.' + CLASS.stanfordLines).style('shape-rendering', 'geometricprecision').selectAll('.' + CLASS.stanfordLine).data(config.stanford_lines); // enter\n\n stanfordLineEnter = stanfordLine.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordLine + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordLineEnter.append('line').attr(\"x1\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y1') : xvCustom(d, 'value_x1');\n }).attr(\"x2\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y2') : xvCustom(d, 'value_x2');\n }).attr(\"y1\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x1') : yvCustom(d, 'value_y1');\n }).attr(\"y2\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x2') : yvCustom(d, 'value_y2');\n }).style(\"opacity\", 0); // update\n\n $$.stanfordLines = stanfordLineEnter.merge(stanfordLine);\n $$.stanfordLines.select('line').transition().duration(duration).attr(\"x1\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y1') : xvCustom(d, 'value_x1');\n }).attr(\"x2\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'value_y2') : xvCustom(d, 'value_x2');\n }).attr(\"y1\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x1') : yvCustom(d, 'value_y1');\n }).attr(\"y2\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'value_x2') : yvCustom(d, 'value_y2');\n }).style(\"opacity\", 1); // exit\n\n stanfordLine.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Stanford-Text\n\n stanfordText = main.select('.' + CLASS.stanfordTexts).selectAll('.' + CLASS.stanfordText).data(config.stanford_texts); // enter\n\n stanfordTextEnter = stanfordText.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordText + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordTextEnter.append('text').attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'y') : xvCustom(d, 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'x') : yvCustom(d, 'y');\n }).style(\"opacity\", 0); // update\n\n $$.stanfordTexts = stanfordTextEnter.merge(stanfordText);\n $$.stanfordTexts.select('text').transition().duration(duration).attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom(d, 'y') : xvCustom(d, 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom(d, 'x') : yvCustom(d, 'y');\n }).text(function (d) {\n return d.content;\n }).style(\"opacity\", 1); // exit\n\n stanfordText.exit().transition().duration(duration).style(\"opacity\", 0).remove(); // Stanford-Regions\n\n stanfordRegion = main.select('.' + CLASS.stanfordRegions).selectAll('.' + CLASS.stanfordRegion).data(config.stanford_regions); // enter\n\n stanfordRegionEnter = stanfordRegion.enter().append('g').attr(\"class\", function (d) {\n return CLASS.stanfordRegion + (d['class'] ? ' ' + d['class'] : '');\n });\n stanfordRegionEnter.append('polygon').attr(\"points\", function (d) {\n return d.points.map(function (value) {\n return [config.axis_rotated ? yvCustom(value, 'y') : xvCustom(value, 'x'), config.axis_rotated ? xvCustom(value, 'x') : yvCustom(value, 'y')].join(\",\");\n }).join(\" \");\n }).style(\"opacity\", 0);\n stanfordRegionEnter.append('text').attr(\"x\", function (d) {\n return $$.getCentroid(d.points).x;\n }).attr(\"y\", function (d) {\n return $$.getCentroid(d.points).y;\n }).style(\"opacity\", 0); // update\n\n $$.stanfordRegions = stanfordRegionEnter.merge(stanfordRegion);\n $$.stanfordRegions.select('polygon').transition().duration(duration).attr(\"points\", function (d) {\n return d.points.map(function (value) {\n return [config.axis_rotated ? yvCustom(value, 'y') : xvCustom(value, 'x'), config.axis_rotated ? xvCustom(value, 'x') : yvCustom(value, 'y')].join(\",\");\n }).join(\" \");\n }).style(\"opacity\", function (d) {\n return d.opacity ? d.opacity : 0.2;\n });\n $$.stanfordRegions.select('text').transition().duration(duration).attr(\"x\", function (d) {\n return config.axis_rotated ? yvCustom($$.getCentroid(d.points), 'y') : xvCustom($$.getCentroid(d.points), 'x');\n }).attr(\"y\", function (d) {\n return config.axis_rotated ? xvCustom($$.getCentroid(d.points), 'x') : yvCustom($$.getCentroid(d.points), 'y');\n }).text(function (d) {\n if (d.text) {\n var value, percentage, temp;\n\n if ($$.isStanfordGraphType()) {\n temp = countPointsInRegion(d.points);\n value = temp.value;\n percentage = temp.percentage;\n }\n\n return d.text(value, percentage);\n }\n\n return \"\";\n }).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").style(\"opacity\", 1); // exit\n\n stanfordRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n\n ChartInternal.prototype.initTooltip = function () {\n var $$ = this,\n config = $$.config,\n i;\n $$.tooltip = $$.selectChart.style(\"position\", \"relative\").append(\"div\").attr('class', CLASS.tooltipContainer).style(\"position\", \"absolute\").style(\"pointer-events\", \"none\").style(\"display\", \"none\"); // Show tooltip if needed\n\n if (config.tooltip_init_show) {\n if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n\n for (i = 0; i < $$.data.targets[0].values.length; i++) {\n if ($$.data.targets[0].values[i].x - config.tooltip_init_x === 0) {\n break;\n }\n }\n\n config.tooltip_init_x = i;\n }\n\n $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n return $$.addName(d.values[config.tooltip_init_x]);\n }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n $$.tooltip.style(\"top\", config.tooltip_init_position.top).style(\"left\", config.tooltip_init_position.left).style(\"display\", \"block\");\n }\n };\n\n ChartInternal.prototype.getTooltipSortFunction = function () {\n var $$ = this,\n config = $$.config;\n\n if (config.data_groups.length === 0 || config.tooltip_order !== undefined) {\n // if data are not grouped or if an order is specified\n // for the tooltip values we sort them by their values\n var order = config.tooltip_order;\n\n if (order === undefined) {\n order = config.data_order;\n }\n\n var valueOf = function valueOf(obj) {\n return obj ? obj.value : null;\n }; // if data are not grouped, we sort them by their value\n\n\n if (isString(order) && order.toLowerCase() === 'asc') {\n return function (a, b) {\n return valueOf(a) - valueOf(b);\n };\n } else if (isString(order) && order.toLowerCase() === 'desc') {\n return function (a, b) {\n return valueOf(b) - valueOf(a);\n };\n } else if (isFunction(order)) {\n // if the function is from data_order we need\n // to wrap the returned function in order to format\n // the sorted value to the expected format\n var sortFunction = order;\n\n if (config.tooltip_order === undefined) {\n sortFunction = function sortFunction(a, b) {\n return order(a ? {\n id: a.id,\n values: [a]\n } : null, b ? {\n id: b.id,\n values: [b]\n } : null);\n };\n }\n\n return sortFunction;\n } else if (isArray(order)) {\n return function (a, b) {\n return order.indexOf(a.id) - order.indexOf(b.id);\n };\n }\n } else {\n // if data are grouped, we follow the order of grouped targets\n var ids = $$.orderTargets($$.data.targets).map(function (i) {\n return i.id;\n }); // if it was either asc or desc we need to invert the order\n // returned by orderTargets\n\n if ($$.isOrderAsc() || $$.isOrderDesc()) {\n ids = ids.reverse();\n }\n\n return function (a, b) {\n return ids.indexOf(a.id) - ids.indexOf(b.id);\n };\n }\n };\n\n ChartInternal.prototype.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n var $$ = this,\n config = $$.config,\n titleFormat = config.tooltip_format_title || defaultTitleFormat,\n nameFormat = config.tooltip_format_name || function (name) {\n return name;\n },\n valueFormat = config.tooltip_format_value || defaultValueFormat,\n text,\n i,\n title,\n value,\n name,\n bgcolor;\n\n var tooltipSortFunction = this.getTooltipSortFunction();\n\n if (tooltipSortFunction) {\n d.sort(tooltipSortFunction);\n }\n\n for (i = 0; i < d.length; i++) {\n if (!(d[i] && (d[i].value || d[i].value === 0))) {\n continue;\n }\n\n if ($$.isStanfordGraphType()) {\n // Custom tooltip for stanford plots\n if (!text) {\n title = $$.getStanfordTooltipTitle(d[i]);\n text = \"\" + title;\n }\n\n bgcolor = $$.getStanfordPointColor(d[i]);\n name = sanitise(config.data_epochs); // Epochs key name\n\n value = d[i].epochs;\n } else {\n // Regular tooltip\n if (!text) {\n title = sanitise(titleFormat ? titleFormat(d[i].x, d[i].index) : d[i].x);\n text = \"
\" + (title || title === 0 ? \"\" : \"\");\n }\n\n value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n\n if (value !== undefined) {\n // Skip elements when their name is set to null\n if (d[i].name === null) {\n continue;\n }\n\n name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n }\n }\n\n if (value !== undefined) {\n text += \"\";\n text += \"\";\n text += \"\";\n text += \"\";\n }\n }\n\n return text + \"
\" + title + \"
\" + name + \"\" + value + \"
\";\n };\n\n ChartInternal.prototype.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n var forArc = $$.hasArcType(),\n mouse = d3.mouse(element); // Determin tooltip position\n\n if (forArc) {\n tooltipLeft = ($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2 + mouse[0];\n tooltipTop = ($$.hasType('gauge') ? $$.height : $$.height / 2) + mouse[1] + 20;\n } else {\n svgLeft = $$.getSvgLeft(true);\n\n if (config.axis_rotated) {\n tooltipLeft = svgLeft + mouse[0] + 100;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = $$.x(dataToShow[0].x) + 20;\n } else {\n tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = mouse[1] + 15;\n }\n\n if (tooltipRight > chartRight) {\n // 20 is needed for Firefox to keep tooltip width\n tooltipLeft -= tooltipRight - chartRight + 20;\n }\n\n if (tooltipTop + tHeight > $$.currentHeight) {\n tooltipTop -= tHeight + 30;\n }\n }\n\n if (tooltipTop < 0) {\n tooltipTop = 0;\n }\n\n return {\n top: tooltipTop,\n left: tooltipLeft\n };\n };\n\n ChartInternal.prototype.showTooltip = function (selectedData, element) {\n var $$ = this,\n config = $$.config;\n var tWidth, tHeight, position;\n var forArc = $$.hasArcType(),\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n positionFunction = config.tooltip_position || ChartInternal.prototype.tooltipPosition;\n\n if (dataToShow.length === 0 || !config.tooltip_show) {\n return;\n }\n\n $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\"); // Get tooltip dimensions\n\n tWidth = $$.tooltip.property('offsetWidth');\n tHeight = $$.tooltip.property('offsetHeight');\n position = positionFunction.call(this, dataToShow, tWidth, tHeight, element); // Set tooltip\n\n $$.tooltip.style(\"top\", position.top + \"px\").style(\"left\", position.left + 'px');\n };\n\n ChartInternal.prototype.hideTooltip = function () {\n this.tooltip.style(\"display\", \"none\");\n };\n\n ChartInternal.prototype.setTargetType = function (targetIds, type) {\n var $$ = this,\n config = $$.config;\n $$.mapToTargetIds(targetIds).forEach(function (id) {\n $$.withoutFadeIn[id] = type === config.data_types[id];\n config.data_types[id] = type;\n });\n\n if (!targetIds) {\n config.data_type = type;\n }\n };\n\n ChartInternal.prototype.hasType = function (type, targets) {\n var $$ = this,\n types = $$.config.data_types,\n has = false;\n targets = targets || $$.data.targets;\n\n if (targets && targets.length) {\n targets.forEach(function (target) {\n var t = types[target.id];\n\n if (t && t.indexOf(type) >= 0 || !t && type === 'line') {\n has = true;\n }\n });\n } else if (Object.keys(types).length) {\n Object.keys(types).forEach(function (id) {\n if (types[id] === type) {\n has = true;\n }\n });\n } else {\n has = $$.config.data_type === type;\n }\n\n return has;\n };\n\n ChartInternal.prototype.hasArcType = function (targets) {\n return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n };\n\n ChartInternal.prototype.isLineType = function (d) {\n var config = this.config,\n id = isString(d) ? d : d.id;\n return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isStepType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isSplineType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isAreaType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n\n ChartInternal.prototype.isBarType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'bar';\n };\n\n ChartInternal.prototype.isScatterType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'scatter';\n };\n\n ChartInternal.prototype.isStanfordType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'stanford';\n };\n\n ChartInternal.prototype.isScatterOrStanfordType = function (d) {\n return this.isScatterType(d) || this.isStanfordType(d);\n };\n\n ChartInternal.prototype.isPieType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'pie';\n };\n\n ChartInternal.prototype.isGaugeType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'gauge';\n };\n\n ChartInternal.prototype.isDonutType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'donut';\n };\n\n ChartInternal.prototype.isArcType = function (d) {\n return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n };\n\n ChartInternal.prototype.lineData = function (d) {\n return this.isLineType(d) ? [d] : [];\n };\n\n ChartInternal.prototype.arcData = function (d) {\n return this.isArcType(d.data) ? [d] : [];\n };\n /* not used\n function scatterData(d) {\n return isScatterType(d) ? d.values : [];\n }\n */\n\n\n ChartInternal.prototype.barData = function (d) {\n return this.isBarType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.lineOrScatterOrStanfordData = function (d) {\n return this.isLineType(d) || this.isScatterType(d) || this.isStanfordType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.barOrLineData = function (d) {\n return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n };\n\n ChartInternal.prototype.isSafari = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n };\n\n ChartInternal.prototype.isChrome = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Chrome') >= 0;\n };\n\n ChartInternal.prototype.initZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n startEvent;\n $$.zoom = d3.zoom().on(\"start\", function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n }\n\n startEvent = e;\n config.zoom_onzoomstart.call($$.api, e);\n }).on(\"zoom\", function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n }\n\n $$.redrawForZoom();\n config.zoom_onzoom.call($$.api, $$.x.orgDomain());\n }).on('end', function () {\n if (config.zoom_type !== 'scroll') {\n return;\n }\n\n var e = d3.event.sourceEvent;\n\n if (e && e.type === \"brush\") {\n return;\n } // if click, do nothing. otherwise, click interaction will be canceled.\n\n\n if (e && startEvent.clientX === e.clientX && startEvent.clientY === e.clientY) {\n return;\n }\n\n config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n });\n\n $$.zoom.updateDomain = function () {\n if (d3.event && d3.event.transform) {\n $$.x.domain(d3.event.transform.rescaleX($$.subX).domain());\n }\n\n return this;\n };\n\n $$.zoom.updateExtent = function () {\n this.scaleExtent([1, Infinity]).translateExtent([[0, 0], [$$.width, $$.height]]).extent([[0, 0], [$$.width, $$.height]]);\n return this;\n };\n\n $$.zoom.update = function () {\n return this.updateExtent().updateDomain();\n };\n\n return $$.zoom.updateExtent();\n };\n\n ChartInternal.prototype.zoomTransform = function (range) {\n var $$ = this,\n s = [$$.x(range[0]), $$.x(range[1])];\n return $$.d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0);\n };\n\n ChartInternal.prototype.initDragZoom = function () {\n var $$ = this;\n var d3 = $$.d3;\n var config = $$.config;\n var context = $$.context = $$.svg;\n var brushXPos = $$.margin.left + 20.5;\n var brushYPos = $$.margin.top + 0.5;\n\n if (!(config.zoom_type === 'drag' && config.zoom_enabled)) {\n return;\n }\n\n var getZoomedDomain = function getZoomedDomain(selection) {\n return selection && selection.map(function (x) {\n return $$.x.invert(x);\n });\n };\n\n var brush = $$.dragZoomBrush = d3.brushX().on(\"start\", function () {\n $$.api.unzoom();\n $$.svg.select(\".\" + CLASS.dragZoom).classed(\"disabled\", false);\n config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n }).on(\"brush\", function () {\n config.zoom_onzoom.call($$.api, getZoomedDomain(d3.event.selection));\n }).on(\"end\", function () {\n if (d3.event.selection == null) {\n return;\n }\n\n var zoomedDomain = getZoomedDomain(d3.event.selection);\n\n if (!config.zoom_disableDefaultBehavior) {\n $$.api.zoom(zoomedDomain);\n }\n\n $$.svg.select(\".\" + CLASS.dragZoom).classed(\"disabled\", true);\n config.zoom_onzoomend.call($$.api, zoomedDomain);\n });\n context.append(\"g\").classed(CLASS.dragZoom, true).attr(\"clip-path\", $$.clipPath).attr(\"transform\", \"translate(\" + brushXPos + \",\" + brushYPos + \")\").call(brush);\n };\n\n ChartInternal.prototype.getZoomDomain = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n return [min, max];\n };\n\n ChartInternal.prototype.redrawForZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n zoom = $$.zoom,\n x = $$.x;\n\n if (!config.zoom_enabled) {\n return;\n }\n\n if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n return;\n }\n\n zoom.update();\n\n if (config.zoom_disableDefaultBehavior) {\n return;\n }\n\n if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n }\n\n $$.redraw({\n withTransition: false,\n withY: config.zoom_rescale,\n withSubchart: false,\n withEventRect: false,\n withDimension: false\n });\n\n if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'mousemove') {\n $$.cancelClick = true;\n }\n };\n\n return c3;\n\n}));\n","export function testObject(input) {\n if (input !== null && typeof input.getTime === 'function' && !isNaN(input.getTime())) {\n return true;\n }\n return false;\n}\n\nexport function testString(input) {\n const ISO_8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n return ISO_8601.test(input);\n}\n\nexport default function (input) {\n if (typeof input === 'object') {\n return testObject(input);\n } else if (typeof input === 'string') {\n return testString(input);\n }\n return false;\n}\n","// Modifiers\nimport * as append from './modifiers/append';\nimport * as del from './modifiers/delete';\nimport * as filter from './modifiers/filter';\nimport * as insert from './modifiers/insert';\nimport * as select from './modifiers/select';\nimport * as sort from './modifiers/sort';\nimport * as update from './modifiers/update';\n\n// Utils\nimport analyses from './utils/analyses';\nimport { extend } from '../utils/extend';\nimport parsers from './utils/parsers';\n\nexport const Dataset = function (config = {}) {\n if (this instanceof Dataset === false) {\n return new Dataset(config);\n }\n\n this.matrix = [\n ['Index']\n ];\n this.meta = {\n type: undefined\n };\n this.config = config;\n}\n\nDataset.prototype.data = function (arr) {\n if (!arguments.length) return this.matrix;\n this.matrix = (arr instanceof Array ? arr : null);\n return this;\n};\n\nDataset.prototype.set = function (coords, value) {\n if (arguments.length < 2 || coords.length < 2) {\n throw Error('Incorrect arguments provided for #set method');\n }\n\n var colIndex = 'number' === typeof coords[0] ? coords[0] : this.matrix[0].indexOf(coords[0]),\n rowIndex = 'number' === typeof coords[1] ? coords[1] : select.selectColumn.call(this, 0).indexOf(coords[1]);\n\n var colResult = select.selectColumn.call(this, coords[0]),\n rowResult = select.selectRow.call(this, coords[1]);\n\n // Column doesn't exist, create and reset colIndex\n if (colResult.length < 1) {\n append.appendColumn.call(this, String(coords[0]));\n colIndex = this.matrix[0].length - 1;\n }\n\n // Row doesn't exist, create and reset rowIndex\n if (rowResult.length < 1) {\n append.appendRow.call(this, String(coords[1]));\n rowIndex = this.matrix.length - 1;\n }\n\n // Set provided value\n this.matrix[ rowIndex ][ colIndex ] = value;\n return this;\n};\n\nDataset.prototype.type = function(str){\n if (!arguments.length) return this.meta['type'];\n this.meta['type'] = (str ? String(str) : undefined);\n return this;\n};\n\nextend(Dataset.prototype, append);\nextend(Dataset.prototype, del);\nextend(Dataset.prototype, filter);\nextend(Dataset.prototype, insert);\nextend(Dataset.prototype, select);\nextend(Dataset.prototype, sort);\nextend(Dataset.prototype, update);\nextend(Dataset.prototype, analyses);\nDataset.parser = parsers(Dataset);\n\nexport default Dataset;\n","import { each } from '../../utils/each';\nimport { extend } from '../../utils/extend';\n\nfunction average(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0,\n avg = null;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum / set.length;\n}\n\nfunction maximum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.max.apply(Math, nums);\n}\n\nfunction minimum(arr, start, end){\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n nums = [];\n\n // Pull numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n nums.push(parseFloat(val));\n }\n });\n return Math.min.apply(Math, nums);\n}\n\nfunction sum(arr, start, end){\n // Copy set with given range\n var set = arr.slice(start||0, (end ? end+1 : arr.length)),\n sum = 0;\n\n // Add numeric values\n each(set, function(val, i){\n if (typeof val === 'number' && !isNaN(parseFloat(val))) {\n sum += parseFloat(val);\n }\n });\n return sum;\n}\n\nconst getColumnAverage = function (arr) {\n return average(arr, 1);\n};\nconst getRowAverage = getColumnAverage;\n\nconst getColumnSum = function (arr) {\n return sum(arr, 1);\n};\nconst getRowSum = getColumnSum;\n\nconst getColumnMaximum = function (arr) {\n return maximum(arr, 1);\n};\nconst getRowMaximum = getColumnMaximum;\n\nconst getColumnMinimum = function (arr) {\n return minimum(arr, 1);\n};\nconst getRowMinimum = getColumnMinimum;\n\nconst getColumnLabel = function (arr) {\n return arr[0];\n};\nconst getRowIndex = getColumnLabel;\n\nexport default {\n average,\n maximum,\n minimum,\n sum,\n getColumnAverage,\n getRowAverage,\n getColumnSum,\n getRowSum,\n getColumnMaximum,\n getRowMaximum,\n getColumnMinimum,\n getRowMinimum,\n getColumnLabel,\n getRowIndex,\n};\n","// Pure awesomeness by Will Rayner (penguinboy)\n// https://gist.github.com/penguinboy/762197\n\nexport function flatten(ob){\n var toReturn = {};\n for (var i in ob) {\n if (!ob.hasOwnProperty(i)) continue;\n if ((typeof ob[i]) == 'object' && ob[i] !== null) {\n var flatObject = flatten(ob[i]);\n for (var x in flatObject) {\n if (!flatObject.hasOwnProperty(x)) continue;\n toReturn[i + '.' + x] = flatObject[x];\n }\n } else {\n toReturn[i] = ob[i];\n }\n }\n return toReturn;\n};\n","/**\n * Strip html tags from string\n *\n * @param {string} string The string to strip\n * @return {string}\n * @public\n */\n\nexport function stripHtmlTags(inputString) {\n if (typeof inputString !== 'string') {\n return inputString;\n }\n return inputString.replace(/(<([^>]+)>)/ig, '');\n}\n","import { each } from './each';\n\nexport function extendDeep(target) {\n for (var i = 1; i < arguments.length; i++) {\n each(arguments[i], function(prop, key){\n if (( typeof target[key] !== 'undefined' && typeof prop !== 'undefined' ) &&\n ( typeof target[key] === 'object' && typeof prop === 'object' ) &&\n ( target[key] !== null && prop !== null )) {\n extendDeep(target[key], prop);\n }\n else {\n target[key] = prop;\n }\n });\n }\n return target;\n}\n","import downloadResults from './download-results';\n\nexport default function renderDownloadButton({\n element,\n label = 'Download',\n type = 'json',\n data,\n} = {}) {\n const btnClass = 'keen-dataviz-button';\n const isBtnRendered = [...element.parentNode.children]\n .find(child => child.className === btnClass);\n if (isBtnRendered) return;\n\n const button = document.createElement('button');\n button.innerText = label;\n button.className = btnClass;\n button.addEventListener('click', event => downloadResults({ event, type, data}));\n element.parentNode.insertBefore(button, element.nextSibling);\n};","import domtoimage from 'dom-to-image';\nimport { saveAs } from 'file-saver';\n\nexport default function exportImage(obj) {\n const { node, quality, bgcolor } = obj;\n if (quality) {\n if (quality < 0 || quality > 1) throw Error('Please provide image quality between 0 and 1');\n domtoimage.toBlob(node, { quality, bgcolor })\n .then((blob) => {\n saveAs(blob, 'chart.jpeg');\n });\n }\n\n if (!quality) {\n domtoimage.toBlob(node)\n .then((blob) => {\n saveAs(blob, 'chart.png');\n });\n }\n}\n","function generateCsvContent(data) {\n let csvContent = '';\n\n data.forEach((row, i) => {\n row.forEach((cell, j) => {\n csvContent += String(cell).replace(/,/g, '');\n if (row.length > j + 1) {\n csvContent += ',';\n }\n });\n if (data.length > i + 1) {\n csvContent += '\\n';\n }\n });\n return `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n}\n\nexport default function exportData(obj) {\n const { type, data } = obj;\n const supportedFormats = ['json', 'csv'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = supportedFormats[0];\n let content = '';\n\n if (format === 'json') {\n content = `data:text/json;charset=utf-8, ${encodeURIComponent(JSON.stringify(data))}`;\n }\n\n if (format === 'csv') {\n content = generateCsvContent(data);\n fileFormat = format;\n }\n\n const htmlElement = document.createElement('a');\n htmlElement.setAttribute('href', content);\n htmlElement.setAttribute('download', `${fileName}.${fileFormat}`);\n document.body.appendChild(htmlElement);\n htmlElement.click();\n document.body.removeChild(htmlElement);\n}\n","/*!\n *\n * Rangeable\n * Copyright (c) 2018 Karl Saunders (mobius1(at)gmx(dot)com)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.1.6\n *\n */\n(function(i,j){\"object\"==typeof exports?module.exports=j(\"Rangeable\"):\"function\"==typeof define&&define.amd?define([],j):i.Rangeable=j(\"Rangeable\")})(\"undefined\"==typeof global?this.window||this.global:global,function(){var i=function(s,t){var u=document.createElement(s);return t&&u.classList.add(t),u},j=function(s){return s&&\"function\"==typeof s},o=function(s,t,u){var v;return function(){if(u=u||this,!v)return s.apply(u,arguments),v=!0,setTimeout(function(){v=!1},t)}},q=function(s,t){this.plugins=[\"ruler\"],\"string\"==typeof s&&(s=document.querySelector(s)),this.input=s,this.config=Object.assign({},{type:\"single\",tooltips:\"always\",updateThrottle:30,formatTooltip:function(u){return u},classes:{input:\"rangeable-input\",container:\"rangeable-container\",vertical:\"rangeable-vertical\",progress:\"rangeable-progress\",handle:\"rangeable-handle\",track:\"rangeable-track\",multiple:\"rangeable-multiple\",disabled:\"rangeable-disabled\",tooltips:\"rangeable-tooltips\",tooltip:\"rangeable-tooltip\",visible:\"rangeable-tooltips--visible\"}},t),this.mouseAxis={x:\"clientX\",y:\"clientY\"},this.trackSize={x:\"width\",y:\"height\"},this.trackPos={x:\"left\",y:\"top\"},this.lastPos=0,this.double=\"double\"===this.config.type||Array.isArray(this.config.value),this.touch=\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch,this.version=\"0.1.6\",this.init(),this.onInit()},r=q.prototype;return r.init=function(){if(!this.input.rangeable){var t,s={min:0,max:100,step:1,value:this.input.value};for(t in s)this.input[t]||(this.input[t]=s[t]),void 0!==this.config[t]&&(this.input[t]=this.config[t]);this.axis=this.config.vertical?\"y\":\"x\",this.input.rangeable=this,this.double?(this.input.values=this.config.value?this.config.value:[this.input.min,this.input.max],this.input.defaultValues=this.input.values.slice()):this.input.defaultValue||(this.input.defaultValue=this.input.value),this.render(),this.initialised=!0}},r.render=function(){var s=this,t=this.config,u=t.classes,v=i(\"div\",u.container),w=i(\"div\",u.track),x=i(\"div\",u.progress),y=i(\"div\",u.handle),z=i(\"div\",u.tooltip);if(this.input.tabIndex=-1,this.double){y=[i(\"div\",u.handle),i(\"div\",u.handle)],z=[];for(var A=0;3>A;A++)z[A]=i(\"div\",u.tooltip);y.forEach(function(C,D){C.index=D,x.appendChild(C),C.appendChild(z[D]),C.tabIndex=1,t.controls&&t.controls[D]&&t.controls[D].locked&&!0===t.controls[D].locked&&(C.locked=!0)}),t.vertical&&x.appendChild(y[0]),x.appendChild(z[2]),v.classList.add(u.multiple)}else x.appendChild(y),y.appendChild(z),y.tabIndex=1,t.controls&&t.controls.locked&&!0===t.controls.locked&&(y.locked=!0);if(v.appendChild(w),t.vertical&&v.classList.add(u.vertical),t.size&&(v.style[this.trackSize[this.axis]]=isNaN(t.size)?t.size:t.size+\"px\"),t.tooltips&&(v.classList.add(u.tooltips),\"string\"==typeof t.tooltips&&\"always\"===t.tooltips&&v.classList.add(u.visible)),this.nodes={container:v,track:w,progress:x,handle:y,tooltip:z},this.double){this.nodes.buffer=[];var B=i(\"div\",\"rangeable-buffers\");this.input.values.forEach(function(C,D){var E=i(\"div\",\"rangeable-buffer\");B.appendChild(E),s.nodes.buffer.push(E),w.appendChild(B),t.controls&&(s.limits=[{},{}],void 0!==t.controls[D].min&&(s.limits[D].min=t.controls[D].min),void 0!==t.controls[D].max&&(s.limits[D].max=t.controls[D].max))})}else y=i(\"div\",\"rangeable-buffer\"),w.appendChild(y),this.nodes.buffer=y,w.appendChild(y),t.controls&&(this.limits={},void 0!==t.controls.min&&(this.limits.min=t.controls.min),void 0!==t.controls.max&&(this.limits.max=t.controls.max));this.setLimits(t.controls),w.appendChild(x),this.input.parentNode.insertBefore(v,this.input),v.insertBefore(this.input,w),this.input.classList.add(u.input),this.bind(),this.update()},r.reset=function(){this.double?this.input.defaultValues.forEach(this.setValue,this):this.setValue(this.input.defaultValue),this.onEnd()},r.setValueFromPosition=function(s){var t=this.getLimits(),u=parseFloat(this.input.step),v=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]],w=v-this.rects.container[this.trackPos[this.axis]],x=this.rects.container[this.trackSize[this.axis]];return\"mousedown\"===s.type&&(!this.double&&this.nodes.handle.contains(s.target)||this.double&&(this.nodes.handle[0].contains(s.target)||this.nodes.handle[1].contains(s.target)))?!1:(s=(this.config.vertical?100*((x-w)/x):100*(w/x))*(t.max-t.min)/100+t.min,s=Math.ceil(s/u)*u,v>=this.lastPos&&(s-=u),parseFloat(s)!==parseFloat(this.startValue)&&void(u=!1,this.double&&(u=this.activeHandle.index),s=this.limit(s,u),this.setValue(s,u)))},r.start=function(s){return s.preventDefault(),this.startValue=this.getValue(),this.onStart(),this.nodes.container.classList.add(\"dragging\"),this.recalculate(),this.activeHandle=this.getHandle(s),!!this.activeHandle&&void(this.activeHandle.classList.add(\"active\"),this.setValueFromPosition(s),this.touch?(document.addEventListener(\"touchmove\",this.events.move,!1),document.addEventListener(\"touchend\",this.events.stop,!1),document.addEventListener(\"touchcancel\",this.events.stop,!1)):(document.addEventListener(\"mousemove\",this.events.move,!1),document.addEventListener(\"mouseup\",this.events.stop,!1)))},r.move=function(s){this.setValueFromPosition(s),this.lastPos=this.touch?s.touches[0][this.mouseAxis[this.axis]]:s[this.mouseAxis[this.axis]]},r.stop=function(){this.stopValue=this.getValue(),this.nodes.container.classList.remove(\"dragging\"),this.onEnd(),this.activeHandle.classList.remove(\"active\"),this.activeHandle=!1,this.touch?(document.removeEventListener(\"touchmove\",this.events.move),document.removeEventListener(\"touchend\",this.events.stop),document.removeEventListener(\"touchcancel\",this.events.stop)):(document.removeEventListener(\"mousemove\",this.events.move),document.removeEventListener(\"mouseup\",this.events.stop)),this.startValue!==this.stopValue&&this.input.dispatchEvent(new Event(\"change\")),this.startValue=null},r.keydown=function(s){var t=this,u=function(v){switch(s.key){case\"ArrowRight\":case\"ArrowUp\":t.stepUp(v);break;case\"ArrowLeft\":case\"ArrowDown\":t.stepDown(v);}};this.double?this.nodes.handle.forEach(function(v){v===document.activeElement&&u(v.index)}):this.nodes.handle===document.activeElement&&u()},r.stepUp=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)+t,s),this.setValue(t,s)},r.stepDown=function(s){var t=parseFloat(this.input.step),u=this.getValue();this.double&&void 0!==s&&(u=u[s]),t=this.limit(parseFloat(u)-t,s),this.setValue(t,s)},r.limit=function(s,t){var u=this.input,v=this.getLimits();return s=parseFloat(s),this.double&&void 0!==t?(!t&&s>u.values[1]?s=u.values[1]:0this.limits[1].max?s=this.limits[1].max:sthis.limits[0].max?s=this.limits[0].max:sthis.limits.max?s=this.limits.max:sv.max?s=v.max:sz.right||y.bottomz.bottom),u.container.classList.toggle(\"combined-tooltip\",y),y&&(u.tooltip[2].textContent=x[0]===x[1]?w.call(this,x[0]):w.call(this,x[0])+\" - \"+w.call(this,x[1]))}}else this.input.value=s,u.tooltip.textContent=w.call(this,s);this.setPosition(s,t),v&&(this.onChange(),this.nativeEvent||this.input.dispatchEvent(new Event(\"input\")),this.nativeEvent=!1)},r.native=function(){this.nativeEvent=!0,this.setValue()},r.getLimits=function(){return{min:parseFloat(this.input.min),max:parseFloat(this.input.max)}},r.setLimits=function(s){var t=this;if(void 0===s)return!1;this.limits||(this.limits=s);var u=function(v,w){void 0!==w.min&&(v.min=w.min),void 0!==w.max&&(v.max=w.max)};this.double?s.forEach(function(v,w){u(t.limits[w],v)}):u(this.limits,s),this.update()},r.setPosition=function(s){if(this.double){s=this.getPosition(this.input.values[0]);var t=this.getPosition(this.input.values[1]);this.nodes.progress.style[this.config.vertical?\"bottom\":\"left\"]=s+\"px\",s=t-s}else s=this.getPosition();this.nodes.progress.style[this.trackSize[this.axis]]=s+\"px\"},r.getPosition=function(s){void 0===s&&(s=this.input.value);var t=this.getLimits();return(s-t.min)/(t.max-t.min)*this.rects.container[this.trackSize[this.axis]]},r.getHandle=function(s){if(!this.double)return!this.nodes.handle.locked&&this.nodes.handle;var t=this.rects,u=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[0][this.trackPos[this.axis]]);return t=Math.abs(s[this.mouseAxis[this.axis]]-t.handle[1][this.trackPos[this.axis]]),(s=s.target.closest(\".\"+this.config.classes.handle))||(s=u>t?this.nodes.handle[1]:this.nodes.handle[0]),!s.locked&&s},r.enable=function(){this.input.disabled&&(this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.double?this.nodes.handle.forEach(function(s){return s.tabIndex=1}):this.nodes.handle.tabIndex=1,this.nodes.container.classList.remove(this.config.classes.disabled),this.input.disabled=!1)},r.disable=function(){this.input.disabled||(this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.double?this.nodes.handle.forEach(function(s){return s.removeAttribute(\"tabindex\")}):this.nodes.handle.removeAttribute(\"tabindex\"),this.nodes.container.classList.add(this.config.classes.disabled),this.input.disabled=!0)},r.bind=function(){var s=this;this.events={},\"start move stop update reset native keydown\".split(\" \").forEach(function(t){s.events[t]=s[t].bind(s)}),this.events.scroll=o(this.events.update,this.config.updateThrottle),this.events.resize=o(this.events.update,this.config.updateThrottle),document.addEventListener(\"scroll\",this.events.scroll,!1),window.addEventListener(\"resize\",this.events.resize,!1),document.addEventListener(\"keydown\",this.events.keydown,!1),this.nodes.container.addEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start,!1),this.input.addEventListener(\"input\",this.events.native,!1),this.input.form&&this.input.form.addEventListener(\"reset\",this.events.reset,!1)},r.unbind=function(){document.removeEventListener(\"scroll\",this.events.scroll),window.removeEventListener(\"resize\",this.events.resize),document.removeEventListener(\"keydown\",this.events.keydown),this.nodes.container.removeEventListener(this.touch?\"touchstart\":\"mousedown\",this.events.start),this.input.removeEventListener(\"input\",this.events.native),this.input.form&&this.input.form.removeEventListener(\"reset\",this.events.reset),this.events=null},r.destroy=function(){this.input.rangeable&&(this.unbind(),this.input.classList.remove(this.config.classes.input),this.nodes.container.parentNode.replaceChild(this.input,this.nodes.container),delete this.input.rangeable,this.initialised=!1)},r.onInit=function(){j(this.config.onInit)&&this.config.onInit.call(this,this.getValue())},r.onStart=function(){j(this.config.onStart)&&this.config.onStart.call(this,this.getValue())},r.onChange=function(){j(this.config.onChange)&&this.config.onChange.call(this,this.getValue())},r.onEnd=function(){j(this.config.onEnd)&&this.config.onEnd.call(this,this.getValue())},q});","import { Dataviz, Dataset } from './index';\n\nconst env = typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {};\n\nexport const extendKeenGlobalObject = function(env) {\n env.KeenDataviz = Dataviz;\n env.KeenDataset = Dataset;\n\n // just for backward compatibility\n env.Keen = env.Keen || {};\n env.Keen.Dataset = Dataset;\n env.Keen.Dataviz = Dataviz;\n};\n\nif (typeof KEEN_GLOBAL_OBJECT !== 'undefined'\n && KEEN_GLOBAL_OBJECT) {\n extendKeenGlobalObject(env);\n}\n\nexport let keenGlobals = undefined;\nif (typeof webpackKeenGlobals !== 'undefined') {\n keenGlobals = webpackKeenGlobals;\n}\n\nexport { Dataviz, Dataset } from './index';\nexport default Dataviz;\n","/* eslint-env browser */\nimport * as d3 from 'd3';\nimport c3 from 'c3';\n\nimport pkg from '../package.json';\nimport data from './data';\nimport { Dataset } from './dataset';\n\n// Utils\nimport { each } from './utils/each';\nimport isDateString from './utils/assert-date-string';\nimport { stripHtmlTags } from './utils/strip-html-tags';\nimport { escapeHtml } from './utils/escape-html';\nimport libraries from './libraries';\nimport { extendDeep } from './utils/extend-deep';\nimport exportImage from './utils/export-svg';\nimport exportData from './utils/export-data';\nimport renderDownloadButton from './utils/render-download-btn';\nimport renderExecutionMetadata from './utils/render-execution-metadata';\nimport copyToClipboard from './utils/copy-to-clipboard';\n\nimport palettes from './palettes/index';\n\n// Constructor\nexport const Dataviz = function (options = {}) {\n if (this instanceof Dataviz === false) {\n return new Dataviz(options);\n }\n\n this.c3 = c3; // expose for use outside\n this.d3 = d3;\n\n const datavizInstance = this;\n const defaultOptions = {\n showDeprecationWarnings: true,\n showLoadingSpinner: false,\n\n container: undefined, // querySelector of container, for example '#someDiv'\n containerElement: undefined, // HTML parent element for the chart\n\n // width: undefined, *deprecated* - use CSS\n // height: undefined, *deprecated* - use CSS\n\n title: undefined,\n showTitle: true,\n\n subtitle: undefined,\n\n notes: undefined,\n theme: 'keen-dataviz',\n\n colors: [\n '#00bbde', '#fe6672', '#eeb058', '#8a8ad6', '#ff855c', '#00cfbb',\n '#5a9eed', '#73d483', '#c879bb', '#0099b6', '#d74d58', '#cb9141',\n '#6b6bb6', '#d86945', '#00aa99', '#4281c9', '#57b566', '#ac5c9e',\n '#27cceb', '#ff818b', '#f6bf71', '#9b9be1', '#ff9b79', '#26dfcd',\n '#73aff4', '#87e096', '#d88bcb',\n ],\n\n colorMapping: {},\n ui: {\n executionMetadata: true,\n },\n utils: {\n clickToCopyToClipboard: true,\n },\n\n indexBy: 'timeframe.start',\n labels: [],\n labelMapping: {},\n labelMappingRegExp: undefined,\n errorMapping: {},\n showErrorMessages: true,\n library: 'default',\n sortGroups: undefined,\n sortIntervals: undefined,\n\n results: undefined, // raw data\n\n // C3 chartOptions\n type: undefined,\n stacked: false,\n dateFormat: undefined,\n legend: {\n show: true,\n position: 'right',\n alignment: 'top',\n label: {\n textMaxLength: 12\n },\n pagination: {\n offset: 0, // start from\n limit: 5 // items per page\n },\n tooltip: {\n show: true,\n pointer: true\n },\n sort: undefined\n },\n\n axis: {},\n color: {},\n size: {\n // control it with CSS of .c3-chart\n },\n padding: {\n top: 15\n },\n point: {\n focus: {\n expand: {\n enabled: false\n }\n },\n r: 2,\n show: true,\n sensitivity: 300\n },\n tooltip: {\n horizontal: true,\n format: {\n // https://c3js.org/samples/tooltip_format.html\n }\n },\n transition: {\n // duration: 0\n },\n data: {\n order: null,\n selection: {\n enabled: true,\n draggable: true,\n multiple: true\n },\n onselected: (d, element) => {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n },\n },\n grid: {\n y: {\n show: true\n }\n },\n partialIntervalIndicator: {\n show: undefined,\n className: 'partial-interval-indicator'\n },\n timezone: 'UTC',\n table: {\n schema: 'static',\n },\n renderOnVisible: false,\n funnel: {\n lines: true,\n resultValues: true,\n percents: {\n show: false,\n countingMethod: 'absolute',\n decimals: 0\n },\n marginBetweenElements: false,\n hover: true,\n effect3d: 'both-sides',\n minimalSize: false,\n },\n react: false,\n range: false,\n sparkline: false,\n choropleth: {\n map: 'world',\n borders: {\n show: true,\n size: 0.5,\n color: '#000'\n },\n showSlider: false\n },\n heatmap: {},\n };\n\n this.config = { ...extendDeep(defaultOptions, options) };\n\n if (options.palette) {\n if (!palettes[options.palette]){\n console.log('Colors pallete not found', options.palette);\n }\n this.config.colors = palettes[options.palette].colors;\n }\n\n if (this.config.type) {\n // backward compatibility with v2016... areachart -> area\n this.config.type = convertChartTypes(this.config.type);\n }\n\n // overwriting options for range chart\n if(this.config.type && this.config.type.includes('-range')) {\n this.config.range = true;\n this.config.type = this.config.type.replace('-range', '');\n this.config.legend.show = false;\n this.config.stacking = 'normal';\n this.config.labels = ['Max', 'Min'];\n this.config.colors = [\n this.config.colors[0],\n this.config.colors[0],\n ];\n }\n\n // overwriting stacked when stacking added\n if (this.config.stacking) {\n this.config.stacked = true;\n }\n\n // overwriting options for sparkline chart\n if (this.config.sparkline) {\n this.config.legend.show = false;\n this.config.axis = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n this.config.grid = {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n };\n }\n\n // get DOM node by query\n if (this.config.container) {\n this.el(this.config.container);\n }\n\n if (options.legend !== undefined && !options.legend) {\n this.config.legend = {\n ...options,\n show: false\n };\n }\n\n if (options.color && options.color.pattern) {\n // to match c3 options\n this.config.colors = options.color.pattern;\n }\n\n if (this.config.legend\n && this.config.legend.tooltip\n && this.config.legend.tooltip.show === false\n && this.config.tooltip.show === undefined) {\n this.config.tooltip = { show: false };\n }\n\n this.dataset = new Dataset(this.config);\n this.view = {\n _prepared: false,\n _rendered: false,\n _artifacts: { /* state bin */ }\n };\n\n Dataviz.visuals.push(this);\n\n if (this.config.showLoadingSpinner) {\n this.prepare();\n }\n\n if (!!this.config.results) {\n this.render(this.config.results);\n }\n this.config.firstVisibilityState = document.visibilityState;\n\n if (!this.config.utils.clickToCopyToClipboard) {\n this.config.data.onselected = () => {};\n }\n\n if (options.data && options.data.onselected) {\n this.config.data.onselected = (d, element) => {\n const callback = options.data.onselected.bind(null, d, element);\n callback();\n\n if (this.config.utils.clickToCopyToClipboard) {\n const selectedItems = this.view._artifacts.c3.selected();\n const sum = selectedItems.reduce((prev, curr) => prev + curr.value, 0);\n copyToClipboard(sum);\n }\n };\n }\n\n};\n\n\nDataviz.libraries = { default: {} };\nif (typeof window !== 'undefined') {\n Dataviz.libraries.default = libraries(Dataviz);\n}\nDataviz.visuals = [];\n\nDataviz.register = function (name, actions) {\n Dataviz.libraries[name] = Dataviz.libraries[name] || {};\n each(actions, function(method, key){\n Dataviz.libraries[name][key] = method;\n });\n};\n\nDataviz.find = function(target){\n if (!arguments.length) return Dataviz.visuals;\n const el = target.nodeName ? target : document.querySelector(target);\n let match = null;\n each(Dataviz.visuals, function(visual){\n if (el == visual.config.container){\n match = visual;\n return false;\n }\n });\n return match;\n};\n\n\n // Prototype\n // ------------\n\nDataviz.prototype.attributes = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.attributes() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n const view = this.config;\n each(obj, function(prop, key){\n // Handle deprecated property names\n if (key === 'chartType') {\n key = 'type';\n }\n view[key] = prop;\n });\n return this;\n};\n\nDataviz.prototype.call = function(fn){\n fn.call(this);\n return this;\n};\n\nDataviz.prototype.chartOptions = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.chartOptions() is deprecated. Use: new KeenDataviz({ _your_value_here_ })');\n }\n if (!arguments.length) return this.config;\n this.config = extendDeep(this.config, obj);\n return this;\n};\n\nDataviz.prototype.colors = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.colors() is deprecated. Use: new KeenDataviz({ colors: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.colors;\n this.config.colors = (arr instanceof Array ? arr : []);\n return this;\n};\n\nDataviz.prototype.colorMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.colorMapping() is deprecated. Use: new KeenDataviz({ colorMapping: _your_value_here_ })');\n }\n const datavizInstance = this;\n if (!arguments.length) return this.config.colorMapping;\n if (obj === null) {\n this.config.colorMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n datavizInstance.config.colorMapping[key] = (value ? value : null);\n });\n }\n return this;\n};\n\nDataviz.prototype.data = data;\n\nDataviz.prototype.dateFormat = function(val){\n if (this.config.showDeprecationWarnings) {\n console.log('.dateFormat() is deprecated. Use: new KeenDataviz({ dateFormat: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.dateFormat;\n if (typeof val === 'string' || typeof val === 'function') {\n this.config.dateFormat = val;\n }\n else {\n this.config.dateFormat = undefined;\n }\n return this;\n};\n\nDataviz.prototype.destroy = function(){\n const library = this.library();\n const type = this.config.type;\n const element = this.el();\n\n // Call destroy method if present\n if (Dataviz.libraries[library]\n && Dataviz.libraries[library][type]){\n Dataviz.libraries[library][type].destroy.call(this);\n }\n\n // Clear rendered artifacts, state bin\n if (element) {\n element.innerHTML = '';\n }\n this.view._prepared = false;\n this.view._rendered = false;\n this.view._artifacts = {};\n return this;\n};\n\nDataviz.prototype.el = function(target){\n const datavizInstance = this;\n if (!arguments.length) return this.config.containerElement;\n domReady(function(){\n if (target && target !== null) {\n if (target.nodeName) {\n datavizInstance.config.containerElement = target;\n }\n else if (document.querySelector) {\n datavizInstance.config.containerElement = document.querySelector(target);\n }\n }\n else {\n datavizInstance.config.containerElement = undefined;\n }\n });\n return this;\n};\n\nDataviz.prototype.height = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.height() is deprecated - use CSS classes');\n }\n return this;\n};\n\n// IMPORTANT: Must be run before data parsing\nDataviz.prototype.indexBy = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.indexBy() is deprecated. Use: new KeenDataviz({ indexBy: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.indexBy;\n this.config.indexBy = (str ? String(str) : 'timeframe.start');\n return this;\n};\n\nDataviz.prototype.labels = function(arr){\n if (this.config.showDeprecationWarnings) {\n console.log('.labels() is deprecated. Use: new KeenDataviz({ labels: _your_value_here_ })');\n }\n\n if (!arguments.length) return this.config.labels;\n this.config.labels = (arr instanceof Array ? arr : []);\n\n setLabels(this);\n\n return this;\n};\n\nfunction setLabels(datavizInstance){\n // Write labels\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.updateColumn(0, function(value, index){\n if (datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n else {\n datavizInstance.dataset.updateRow(0, function(value, index){\n if (index > 0 && datavizInstance.config.labels[index-1]) {\n return stripHtmlTags(String(datavizInstance.config.labels[index-1]));\n }\n return stripHtmlTags(value);\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.labelMapping = function(obj){\n if (this.config.showDeprecationWarnings) {\n console.log('.labelMapping() is deprecated. Use: new KeenDataviz({ labelMapping: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.labelMapping;\n if (obj === null) {\n this.config.labelMapping = {};\n }\n else if (typeof obj === 'object') {\n each(obj, function(value, key){\n this.config.labelMapping[key] = (value ? value : null);\n }.bind(this));\n }\n\n mapLabels(this);\n\n return this;\n};\n\nfunction mapLabelsExec({ datavizInstance, value }){\n if (datavizInstance.config.labelMappingRegExp){\n let valueAfterMatching = value;\n datavizInstance.config.labelMappingRegExp.forEach(regExpAndLabel => {\n if (regExpAndLabel.length > 1) {\n let regExpObj = regExpAndLabel[0];\n if (regExpObj.test(value)){\n valueAfterMatching = regExpAndLabel[1];\n }\n }\n });\n return stripHtmlTags(valueAfterMatching);\n }\n if (datavizInstance.config.labelMapping[value]) {\n return stripHtmlTags(String(datavizInstance.config.labelMapping[value]));\n }\n return stripHtmlTags(value);\n}\n\nfunction mapLabels(datavizInstance){\n // Write labels\n if (!datavizInstance.config.labelMappingDimension) {\n // if not defined use deprecated auto-detecting\n if (datavizInstance.data()[0].length === 2 && !isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.config.labelMappingDimension = 'row';\n } else {\n datavizInstance.config.labelMappingDimension = 'column';\n }\n }\n\n if (datavizInstance.config.labelMappingDimension === 'row'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateColumn(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n\n if (datavizInstance.config.labelMappingDimension === 'column'\n || datavizInstance.config.labelMappingDimension === 'both') {\n datavizInstance.dataset.updateRow(0, function(value){\n return mapLabelsExec({ datavizInstance, value });\n }.bind(datavizInstance));\n }\n}\n\nDataviz.prototype.library = function(str){\n if (!arguments.length) return this.config['library'];\n this.config['library'] = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.message = function(){\n if (this.view._rendered) {\n this.destroy();\n }\n if (this.el()) {\n this.el().innerHTML = '';\n const message = Dataviz.libraries.default.message;\n if (message.render) {\n message.render.apply(this, arguments);\n }\n }\n return this;\n};\n\nDataviz.prototype.notes = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.notes() is deprecated. Use: new KeenDataviz({ notes: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.notes;\n this.config.notes = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.prepare = function(){\n const datavizInstance = this;\n\n if (!this.el()) {\n throw `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n return;\n }\n\n domReady(function(){\n if (datavizInstance.view._rendered) {\n datavizInstance.destroy();\n }\n if (datavizInstance.el()) {\n datavizInstance.el().innerHTML = '';\n const loader = Dataviz.libraries.default.spinner;\n if (loader.render) {\n loader.render.call(datavizInstance);\n }\n datavizInstance.view._prepared = true;\n }\n });\n\n return this;\n};\n\nDataviz.prototype.render = function(results = undefined){\n const datavizInstance = this;\n\n if (!!results) {\n const firstResult = results[0] || results;\n if (\n firstResult.query\n && firstResult.query.interval\n && firstResult.query.timeframe\n && typeof firstResult.query.timeframe === 'string'\n && firstResult.query.timeframe.includes('this_')\n && this.config.partialIntervalIndicator\n && this.config.partialIntervalIndicator.show === undefined\n )\n {\n this.config.partialIntervalIndicator.show = true;\n }\n\n if (Array.isArray(results)) {\n const timeframes = results.map(resultItem => resultItem.query.timeframe);\n timeframes.forEach(resultTimeframe => {\n let foundDifferent = timeframes.find(timeframeItem =>\n JSON.stringify(timeframeItem) !== JSON.stringify(resultTimeframe)\n );\n if (foundDifferent){\n const msg = 'Timeframes of the queries should be the same';\n console.error(msg);\n throw msg;\n }\n });\n // first result is important to prepare X on the chart\n return datavizInstance\n .data(results[0])\n .call(() => {\n const input = results[0];\n this.dataset.deleteColumn(1);\n for (let result of results) {\n let label = `${input.query.event_collection} ${input.query.analysis_type}`;\n let ds2 = Dataset.parser('interval')(result);\n datavizInstance.dataset.appendColumn(label, ds2.selectColumn(1).slice(1));\n }\n })\n .render();\n }\n\n return datavizInstance.data(results).render();\n }\n if (\n (!!this.config.labelMapping && Object.keys(this.config.labelMapping).length > 0)\n ||\n (!!this.config.labelMappingRegExp && this.config.labelMappingRegExp.length > 0)\n ){\n mapLabels(datavizInstance);\n }\n if (!!this.config.labels && Object.keys(this.config.labels).length > 0){\n setLabels(datavizInstance);\n }\n if (!!this.config.sortGroups) {\n sortGroups(datavizInstance);\n }\n if (!!this.config.sortIntervals) {\n sortIntervals(datavizInstance);\n }\n\n const loader = Dataviz.libraries.default.spinner;\n const library = this.config.library;\n const type = this.config.type;\n const containerElement = this.el();\n\n if (!containerElement || containerElement === undefined) {\n const msg = `${this.config.container} not found. A DOM parent element is required to mount the chart.`;\n console.error(msg);\n throw msg;\n return;\n }\n\n let returnValue = datavizInstance;\n\n if (datavizInstance.config.renderAsPromise) {\n returnValue = new Promise((resolve, reject) => {\n const customCallback = this.config.onrendered;\n datavizInstance.config.onrendered = () => {\n if (customCallback) {\n customCallback();\n }\n resolve(datavizInstance);\n }\n });\n }\n\n domReady(function(){\n const shouldRenderExecutionMetadata = datavizInstance.execution_metadata\n && datavizInstance.config.ui\n && datavizInstance.config.ui.executionMetadata;\n const shouldRenderDownloadBtn = datavizInstance.config.ui\n && datavizInstance.config.ui.buttons\n && datavizInstance.config.ui.buttons.download\n && datavizInstance.config.ui.buttons.download.type;\n if (datavizInstance.view._prepared && loader.destroy) {\n loader.destroy.apply(datavizInstance, arguments);\n }\n containerElement.innerHTML = '';\n\n if (Dataviz.libraries[library] === 'undefined'){\n // Error: Unregistered library\n const msg = `Incorrect library`;\n datavizInstance.message(msg);\n throw msg;\n return;\n }\n else {\n if (typeof Dataviz.libraries[library][type] === 'undefined') {\n const msg = `Incorrect chart type`;\n const mappedMsg = this.config.errorMapping[msg] || msg;\n datavizInstance.message(mappedMsg);\n throw msg;\n return;\n }\n else {\n buildDomWrapper(containerElement,\n datavizInstance.config\n );\n if (shouldRenderDownloadBtn) {\n renderDownloadButton({\n element: containerElement,\n data: datavizInstance.dataset.matrix,\n type: datavizInstance.config.ui.buttons.download.type,\n label: datavizInstance.config.ui.buttons.download.label,\n })\n }\n if (shouldRenderExecutionMetadata) {\n renderExecutionMetadata({\n element: containerElement,\n data: datavizInstance.execution_metadata,\n })\n }\n const { renderOnVisible } = datavizInstance.config;\n if(renderOnVisible){\n if(typeof IntersectionObserver !== 'undefined'){\n const chartVisibleCallback = (events, observer) => {\n events.forEach(el => {\n if(el.isIntersecting){\n if(!datavizInstance.view._rendered){\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n })\n }\n const observer = new IntersectionObserver(chartVisibleCallback);\n observer.observe(containerElement);\n return;\n }\n }\n if(datavizInstance.config.firstVisibilityState === 'hidden'){\n if(typeof document !== 'undefined') {\n let hidden, visibilityChange;\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n const handleVisibilityChange = () => {\n if(!document[hidden] && datavizInstance.view._artifacts.c3) {\n datavizInstance.view._artifacts.c3.load(datavizInstance.dataset.matrix);\n }\n }\n if(typeof document.addEventListener !== \"undefined\" ||\n hidden !== undefined){\n document.addEventListener(visibilityChange, handleVisibilityChange, {\n once: true\n });\n }\n }\n }\n Dataviz.libraries[library][type].render.call(datavizInstance);\n datavizInstance.view._rendered = true;\n }\n }\n });\n\n return returnValue;\n};\n\nDataviz.prototype.sortGroups = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortGroups() is deprecated. Use: new KeenDataviz({ sortGroups: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortGroups;\n this.config.sortGroups = (str ? String(str) : null);\n\n sortGroups(this, str);\n\n return this;\n};\n\nfunction sortGroups(datavizInstance){\n // Sort groups\n if (datavizInstance.config.sortGroups && datavizInstance.data().length > 1) {\n if (isDateString(datavizInstance.data()[1][0])) {\n datavizInstance.dataset.sortColumns(datavizInstance.config.sortGroups, datavizInstance.dataset.getColumnSum);\n }\n else {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortGroups, datavizInstance.dataset.getRowSum);\n }\n }\n}\n\nDataviz.prototype.sortIntervals = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.sortIntervals() is deprecated. Use: new KeenDataviz({ sortIntervals: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.sortIntervals;\n this.config.sortIntervals = (str ? String(str) : null);\n\n sortIntervals(this);\n\n return this;\n};\n\nfunction sortIntervals(datavizInstance){\n if (datavizInstance.config.sortIntervals) {\n datavizInstance.dataset.sortRows(datavizInstance.config.sortIntervals);\n }\n}\n\nDataviz.prototype.stacked = function(bool){\n if (this.config.showDeprecationWarnings) {\n console.log('.stacked() is deprecated. Use: new KeenDataviz({ stacked: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.stacked;\n this.config.stacked = bool ? true : false;\n return this;\n};\n\nDataviz.prototype.theme = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.theme() is deprecated. Use: new KeenDataviz({ theme: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.theme;\n this.config.theme = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.title = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.title() is deprecated. Use: new KeenDataviz({ title: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.title;\n this.config.title = (str ? String(str) : null);\n return this;\n};\n\nDataviz.prototype.type = function(str){\n if (this.config.showDeprecationWarnings) {\n console.log('.type() is deprecated. Use: new KeenDataviz({ type: _your_value_here_ })');\n }\n if (!arguments.length) return this.config.type;\n this.config.type = (str ? convertChartTypes(str) : null);\n return this;\n};\n\nDataviz.prototype.update = function(){\n const library = this.config.library;\n const type = this.config.type;\n const element = this.el();\n if (library && type && element && Dataviz.libraries[library][type].update) {\n Dataviz.libraries[library][type].update.apply(this, arguments);\n }\n return this;\n};\n\nDataviz.prototype.width = function(num){\n if (this.config.showDeprecationWarnings) {\n console.log('.width() is deprecated - use CSS classes');\n }\n return this;\n};\n\nDataviz.prototype.exportImage = function({ quality = 0, bgcolor = '#fff' } = {}) {\n exportImage({\n node: this.config.containerElement,\n quality,\n bgcolor,\n });\n};\n\nDataviz.prototype.exportData = function(type='json') {\n exportData({\n data: this.dataset.matrix,\n type,\n });\n};\n\n// Deprecations\nDataviz.prototype.chartType = Dataviz.prototype.type;\nDataviz.prototype.error = Dataviz.prototype.message;\nDataviz.prototype.parseRawData = Dataviz.prototype.data;\nDataviz.prototype.parseRequest = function(){\n // this.emit('error', 'This method is no longer supported. Use .data() instead: https://github.com/keen/keen-dataviz.js#data');\n return this;\n};\nDataviz.prototype.initialize = function(){\n // this.emit('error', 'This method is no longer supported, and can be omitted as it has no impact');\n return this;\n};\n\nDataviz.version = pkg.version;\n\n// Private\n\nfunction buildDomWrapper(el, options) {\n let html = '';\n let chart100percentWide = '';\n let rangeChart = '';\n if (options.legend.position === 'top' || options.legend.position === 'bottom') {\n chart100percentWide = 'c3-chart-100-percent';\n }\n if (options.range) {\n rangeChart = 'keen-dataviz-range';\n }\n let container = `
`;\n const verticalAlignment = ['top', 'middle', 'bottom'];\n const horizontalAlignment = ['left', 'center', 'right'];\n let align = 'horizontal';\n let legendItemsAlign = 'center';\n if (horizontalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n if (options.legend.position === 'left' || options.legend.position === 'right') {\n align = 'vertical';\n if (verticalAlignment.includes(options.legend.alignment)) {\n legendItemsAlign = options.legend.alignment;\n }\n }\n if (options.legend && options.legend.show) {\n if (options.legend.position === 'top' || options.legend.position === 'left') {\n container = `
${container}`;\n } else {\n container = `${container}
`;\n }\n }\n if(!options.react){\n html += `
`;\n }\n if (options.title && options.showTitle) {\n html += `
${options.title}
`;\n }\n if (options.subtitle) {\n html += `
${options.subtitle}
`;\n }\n html += `
${container}
`;\n if (options.notes) {\n html += `
${options.notes}
`;\n }\n if(!options.react){\n html += '
';\n }\n\n el.innerHTML = html;\n}\n\nfunction convertChartTypes(str) {\n const map = {\n areachart: 'area',\n barchart: 'horizontal-bar',\n columnchart: 'bar',\n linechart: 'line',\n piechart: 'pie',\n };\n return map[str] || str;\n}\n\nfunction testDom(fn) {\n if (/in/.test(document.readyState)) {\n setTimeout(() => {\n testDom(fn);\n }, 9);\n } else {\n fn();\n }\n}\n\nfunction domReady(fn) {\n if (typeof document !== 'undefined' || typeof window === 'undefined') {\n fn();\n return;\n }\n // Firefox 3.5 shim\n if (document.readyState == null && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', function DOMContentLoaded() {\n document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);\n document.readyState = 'complete';\n }, false);\n document.readyState = 'loading';\n }\n testDom(fn);\n}\n\nexport { Dataset } from './dataset';\n\nexport default Dataviz;\n","import { each } from '../../utils/each';\n\nexport function deleteColumn(q) {\n const self = this;\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n each(self.matrix, function(row, i){\n self.matrix[i].splice(index, 1);\n });\n }\n return self;\n}\n\nexport function deleteRow(q) {\n var index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n this.matrix.splice(index, 1);\n }\n return this;\n}\n","import { each } from '../../utils/each';\n\nexport function filterColumns(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i) {\n clone.push([]);\n });\n\n each(self.matrix[0], function(col, i){\n var selectedColumn = self.selectColumn(i);\n if (i == 0 || fn.call(self, selectedColumn, i)) {\n each(selectedColumn, function(cell, ri){\n clone[ri].push(cell);\n });\n }\n });\n\n self.data(clone);\n return self;\n}\n\nexport function filterRows(fn) {\n const self = this;\n const clone = [];\n\n each(self.matrix, function(row, i){\n if (i == 0 || fn.call(self, row, i)) {\n clone.push(row);\n }\n });\n\n self.data(clone);\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function insertColumn(index, str, input) {\n const self = this;\n const label = (str !== undefined) ? str : null;\n\n if (typeof input === 'function') {\n\n self.matrix[0].splice(index, 0, label);\n each(self.matrix, function(row, i) {\n var cell;\n if (i > 0) {\n cell = input.call(self, row, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n self.matrix[i].splice(index, 0, cell);\n }\n });\n\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix.length - 1) {\n input = input.concat( createNullList(self.matrix.length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n self.matrix[0].splice(index, 0, label);\n each(input, function(value, i){\n self.matrix[i+1].splice(index, 0, value);\n });\n\n }\n return self;\n}\n\nexport function insertRow(index, str, input) {\n const self = this;\n const newRow = [];\n const label = (str !== undefined) ? str : null;\n newRow.push(label);\n\n if (typeof input === 'function') {\n each(self.matrix[0], function(label, i) {\n let col;\n let cell;\n if (i > 0) {\n col = self.selectColumn(i);\n cell = input.call(self, col, i);\n if (typeof cell === 'undefined') {\n cell = null;\n }\n newRow.push(cell);\n }\n });\n self.matrix.splice(index, 0, newRow);\n }\n\n else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n self.matrix.splice(index, 0, newRow.concat(input) );\n }\n\n return self;\n}\n","import { each } from '../../utils/each';\n\nexport function selectColumn(q) {\n const result = [];\n const index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1 && typeof this.matrix[0][index] !== 'undefined') {\n each(this.matrix, function(row, i) {\n result.push(row[index]);\n });\n }\n return result;\n}\n\nexport function selectRow(q) {\n let result = [];\n const index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1 && typeof this.matrix[index] !== 'undefined') {\n result = this.matrix[index];\n }\n return result;\n}\n","import { each } from '../../utils/each';\nimport analysesUtilMethods from '../utils/analyses';\n\nexport function sortColumns(str, comp) {\n var self = this,\n head = this.matrix[0].slice(1), // minus index\n cols = [],\n clone = [],\n fn = comp || analysesUtilMethods.getColumnLabel;\n\n // Isolate each column (except the index)\n each(head, function(cell, i) {\n cols.push(self.selectColumn(i+1).slice(0));\n });\n cols.sort(function(a,b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n each(cols, function(col, i) {\n self\n .deleteColumn(i+1)\n .insertColumn(i+1, col[0], col.slice(1));\n });\n return self;\n}\n\nexport function sortRows(str, comp) {\n var self = this,\n head = this.matrix.slice(0,1),\n body = this.matrix.slice(1),\n fn = comp || analysesUtilMethods.getRowIndex;\n body.sort(function(a, b){\n // If fn(a) > fn(b)\n var op = fn.call(self, a) > fn.call(self, b);\n if (op) {\n return (str === 'asc' ? 1 : -1);\n } else if (!op) {\n return (str === 'asc' ? -1 : 1);\n } else {\n return 0;\n }\n });\n self.data(head.concat(body));\n return self;\n}\n","import { each } from '../../utils/each';\nimport createNullList from '../utils/create-null-list';\nimport { appendRow, appendColumn } from './append';\n\nexport function updateColumn(q, input) {\n var self = this,\n index = (typeof q === 'number') ? q : this.matrix[0].indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data(), function(row, i){\n var cell;\n if (i > 0) {\n cell = input.call(self, row[index], i, row);\n if (typeof cell !== 'undefined') {\n self.matrix[i][index] = cell;\n }\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.data().length - 1) {\n input = input.concat( createNullList(self.data().length - 1 - input.length) );\n }\n else {\n // If this new column is longer than existing columns,\n // we need to update the rest to match ...\n each(input, function(value, i){\n if (self.matrix.length -1 < input.length) {\n appendRow.call(self, String( self.matrix.length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[i+1][index] = value;\n });\n\n }\n\n }\n return self;\n}\n\nexport function updateRow(q, input){\n var self = this,\n index = (typeof q === 'number') ? q : this.selectColumn(0).indexOf(q);\n\n if (index > -1) {\n\n if (typeof input === 'function') {\n\n each(self.data()[index], function(value, i){\n var col = self.selectColumn(i),\n cell = input.call(self, value, i, col);\n if (typeof cell !== 'undefined') {\n self.matrix[index][i] = cell;\n }\n });\n\n } else if (!input || input instanceof Array) {\n input = input || [];\n\n if (input.length <= self.matrix[0].length - 1) {\n input = input.concat( createNullList( self.matrix[0].length - 1 - input.length ) );\n }\n else {\n each(input, function(value, i){\n if (self.matrix[0].length -1 < input.length) {\n appendColumn.call(self, String( self.matrix[0].length ));\n }\n });\n }\n\n each(input, function(value, i){\n self.matrix[index][i+1] = value;\n });\n }\n\n }\n return self;\n}\n","let Dataset; /* injected */\n\nimport { each } from '../../utils/each';\nimport { flatten } from '../utils/flatten';\nimport { valueAtDeepKey } from '../utils/object';\nimport { createExtractionKeys } from '../utils/create-extraction-keys';\n\nexport default function initialize(lib){\n Dataset = lib;\n return function(name){\n var options = Array.prototype.slice.call(arguments, 1);\n\n if (!parsers[name]) {\n throw 'Requested parser does not exist';\n }\n else {\n return parsers[name].apply(this, options);\n }\n };\n}\n\nfunction parseMetric(){\n return function(res){\n return new Dataset()\n .set(['Value', 'Result'], res.result)\n .type('metric');\n }\n}\n\n//var myParser = Dataset.parser('interval', 'timeframe.end');\nfunction parseInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n dataset.set(['Result', index], record.value);\n });\n return dataset;\n }\n}\n\nfunction parseGroupedMetric(){\n return function(res){\n var dataset = new Dataset()\n .type('grouped-metric');\n each(res.result, function(record, i){\n var label;\n each(record, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set(['Result', String(record[label])], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('grouped-interval', 'timeframe.end');\nfunction parseGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n return function(res){\n var dataset = new Dataset()\n .type('grouped-interval');\n each(res.result, function(record, i){\n var index = options[0] && options[0] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n if (record.value.length) {\n each(record.value, function(group, j){\n var label;\n each(group, function(value, key){\n if (key !== 'result') {\n label = key;\n }\n });\n dataset.set([ String(group[label]), index ], group.result);\n });\n }\n else {\n dataset.appendRow(index);\n }\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-metric', ['first', 'second']);\nfunction parseDoubleGroupedMetric(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-metric');\n each(res.result, function(record, i){\n var rowLabel = record[options[0][0]] + ' ' + record[options[0][1]];\n dataset.set([ 'Result', rowLabel ], record.result);\n });\n return dataset;\n }\n}\n\n//var myParser = Dataset.parser('double-grouped-interval', ['first', 'second'], 'timeframe.end');\nfunction parseDoubleGroupedInterval(){\n var options = Array.prototype.slice.call(arguments);\n if (!options[0]) throw 'Requested parser requires a sequential list (array) of properties to target as a second argument';\n return function(res){\n var dataset = new Dataset()\n .type('double-grouped-interval');\n each(res.result, function(record, i){\n var index = options[1] && options[1] === 'timeframe.end' ? record.timeframe.end : record.timeframe.start;\n each(record['value'], function(value, j){\n var label = value[options[0][0]] + ' ' + value[options[0][1]];\n dataset.set([ label, index ], value.result);\n });\n });\n return dataset;\n }\n}\n\nfunction parseFunnel(){\n return function(res){\n var result, steps, dataset;\n if (typeof res.steps !== 'undefined'\n && typeof res.result !== 'undefined'\n && res.result instanceof Array) {\n // Ad-hoc funnel response\n result = res.result;\n steps = res.steps;\n }\n else if (typeof res.result.steps !== 'undefined'\n && typeof res.result.result !== 'undefined'\n && res.result.result instanceof Array) {\n // Saved funnel response\n result = res.result.result;\n steps = res.result.steps;\n }\n dataset = new Dataset().type('funnel');\n dataset.appendColumn('Step Value');\n each(result, function(value, i){\n if (typeof steps !== 'undefined' && steps[i]) {\n dataset.appendRow(String(steps[i].event_collection), [value]);\n }\n });\n return dataset;\n }\n}\n\nfunction parseList(){\n return function(res){\n var dataset = new Dataset()\n .type('list');\n each(res.result, function(value, i){\n dataset.set( [ 'Result', String(i+1) ], value );\n });\n return dataset;\n }\n}\n\nfunction parseExtraction(){\n let config = this.config;\n return function(res){\n const datasetExtraction = new Dataset()\n .type('extraction');\n\n const datasetKeys = createExtractionKeys(res.result);\n let names = Array.from(datasetKeys);\n\n const tableConfig = config && config.table;\n if (tableConfig && tableConfig.schema === 'dynamic') {\n const results = res.result;\n const keys = {};\n results.forEach(resultItem => {\n const resultKeys = Object.keys(flatten(resultItem));\n if (resultKeys && resultKeys.length) {\n resultKeys.forEach(keyName => {\n if (!keys[keyName]) {\n keys[keyName] = true;\n }\n });\n }\n });\n names = Object.keys(keys);\n }\n\n let nameI = 0;\n names.forEach(value => {\n datasetExtraction.set([ value, '0' ], value);\n nameI++;\n });\n\n if (Dataset) {\n if (config\n && config.table\n && config.table.columns) {\n names = config.table.columns;\n }\n }\n\n for (let i=0; i {\n Object.keys(flatten(result)).map((key) => {\n keys.add(key);\n });\n });\n\n return keys;\n}\n","import Dataset from './dataset';\nimport { extend } from './utils/extend';\nimport { stripHtmlTags } from './utils/strip-html-tags';\n\nexport default function (data) {\n if (!arguments.length) return this.dataset.data();\n if (data instanceof Dataset) {\n this.dataset = data;\n return this;\n }\n return parseResponse.call(this, data);\n};\n\nfunction parseResponse(response) {\n var dataset,\n indexBy,\n meta,\n parser,\n parserArgs = [],\n query,\n selectedParser,\n title,\n type;\n\n indexBy = this.config.indexBy;\n meta = response.metadata || {};\n query = (typeof response.query !== 'undefined') ? response.query : {};\n\n // Ensure all required params are present\n query = extend({\n analysis_type: null,\n event_collection: null,\n filters: [],\n group_by: null,\n interval: null,\n timeframe: null,\n timezone: null\n }, query);\n\n if (query.analysis_type === 'funnel') {\n parser = 'funnel';\n }\n else if (query.analysis_type === 'extraction'){\n parser = 'extraction';\n }\n else if (query.analysis_type === 'select_unique') {\n if (!query.group_by && !query.interval) {\n parser = 'list';\n }\n // else { Not supported }\n }\n else if (query.analysis_type) {\n if (!query.group_by && !query.interval) {\n parser = 'metric';\n }\n else if (query.group_by && !query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-metric';\n parserArgs.push(query.group_by);\n }\n else {\n parser = 'grouped-metric';\n }\n }\n else if (query.interval && !query.group_by) {\n parser = 'interval';\n parserArgs.push(indexBy);\n }\n else if (query.group_by && query.interval) {\n if (query.group_by instanceof Array && query.group_by.length > 1) {\n parser = 'double-grouped-interval';\n parserArgs.push(query.group_by);\n parserArgs.push(indexBy);\n }\n else {\n parser = 'grouped-interval';\n parserArgs.push(indexBy);\n }\n }\n }\n\n if (!parser) {\n\n // Metric\n // -------------------------------\n if (typeof response.result === 'number'){\n parser = 'metric';\n }\n\n // Everything else\n // -------------------------------\n if (response.result instanceof Array && response.result.length > 0){\n\n // Interval w/ single value\n // -------------------------------\n if (response.result[0].timeframe && (typeof response.result[0].value == 'number' || response.result[0].value == null)) {\n parser = 'interval';\n parserArgs.push(indexBy)\n }\n\n // Static GroupBy\n // -------------------------------\n if (typeof response.result[0].result == 'number'){\n parser = 'grouped-metric';\n }\n\n // x, y, value for heatmap\n if (this.config.type === 'heatmap' && Object.keys(response.result[0] === 3 && typeof response.result[0].result === 'number')) {\n parser = 'heatmap-axis';\n }\n\n // Grouped Interval\n // -------------------------------\n if (response.result[0].value instanceof Array){\n parser = 'grouped-interval';\n parserArgs.push(indexBy)\n }\n\n // Funnel\n // -------------------------------\n if (typeof response.result[0] === 'number'\n && typeof response.steps !== 'undefined'){\n parser = 'funnel';\n // Move steps into query object\n query.steps = response.steps;\n }\n\n // Select Unique\n // -------------------------------\n if ((typeof response.result[0] === 'string' || typeof response.result[0] == 'number') && typeof response.steps === 'undefined'){\n parser = 'list';\n }\n\n // Extraction\n // -------------------------------\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n if (!parser) {\n parser = 'extraction';\n }\n }\n\n // Set title from saved query body, or create a default title\n if (this.config.title === undefined) {\n if (meta.display_name) {\n title = meta.display_name;\n }\n else {\n title = getDefaultTitle(query);\n }\n this.config.title = title;\n }\n\n // Set type from saved query body, or use a default type\n if (!this.config.type) {\n if (meta.visualization && meta.visualization.chart_type) {\n type = meta.visualization.chart_type;\n }\n else {\n type = getDefaultType(parser);\n }\n this.config.type = type;\n }\n\n // Define the appropriate parser\n selectedParser = Dataset.parser.apply(this, [parser].concat(parserArgs));\n\n // Parse the response with augmented query body\n dataset = selectedParser(extend(response, { 'query': query }));\n\n // Set true dates for 'interval' data\n if (parser.indexOf('interval') > -1) {\n dataset.updateColumn(0, function(value, i){\n return new Date(value);\n });\n }\n\n dataset.updateRow(0, function(value, i){\n return stripHtmlTags(value);\n });\n\n this.dataset = dataset;\n\n if (response.execution_metadata) {\n this.execution_metadata = response.execution_metadata;\n }\n\n return this;\n}\n\nfunction getDefaultTitle(query) {\n var analysis = query.analysis_type ? query.analysis_type.replace('_', ' ') : '',\n title;\n\n title = analysis.replace( /\\b./g, function(a){\n return a.toUpperCase();\n });\n\n if (query.event_collection) {\n title += ' - ' + query.event_collection;\n }\n return title;\n}\n\nfunction getDefaultType(parser) {\n let type;\n switch (parser) {\n case 'metric':\n type = 'metric';\n break;\n case 'interval':\n type = 'area';\n break;\n case 'grouped-metric':\n case 'double-grouped-metric':\n type = 'bar';\n break;\n case 'grouped-interval':\n case 'double-grouped-interval':\n type = 'line';\n break;\n case 'funnel':\n type = 'horizontal-bar';\n break;\n case 'list':\n case 'extraction':\n default:\n type = 'table';\n }\n return type;\n}\n","import c3 from 'c3';\n\nimport { each } from '../utils/each';\nimport { extend } from '../utils/extend';\nimport { extendDeep } from '../utils/extend-deep';\nimport isDateString from '../utils/assert-date-string';\nimport c3DefaultDateFormat from './c3/extensions/default-date-format';\nimport c3PaginatingLegend from './c3/extensions/paginating-legend';\nimport c3TooltipContents from './c3/extensions/tooltip-contents';\n\nimport calculateRange from '../dataset/utils/calculate-range';\nimport { calculateSumForPercents, calculatePercents } from '../dataset/utils/calculate-percents';\n\nimport message from './default/message';\nimport metric from './default/metric';\nimport table from './default/table';\nimport spinner from './default/spinner';\nimport Funnel from './default/funnel';\nimport Funnel3d from './default/funnel-3d';\nimport HorizontalFunnel from './default/horizontal-funnel';\nimport HorizontalFunnel3d from './default/horizontal-funnel-3d';\nimport MetricCombo from './default/metric-combo';\nimport Heatmap from './default/heatmap';\nimport Choropleth from './default/choropleth';\n\nexport default function(lib) {\n let timer;\n bindResizeListener(function(){\n if (timer) {\n clearTimeout(timer);\n }\n const delay = (lib.visuals.length > 12) ? 1000 : 250;\n timer = setTimeout(function(){\n each(lib.visuals, function(chart){\n const c3Chart = chart.view._artifacts.c3;\n if (c3Chart) {\n const parentWidth = c3Chart.element.parentNode.parentNode.offsetWidth;\n let width = parentWidth;\n if (chart.config.legend && chart.config.legend.show && (chart.config.legend.position === 'left' || chart.config.legend.position === 'right')) {\n const nextSiblingWidth = c3Chart.element.nextSibling ? c3Chart.element.nextSibling.offsetWidth : 0;\n const prevSiblingWidth = c3Chart.element.previousSibling ? c3Chart.element.previousSibling.offsetWidth : 0;\n width = parentWidth - prevSiblingWidth - nextSiblingWidth;\n }\n\n c3Chart.resize({\n width,\n });\n\n }\n });\n }, delay);\n });\n\n return defineC3();\n};\n\nfunction defineC3(){\n const types = {\n message,\n metric,\n table,\n spinner,\n 'funnel': new Funnel,\n 'funnel-3d': new Funnel3d,\n 'horizontal-funnel': new HorizontalFunnel,\n 'horizontal-funnel-3d': new HorizontalFunnel3d,\n 'metric-combo': new MetricCombo,\n 'heatmap': new Heatmap,\n 'choropleth': new Choropleth\n };\n\n const c3Types = [\n // Standard types\n 'area',\n 'area-spline',\n 'area-step',\n 'bar',\n 'donut',\n 'gauge',\n 'line',\n 'pie',\n 'step',\n 'spline',\n\n // Horizontal variant types\n 'horizontal-area',\n 'horizontal-area-spline',\n 'horizontal-area-step',\n 'horizontal-bar',\n 'horizontal-line',\n 'horizontal-step',\n 'horizontal-spline',\n ];\n\n const getPaddings = (element, paddingName) => {\n return parseInt(window.getComputedStyle(element)[`padding${paddingName}`].replace('px', ''));\n }\n\n function getDefaultOptions(){\n const ENFORCED_OPTIONS = {\n bindto: this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'),\n color: {\n pattern: this.config.colors\n },\n data: {\n colors: { ...this.config.colorMapping },\n columns: [],\n type: this.config.type.replace('horizontal-', '')\n },\n };\n\n const renderingElement = this.el();\n\n let height = renderingElement.offsetHeight;\n\n height -= (getPaddings(renderingElement, 'Top') + getPaddings(renderingElement, 'Bottom'));\n\n if (this.config.showTitle) {\n const titleElement = this.el().querySelector('.keen-dataviz-title');\n if (titleElement) {\n height -= titleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.subtitle) {\n const subtitleElement = this.el().querySelector('.keen-dataviz-subtitle');\n if (subtitleElement) {\n height -= subtitleElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n if (this.config.notes) {\n const notesElement = this.el().querySelector('.keen-dataviz-notes');\n if (notesElement) {\n height -= notesElement.offsetHeight;\n } else {\n height -= parseInt(\n window\n .getComputedStyle(this.el(), null)\n ['font-size'].replace('px','')\n );\n }\n }\n\n let width = this.el().querySelector('.c3-chart').offsetWidth\n - (getPaddings(renderingElement, 'Left') + getPaddings(renderingElement, 'Right'));\n if (width < 0) {\n width = 0;\n }\n\n const DEFAULT_OPTIONS = {\n size: {\n width,\n height:\n height > 0 ?\n height\n : undefined,\n }\n };\n\n const extendedConfig = extendDeep({}, DEFAULT_OPTIONS, this.config, ENFORCED_OPTIONS);\n\n return extendedConfig;\n }\n\n each(c3Types, function(type, index) {\n types[type] = {\n render: function(){\n const options = getDefaultOptions.call(this);\n\n // 100% for charts\n const sumArray = calculateSumForPercents(this.dataset.matrix);\n let oldMatrix = [];\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' || type === 'area-step' || type === 'area-spline')) {\n oldMatrix = this.dataset.matrix;\n this.dataset.matrix = [this.dataset.matrix[0], ...calculatePercents(this.dataset.matrix, sumArray)];\n if(!options.sparkline){\n options.axis = {\n y: {\n padding: {\n top: 0,\n },\n tick: {\n format: d => `${d}%`,\n },\n },\n };\n }\n }\n\n // range charts\n if (options.range) {\n this.dataset.matrix = [this.dataset.matrix[0], ...calculateRange(this.dataset.matrix)];\n }\n\n if (!!this.config.clearOnRender && options.data.columns.length && this.dataset && this.dataset.meta) {\n const datasetMeta = this.dataset.meta || {};\n const { type = '' } = datasetMeta;\n let spliceFrom = 0;\n const intervalTypes = ['interval'];\n if (intervalTypes.includes(type)) {\n spliceFrom = 1;\n }\n options.data.columns.splice(spliceFrom);\n }\n\n if (this.data()[0].length === 1 || this.data().length === 1) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n let removeLegend = false;\n\n if (type === 'gauge') {\n // Accommodate a neat bug:\n options.legend.show = false;\n options.data.columns = [[\n this.config.title || this.data()[1][0],\n this.data()[1][1]\n ]];\n removeLegend = true;\n }\n else if (type === 'pie' || type === 'donut') {\n options.data.columns = this.data().slice(1);\n }\n else {\n\n // Apply formatting for horizontal variant types\n if (type.indexOf('horizontal-') > -1) {\n options.axis.rotated = type.indexOf('horizontal-') > -1;\n }\n\n if (isDateString(this.data()[1][0])) {\n // TIMESERIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'timeseries';\n options.axis.x.tick = options.axis.x.tick || {\n format: this.config.dateFormat || c3DefaultDateFormat(this.data()[1][0], this.data()[2] ? this.data()[2][0] : this.data()[1][0]),\n culling: { max: 5 }\n };\n\n options.data.columns[0] = [];\n each(this.dataset.selectColumn(0), function(cell, i){\n if (i > 0) {\n cell = new Date(cell);\n }\n options.data.columns[0][i] = cell;\n });\n options.data.columns[0][0] = 'x';\n options.data.x = 'x';\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n else {\n // CATEGORIES\n options.axis.x = options.axis.x || {};\n options.axis.x.type = 'category';\n options.axis.x.categories = this.dataset.selectColumn(0).slice(1);\n if (this.config.stacked && this.data()[0].length > 2) {\n options.data.groups = [ this.dataset.selectRow(0).slice(1) ];\n }\n }\n\n if (this.data()[0].length === 2) {\n options.legend.show = false;\n removeLegend = true;\n }\n\n each(this.data()[0], function(cell, i){\n if (i > 0) {\n options.data.columns.push(this.dataset.selectColumn(i));\n }\n }.bind(this));\n }\n\n if (removeLegend){\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n legendElement.remove();\n options.size.width = this.el().querySelector('.c3-chart').offsetWidth;\n }\n options.legend.show = false;\n }\n\n const chartTypesWithPartialIntervalIndicator = ['area', 'area-spline', 'area-step', 'line', 'spline', 'step'];\n\n if (options.partialIntervalIndicator\n && options.partialIntervalIndicator.show\n && chartTypesWithPartialIntervalIndicator.indexOf(options.type) > -1\n ) {\n const results = options.data.columns && options.data.columns[0];\n if (results && results.length > 1) {\n const partialResultsRegion = {\n axis: 'x',\n start: new Date(results[results.length - 2]),\n class: options.partialIntervalIndicator.className\n };\n options.regions = [...(options.regions || []), partialResultsRegion];\n }\n }\n \n if (\n !(options.tooltip && options.tooltip.show === false)\n &&\n (options.legend.show === true ||\n (options.legend\n && options.legend.tooltip\n && options.legend.tooltip.show)\n )) {\n \n // Apply custom tooltip\n options.tooltip = {\n contents: c3TooltipContents,\n format: {\n title: this.config.tooltip.format.title,\n value: (value, ratio, id, index) => {\n let valueFormatted = c3CustomTooltipFiltering.call(this, value, ratio, id, index);\n if (this.config.tooltip && this.config.tooltip.format && this.config.tooltip.format.value)\n {\n valueFormatted = this.config.tooltip.format.value.call(this, valueFormatted, ratio, id, index);\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = parseFloat(((valueFormatted / 100) * sumArray[index]).toFixed(2));\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n // Restore value from percents calculation for stacking 100% charts\n if (options.stacking === 'percent' && (type === 'bar' || type === 'horizontal-bar' || type === 'area' \n || type === 'area-step' || type === 'area-spline')) {\n valueFormatted = ((valueFormatted / 100) * sumArray[index]).toFixed(2);\n return parseFloat(valueFormatted);\n }\n // Restore value from range calculation for range charts\n if (options.range) {\n if(id === 'Max'){\n valueFormatted += this.dataset.matrix[index+1][2];\n }\n }\n return valueFormatted;\n }\n }\n };\n }\n\n if (options.legend.show === true) {\n const c3options = { ...options };\n // Apply custom color handling\n c3options.data.color = c3CustomDataMapping.bind(this);\n\n c3options.legend.hide = true; // hide default c3 legend\n\n // Render artifacts\n this.view._artifacts['c3'] = c3.generate(c3options);\n\n c3PaginatingLegend.call(this, {...options, onLegendRendered: () => {\n const legendElement = this.el().querySelector('.keen-c3-legend');\n if (legendElement) {\n if (\n options.legend.position === 'top' ||\n options.legend.position === 'bottom'\n ) {\n c3options.size.height -= legendElement.offsetHeight;\n this.view._artifacts['c3'].resize({ height: c3options.size.height });\n } else {\n if (c3options.size.width === 0) {\n c3options.size.width = this.el().offsetWidth\n - getPaddings(this.el(), 'Left')\n - getPaddings(this.el(), 'Right');\n }\n c3options.size.width -= legendElement.offsetWidth;\n this.view._artifacts['c3'].resize({ width: c3options.size.width });\n }\n }\n },\n onPaginated: () => {\n this.view._artifacts['c3'].flush();\n }\n });\n }\n else {\n this.view._artifacts['c3'] = c3.generate(options);\n }\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts['c3']) {\n this.view._artifacts['c3'].destroy();\n this.view._artifacts['c3'] = null;\n }\n }\n };\n });\n\n return types;\n}\n\nfunction c3CustomDataMapping(color, d) {\n const type = this.config.type;\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if ((d.id && scope.indexOf(d.id) > -1)\n || (d && !d.id && scope.indexOf(d) > -1)) {\n return color;\n }\n else {\n if (type === 'donut' || type === 'pie') {\n return 'rgba(0,0,0,.1)';\n }\n else {\n return 'rgba(0,0,0,.07)';\n }\n }\n }\n else {\n return color;\n }\n}\n\nfunction c3CustomTooltipFiltering(value, ratio, id, index) {\n const type = this.config.type;\n\n if (this.view._artifacts.pagination\n && type !== 'gauge'\n /*&& this.type() !== 'pie'\n && this.type() !== 'donut'*/) {\n const scope = this.view._artifacts.pagination.labels;\n if (scope.indexOf(id) > -1) {\n return value;\n }\n }\n else {\n return value;\n }\n}\n\nfunction bindResizeListener(fn){\n if (typeof window === 'undefined') return;\n window.onresize = window.resize = function(){};\n if (window.addEventListener) {\n window.addEventListener('resize', fn, true);\n }\n else if (window.attachEvent) {\n window.attachEvent('onresize', fn);\n }\n}\n","export default function (startDate, endDate) {\n const timeDiff = Math.abs(new Date(startDate).getTime() - new Date(endDate).getTime());\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'June',\n 'July',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n // Yearly (31536000000) + Monthly\n if (timeDiff >= 2419200000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getFullYear();\n };\n }\n // Daily\n else if (timeDiff >= 86400000) {\n return function(ms){\n const date = new Date(ms);\n return months[date.getMonth()] + ' ' + date.getDate();\n };\n }\n // Hourly\n else if (timeDiff >= 3600000) {\n return '%I:%M %p';\n }\n // Minutely\n else {\n return '%I:%M:%S %p';\n }\n}\n","import * as d3 from 'd3';\n\nimport isDateString from '../../../utils/assert-date-string';\n\nexport default function (options) {\n const cols = options.data.columns;\n const datavizInstance = this;\n const chart = this.view._artifacts.c3;\n let columns = [];\n const domNode = this.el().querySelector('.' + datavizInstance.config.theme + '-rendering');\n const legendConfig = datavizInstance.config.legend;\n\n const pagination = this.view._artifacts.pagination = {\n ...{\n hidden: [],\n labels: [],\n offset: 0,\n limit: Math.round((domNode.offsetHeight - 78) / 20),\n total: 0\n },\n ...legendConfig.pagination\n };\n\n if (options.legend.sort) {\n columns = options.legend.sort(cols);\n\n // update column order in the data, so tooltip will be the same order\n const columnsSorted = [];\n const dataColumnsSorted = [];\n if (cols[0][0] === 'x') {\n dataColumnsSorted.push(cols[0]);\n }\n columns.forEach(column => {\n let columnData = options.data.columns.find(item => item[0] === column);\n dataColumnsSorted.push(columnData);\n });\n options.data.columns = dataColumnsSorted;\n } else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i][0] !== 'x' && !isDateString(cols[i][1])) {\n columns.push(cols[i][0]);\n }\n }\n }\n\n const legendElement = this.el().querySelector('.keen-c3-legend');\n\n let align = 'vertical';\n if (legendConfig.position === 'top' || legendConfig.position === 'bottom') {\n align = 'horizontal';\n }\n\n const paginateHorizontalLeftElement = document.createElement('div');\n paginateHorizontalLeftElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-left');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalLeftElement);\n }\n\n const legendItemsElement = document.createElement('div');\n legendItemsElement.setAttribute('class', `keen-c3-legend-items keen-c3-legend-${align}-items`);\n legendElement.append(legendItemsElement);\n\n const paginateVerticalElement = document.createElement('div');\n paginateVerticalElement.setAttribute('class', 'keen-c3-legend-pagination keen-c3-legend-pagination-icons');\n if (align === 'vertical') {\n legendElement.append(paginateVerticalElement);\n }\n\n const paginateHorizontalRightElement = document.createElement('div');\n paginateHorizontalRightElement.setAttribute('class', 'keen-c3-legend-pagination-icons keen-c3-legend-horizontal-pagination-right');\n if (align === 'horizontal') {\n legendElement.append(paginateHorizontalRightElement);\n }\n\n paginateData();\n\n function paginateData(){\n pagination.labels = columns.slice(pagination.offset, pagination.offset + pagination.limit);\n pagination.total = columns.length;\n renderLegendComponent.call(datavizInstance, pagination.labels);\n if (pagination.total > pagination.limit) {\n renderPaginationComponent.call(datavizInstance);\n }\n if (options.onPaginated){\n options.onPaginated();\n }\n }\n\n function renderLegendComponent(){\n legendItemsElement.innerHTML = '';\n\n pagination.labels.forEach(label => {\n const labelShortened = legendConfig.label.textMaxLength ? label.slice(0, legendConfig.label.textMaxLength - 1) : label;\n const legendItem = document.createElement(\"div\");\n legendItem.innerHTML = `${labelShortened}`;\n legendItem.chartPartId = label;\n legendItem.setAttribute('class', 'legend-item');\n legendItemsElement.append(legendItem);\n\n const legendItemColorSample = document.createElement(\"span\");\n legendItemColorSample.setAttribute('class', 'legend-item-color-sample');\n legendItemColorSample.style.backgroundColor = chart.color(legendItem.chartPartId);\n legendItem.prepend(legendItemColorSample);\n\n const tooltipElement = document.createElement(\"div\");\n legendItem.addEventListener('mouseover', (event) => {\n chart.focus(legendItem.chartPartId);\n if (legendConfig.tooltip.show && legendItem.chartPartId.length > legendConfig.label.textMaxLength) {\n tooltipElement.setAttribute('class', `keen-c3-legend-label-overlay keen-c3-legend-position-${legendConfig.position}`);\n tooltipElement.innerHTML =\n `${\n options.legend.tooltip.pointer ? `
` : ``\n }${legendItem.chartPartId}`;\n legendItem.append(tooltipElement);\n }\n });\n legendItem.addEventListener('mouseout', (event) => {\n chart.revert();\n tooltipElement.remove();\n });\n legendItem.addEventListener('click', (event) => {\n let opacity = 1;\n const isHidden = pagination.hidden.indexOf(legendItem.chartPartId);\n if (isHidden < 0) {\n pagination.hidden.push(legendItem.chartPartId);\n opacity = .35;\n }\n else {\n pagination.hidden.splice(isHidden, 1);\n opacity = 1;\n }\n legendItem.style.opacity = opacity;\n chart.toggle(legendItem.chartPartId);\n });\n });\n\n if (options.onLegendRendered){\n options.onLegendRendered();\n options.onLegendRendered = null;\n }\n\n }\n\n function renderPaginationComponent(){\n paginateVerticalElement.innerHTML = '';\n paginateHorizontalLeftElement.innerHTML = '';\n paginateHorizontalRightElement.innerHTML = '';\n\n const arrowUp = document.createElement('i');\n const arrowDown = document.createElement('i');\n\n const paginate = (direction) => {\n if (direction === 'forward') {\n const diff = pagination.offset + pagination.limit;\n if (diff < pagination.total) {\n pagination.offset = diff;\n return;\n }\n pagination.offset = 0;\n return;\n }\n\n const diff = pagination.offset - pagination.limit;\n if (diff >= 0) {\n pagination.offset = diff;\n return;\n }\n\n pagination.offset = Math.floor(pagination.total/pagination.limit) * pagination.limit;\n };\n\n arrowDown.addEventListener('click', () => {\n paginate('forward');\n paginateData();\n clearSelectedText();\n });\n\n arrowUp.addEventListener('click', () => {\n paginate('backward');\n paginateData();\n clearSelectedText();\n });\n\n if (legendConfig.position === 'left' || legendConfig.position === 'right') {\n arrowUp.setAttribute('class', 'up');\n arrowDown.setAttribute('class', 'down');\n paginateVerticalElement.append(arrowDown);\n paginateVerticalElement.append(arrowUp);\n } else {\n // bottom top\n arrowUp.setAttribute('class', 'left');\n arrowDown.setAttribute('class', 'right');\n paginateHorizontalLeftElement.append(arrowUp);\n paginateHorizontalRightElement.append(arrowDown);\n }\n\n }\n\n function clearSelectedText() {\n let selection;\n if (document.selection && document.selection.empty) {\n selection = document.selection;\n selection.empty();\n }\n else if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n }\n }\n}\n","import { escapeHtml } from '../../../utils/escape-html';\n\nexport default function (d, defaultTitleFormat, defaultValueFormat, color) {\n let text;\n let title;\n // Set config options or defaults\n const nameFormat = this.config.tooltip_format_name || function (name) { return name; };\n const titleFormat = this.config.tooltip_format_title || defaultTitleFormat;\n const valueFormat = this.config.tooltip_format_value || defaultValueFormat;\n\n // Reverse list to match legend\n for (let i = 0; i < d.length; i++) {\n if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n if (!text) {\n title = titleFormat ? titleFormat(d[i].x) : d[i].x;\n text = \"\" + (title || title === 0 ? \"\" : \"\");\n }\n let name = nameFormat(d[i].name);\n let value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);\n let bgcolor = this.levelColor ? this.levelColor(d[i].value) : color(d[i].id);\n if (value && !isNaN(value)) {\n text += \"\";\n if (name.indexOf('__tooltip_ignore_name_field__') === -1) {\n text += \"\";\n }\n text += \"\";\n text += \"\";\n }\n }\n return text + \"
\" + escapeHtml(title) + \"
\" + escapeHtml(name) + \"\" + escapeHtml(value) + \"
\";\n}\n","export default function calculateRange(matrix) {\n const newValues = matrix.slice(1).map(d => d.map((e, i) => {\n if (typeof e === 'number') {\n if (i === 1) {\n return e - d[i + 1];\n }\n }\n return e;\n }));\n return newValues;\n}","export function calculateSumForPercents(matrix) {\n const sumArray = [];\n matrix.slice(1).forEach((d, i) => {\n d.forEach((e) => {\n if (typeof e === 'number') {\n if (!sumArray[i]) {\n sumArray[i] = e;\n return sumArray[i];\n }\n sumArray[i] += e;\n }\n return sumArray[i];\n });\n });\n return sumArray;\n}\n\nexport function calculatePercents(matrix, sumArray) {\n const newValues = matrix.slice(1).map((d, i) => d.map((e) => {\n if (typeof e === 'number') {\n return (e / sumArray[i]) * 100;\n }\n return e;\n }));\n return newValues;\n}\n","import { escapeHtml } from '../../utils/escape-html';\nimport renderDownloadButton from '../../utils/render-download-btn';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default {\n render: function(text){\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n const msg = document.createElement('span');\n\n const titleContainer = document.createElement('div');\n const subtitleContainer = document.createElement('div');\n const notesContainer = document.createElement('div');\n\n outer.className = this.config.theme + ' keen-dataviz-box';\n inner.className = this.config.theme + '-message';\n\n // Create title and notes for message\n titleContainer.className = this.config.theme + '-title';\n titleContainer.innerHTML = escapeHtml(this.config.title || '');\n subtitleContainer.className = this.config.theme + '-subtitle';\n subtitleContainer.innerHTML = escapeHtml(this.config.subtitle || '');\n notesContainer.className = this.config.theme + '-notes';\n notesContainer.innerHTML = escapeHtml(this.config.notes || '');\n\n msg.innerHTML = escapeHtml(text) || '';\n inner.appendChild(msg);\n\n if (this.config.title && this.config.showTitle) {\n outer.appendChild(titleContainer);\n }\n\n if (this.config.subtitle) {\n outer.appendChild(subtitleContainer);\n }\n\n outer.appendChild(inner);\n\n if (this.config.notes) {\n outer.appendChild(notesContainer);\n }\n\n if (this.config.ui\n && this.config.ui.buttons\n && this.config.ui.buttons.download\n && this.config.ui.buttons.download.type) {\n renderDownloadButton({\n element: this.el(),\n data: escapeHtml(text) || '',\n type: this.config.ui.buttons.download.type,\n label: this.config.ui.buttons.download.label,\n })\n }\n\n if (this.config.utils\n && this.config.utils.clickToCopyToClipboard) {\n titleContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n notesContainer.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n msg.addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n\n this.el().innerHTML = '';\n this.el().appendChild(outer);\n\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import exportImage from './export-svg';\nimport exportData from './export-data';\n\nexport default function downloadResults(obj) {\n const { event, type, data } = obj;\n event.preventDefault();\n const supportedFormats = ['json', 'csv', 'jpg', 'jpeg', 'png'];\n const format = type.toLowerCase();\n if (!supportedFormats.includes(type)) {\n throw new Error('This type is not supported');\n }\n\n const fileName = 'chart';\n let fileFormat = '';\n let content = '';\n\n if (format === 'png') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n });\n return;\n }\n\n if (format === 'jpg' || format === 'jpeg') {\n exportImage({\n node: event.currentTarget.previousElementSibling,\n quality: 1,\n bgcolor: '#fff',\n });\n return;\n }\n\n if (format === 'json') {\n exportData({ type: format, data });\n }\n\n if (format === 'csv') {\n exportData({ type: format, data });\n }\n}\n","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { prettyNumber } from '../../utils/pretty-number';\nimport { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nfunction formatExtractionData(res, prop) {\n const { query, result } = res;\n const formattedResult = [];\n if (query.analysis_type !== 'extraction') throw new Error('Analysis type is not an extraction!');\n if (Array.isArray(result)) {\n result.forEach((item) => {\n const itemProp = prop.split('.').reduce((acc, val) => (acc && acc[val]) || null, item);\n const obj = {\n query,\n result: itemProp,\n };\n formattedResult.push(obj);\n });\n }\n return formattedResult;\n}\n\nexport default {\n render: function(){\n let color = this.config.colors[0];\n const theme = this.config.theme;\n const title = this.config.title;\n const subtitle = this.config.subtitle;\n const opts = this.config;\n let value = '-';\n let prevValue= '';\n let html = '';\n let prefix = '';\n let suffix = '';\n let formattedNum;\n let flexDifferenceStyle = '';\n let resultDifference = '';\n let differenceStyle = '';\n let smallerValue = '';\n const { results, previousResults, isExtraction, comparedProp } = this.config;\n if(results && previousResults){\n flexDifferenceStyle = previousResults ? ' metric-comparison' : '';\n smallerValue = previousResults && title ? '-smaller' : '';\n resultDifference = results.result - previousResults.result;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n if (this.data() && this.data()[1] && this.data()[1][1] && typeof this.data()[1][1] === 'number') {\n value = this.data()[1][1];\n }\n\n if (isExtraction && comparedProp) {\n const formattedResult = formatExtractionData(results, comparedProp);\n \n value = formattedResult[0].result;\n prevValue = formattedResult[1].result;\n\n flexDifferenceStyle = prevValue ? ' metric-comparison' : '';\n smallerValue = prevValue && title ? '-smaller' : '';\n resultDifference = value - prevValue;\n differenceStyle = (resultDifference > 0) ? '-green' : '-red';\n resultDifference = Math.abs(resultDifference);\n color = '';\n }\n\n formattedNum = value;\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(value)) ) {\n formattedNum = prettyNumber(value);\n if(results && previousResults){\n resultDifference = prettyNumber(resultDifference);\n }\n }\n\n if (opts['prefix']) {\n prefix = '' + opts['prefix'] + '';\n }\n if (opts['suffix']) {\n suffix = '' + opts['suffix'] + '';\n }\n html += '
';\n html += '
';\n if (results && previousResults) {\n html += '
' + escapeHtml(resultDifference) + '
';\n }\n if (isExtraction && comparedProp) {\n if (value && prevValue) {\n html += '
' + escapeHtml(resultDifference) + '
';\n html += '' + prevValue + '';\n } else {\n html += '

No data to display

';\n }\n }\n html += '
' + prefix + escapeHtml(formattedNum) + suffix + '
';\n if (title) {\n html += '
' + escapeHtml(title) + '
';\n }\n if (subtitle) {\n html += '
' + escapeHtml(subtitle) + '
';\n }\n html += '
';\n html += '
';\n\n this.el().innerHTML = html;\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const resultClassName = `.${theme}-metric-value${smallerValue}`;\n document.querySelector(resultClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n\n if (results && previousResults) {\n const previousResultsClassName = `.${theme}-metric${differenceStyle}`;\n document.querySelector(previousResultsClassName).addEventListener('click', e => copyToClipboard(e.target.innerText, e));\n }\n }\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n // no special clean-up\n }\n};\n","import { escapeHtml } from '../../utils/escape-html';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nlet currentPage;\nfunction _generateTableRows(datavizInstance, dataset) {\n let html = '';\n const defaultConfig = {\n page: 1,\n limit: 0,\n arrows: true\n };\n let customConfig = {};\n if (datavizInstance.config.table && datavizInstance.config.table.pagination) {\n customConfig = datavizInstance.config.table.pagination;\n }\n const config = {\n ...defaultConfig,\n ...customConfig\n };\n\n if (!currentPage){\n currentPage = config.page;\n }\n\n let datasetPaginated;\n let pages = 0;\n if (config.limit === 0) {\n datasetPaginated = dataset.slice(1); // remove header\n } else {\n const start = config.limit * (currentPage - 1) + 1;\n const end = start + config.limit;\n datasetPaginated = dataset.slice(start, end);\n pages = Math.ceil((dataset.length - 1) / config.limit);\n }\n\n let columnsArray = datavizInstance.config.table.columns ?\n datavizInstance.config.table.columns :\n datavizInstance.dataset.matrix[0];\n\n const colNamesToMap = {};\n const {\n mapValues,\n mapDates,\n } = datavizInstance.config.table;\n for (let key in mapValues){\n colNamesToMap[columnsArray.indexOf(key)] = key;\n }\n\n for (let row of datasetPaginated) {\n html += '';\n for (let [index, rowColValue] of row.entries()) {\n if (mapDates && rowColValue instanceof Date) {\n rowColValue = mapDates(rowColValue);\n }\n\n let rowColValueEscaped = escapeHtml(rowColValue);\n if(colNamesToMap[index]){\n html += `${mapValues[colNamesToMap[index]](rowColValueEscaped)}`;\n continue;\n }\n html += `${rowColValueEscaped}`\n }\n html += '';\n }\n\n if (pages > 1){\n html += ``;\n let pageNumber = 1;\n const prevPage = (currentPage === 1) ? 1 : (currentPage - 1);\n const nextPage = (currentPage === pages) ? pages : (currentPage + 1);\n if (config.arrows){\n html += `«`;\n }\n while (pageNumber <= pages){\n html += `${pageNumber}`;\n pageNumber++;\n }\n if (config.arrows){\n html += `»`;\n }\n html += '';\n }\n\n return html;\n}\n\nfunction _generateTableHeader(datavizInstance, dataset) {\n let html = '';\n let fieldNumber = -1;\n const tableConfig = datavizInstance.config.table;\n const columnNames =\n (tableConfig && tableConfig.columns)\n || dataset[0];\n for (let colName of columnNames) {\n let colNameEscaped = escapeHtml(colName);\n fieldNumber +=1;\n html += `${colNameEscaped}`;\n }\n return html;\n}\n\n\n const render = function() {\n const dataset = this.dataset.matrix;\n\n const el = this.el();\n const theme = this.config.theme;\n const datavizInstance = this;\n\n let html = '';\n\n const isEmpty = dataset.length === 1 && dataset[0].length === 0;\n if (isEmpty) {\n const msg = 'No data to display';\n const mappedMsg = this.config.errorMapping[msg] || msg;\n if (this.config.showErrorMessages) {\n this.message(mappedMsg);\n }\n return;\n }\n\n // Open wrapper\n html += `
`;\n\n // Static, scrollable table\n html += ``;\n html += '';\n html += '';\n html += _generateTableHeader(datavizInstance, dataset);\n html += '';\n html += '';\n // Table data\n html += '';\n html += _generateTableRows(datavizInstance, dataset);\n html += '';\n html += '
';\n/* */\n // Close wrapper\n html += '
';\n\n // Inject HTML string\n el.querySelector(`.${theme}-rendering`).innerHTML = html;\n\n el\n .querySelectorAll(`.${theme}-rendering th`)\n .forEach((item) => {\n item.addEventListener('click', (event) => {\n let sortOrder = event.target.getAttribute('order') || 'asc';\n let fieldNumber = event.target.getAttribute('fieldNumber');\n let checker = function (a, b) {\n let sortOrderNumber = (sortOrder === 'asc') ? 1 : -1;\n\n if (typeof a[fieldNumber] === 'string') {\n let nameA = a[fieldNumber].toUpperCase(); // ignore upper and lowercase\n let nameB = b[fieldNumber].toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1 * sortOrderNumber;\n }\n if (nameA > nameB) {\n return 1* sortOrderNumber;\n }\n\n // names must be equal\n return 0;\n }\n return (a[fieldNumber] - b[fieldNumber]) * sortOrderNumber;\n };\n\n if (sortOrder === 'asc') {\n sortOrder = 'desc';\n } else {\n sortOrder = 'asc'\n }\n event.target.setAttribute('order', sortOrder);\n\n const first = this.dataset.matrix.shift();\n this.dataset.matrix.sort(checker);\n this.dataset.matrix.unshift(first);\n\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n });\n });\n\n\n const attachBtnEventListeners = () => {\n el.querySelectorAll('.btn').forEach(btn => {\n btn.addEventListener('click', (event) => {\n currentPage = parseInt(event.target.getAttribute('data-page'));\n el.querySelector(`.${theme}-rendering tbody`).innerHTML =\n _generateTableRows(datavizInstance, dataset);\n attachBtnEventListeners();\n }, true);\n });\n };\n\n attachBtnEventListeners(datavizInstance, el, theme);\n\n if (this.config.onrendered) {\n this.config.onrendered();\n }\n\n if (this.config.utils && this.config.utils.clickToCopyToClipboard) {\n const tableClass = `.${theme}-table-dataset`;\n document.querySelector(tableClass)\n .addEventListener('click', (e) => {\n const { nodeName, innerText } = e.target;\n if (nodeName === 'TD') {\n copyToClipboard(innerText, e);\n }\n });\n }\n };\n\n\n\nconst update = function(){\n // no special update handling\n this.render();\n };\n\nconst destroy= function(){};\n\nexport default { render, update, destroy };\n","export default {\n render: function(){\n let html = '';\n const artifacts = this.view._artifacts.spinner = {};\n\n // Build DOM element\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n this.el().innerHTML = html;\n },\n update: function(){\n // no special update handling\n this.render();\n },\n destroy: function(){\n if (this.view._artifacts.spinner) {\n if (this.view._artifacts.spinner.interval) {\n clearInterval(this.view._artifacts.spinner.interval);\n }\n this.view._artifacts.spinner.radius = 0;\n try {\n delete this.view._artifacts.spinner;\n }\n catch (e) {\n this.view._artifacts.spinner = undefined;\n }\n }\n this.el().innerHTML = '';\n }\n};\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 30, left: 200 };\n let yMarginElement = 0;\n if(marginBetweenSteps){\n yMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if (countingMethod === \"relative\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth =\n (prevElemWidth * d[1]) / matrix[i][1]);\n percent = ((d[1] / matrix[i][1]) * 100).toFixed(decimals);\n }\n if (countingMethod === \"absolute\") {\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : (prevElemWidth = (svgWidth * d[1]) / matrix[1][1]);\n percent = ((d[1] / matrix[1][1]) * 100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n \n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('x2', (d) => { return d.points[1].x + margin.left; })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/2);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('x2', polygons[polygons.length-1].points[2].x + margin.left)\n .attr('y2', polygons[polygons.length-1].points[2].y\n + margin.top + (yMarginElement/2))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2)\n + (margin.left * 0.9);\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 5\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 16\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement + 12\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n if(yMarginElement === 0){\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top;\n }\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + yMarginElement - 5;\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Funnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 60, left: 200 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemHeight = svgHeight/(matrix.length - 1);\n const yMarginElement = elemHeight * 0.3;\n const shadowCut = (yMarginElement * 2.5);\n let prevElemWidth = svgWidth;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgWidth - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * i + yMarginElement\n },\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * i + yMarginElement\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = prevElemWidth * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemWidth = prevElemWidth - minimalSizeStep)\n : prevElemWidth = svgWidth * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: ((svgWidth - prevElemWidth)/2 + prevElemWidth),\n y: elemHeight * (i + 1)\n },\n {\n x: ((svgWidth - prevElemWidth)/2),\n y: elemHeight * (i + 1)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[3].x,\n y: d.points[3].y\n },\n {\n x: d.points[2].x,\n y: d.points[2].y\n },\n {\n x: effect3d === 'left'\n ? d.points[2].x\n : d.points[2].x - shadowCut < svgWidth/2\n ? svgWidth/2 + 5\n : d.points[2].x - shadowCut,\n y: effect3d === 'left'\n ? d.points[2].y\n : d.points[2].y + (yMarginElement/1.5)\n },\n {\n x: effect3d === 'right'\n ? d.points[3].x\n : d.points[3].x + shadowCut > svgWidth/2\n ? svgWidth/2 - 5\n : d.points[3].x + shadowCut,\n y: effect3d === 'right'\n ? d.points[3].y\n : d.points[3].y + (yMarginElement/1.5)\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', 10)\n .attr('y1', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('x2', (d, i) => {\n if(i === 0){\n return d.points[1].x + margin.left;\n }\n return d.points[1].x + margin.left - shadowCut;\n })\n .attr('y2', (d) => {\n return d.points[0].y + margin.top - (yMarginElement/5);\n })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', 10)\n .attr('y1', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('x2', polygons[polygons.length-1].points[2].x\n + margin.left - shadowCut )\n .attr('y2', polygons[polygons.length-1].points[2].y + margin.top\n + yMarginElement - (yMarginElement/5))\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'start')\n .attr('x', 20)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5 + (yMarginElement/4)\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'end')\n .attr('x', (d) => {\n return d.points[0].x + ((d.points[3].x - d.points[0].x)/2) + 130;\n })\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 5;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, margin.left)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 8\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 18\n })\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', svgWidth/2 + margin.left)\n .attr('y', (d) => {\n return ((d.points[2].y - d.points[1].y)/2) + d.points[1].y\n + margin.top + 3\n })\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n marginBetweenSteps,\n resultValues,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n let xMarginElement = 0;\n if(marginBetweenSteps){\n xMarginElement = 5;\n }\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined'\n || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement/2);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left - (xMarginElement/2))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/2))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight + (margin.bottom * 0.5) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', (d) => {\n if(d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) > svgHeight + margin.bottom - 40 + margin.top){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n return d.points[2].y + ((d.points[3].y - d.points[0].y)/2)\n + (elemWidth/4) + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport { textWrap } from '../../utils/svg-text-wrap';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class HorizontalFunnel3d {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n labelMapping,\n colorMapping,\n utils,\n } = this.config;\n const opts = this.config;\n const {\n percents: {\n show,\n countingMethod,\n decimals,\n },\n lines,\n resultValues,\n effect3d,\n hover,\n minimalSize,\n } = this.config.funnel;\n const margin = { top: 20, right: 30, bottom: 100, left: 10 };\n const funnelContainer = d3.select(container);\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n const chart = chartContainer.append('svg');\n const svgWidth = funnelContainer.style('width').slice(0, -2)\n - margin.right - margin.left;\n const svgHeight = funnelContainer.style('height').slice(0, -2)\n - margin.top - margin.bottom - 30;\n const elemWidth= svgWidth/(matrix.length - 1);\n const xMarginElement = elemWidth * 0.3;\n const shadowCut = (xMarginElement/1.5);\n let prevElemHeight = svgHeight;\n let percent = (100).toFixed(decimals);\n\n // prepare normal funnel polygons\n let minimalSizeStep = 0;\n if(minimalSize){\n minimalSizeStep = (svgHeight - minimalSize) / (matrix.length-2);\n }\n const polygons = matrix.slice(1).map((d, i) => {\n const newPoints = [\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2)\n },\n {\n x: elemWidth * i + xMarginElement,\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n ]\n if(i !== 0){\n if(countingMethod === 'relative'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = prevElemHeight * d[1]/matrix[i][1];\n percent = ((d[1]/matrix[i][1])*100).toFixed(decimals);\n }\n if(countingMethod === 'absolute'){\n minimalSize\n ? (prevElemHeight = prevElemHeight - minimalSizeStep)\n : prevElemHeight = svgHeight * d[1]/matrix[1][1];\n percent = ((d[1]/matrix[1][1])*100).toFixed(decimals);\n }\n }\n let label = d[0];\n if(Object.keys(labelMapping).length){\n for (let key in labelMapping) {\n if(labelMapping[key] === d[0]) {\n label = key;\n }\n }\n }\n let result = d[1];\n if ( (typeof opts['prettyNumber'] === 'undefined' || opts['prettyNumber'] === true)\n && !isNaN(parseInt(d[1])) ) {\n result = prettyNumber(d[1]);\n }\n return {\n name: d[0],\n label,\n percent: percent + '%',\n result,\n points: [\n ...newPoints,\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2 + prevElemHeight)\n },\n {\n x: elemWidth * (i + 1),\n y: ((svgHeight - prevElemHeight)/2)\n }\n ]\n }\n });\n\n //funnel shadows preparing\n const polygonsShadows = polygons.map((d, i) => {\n return {\n label: d.label,\n points: [\n {\n x: d.points[0].x,\n y: d.points[0].y\n },\n {\n x: d.points[1].x,\n y: d.points[1].y\n },\n {\n x: effect3d === 'top'\n ? d.points[1].x\n : d.points[1].x - shadowCut,\n y: effect3d === 'top'\n ? d.points[1].y\n : d.points[1].y - xMarginElement < svgHeight/2\n ? svgHeight/2 + 5\n : d.points[1].y - xMarginElement\n },\n {\n x: effect3d === 'bottom'\n ? d.points[0].x\n : d.points[0].x - shadowCut,\n y: effect3d === 'bottom'\n ? d.points[0].y\n : d.points[0].y + xMarginElement > svgHeight/2\n ? svgHeight/2 - 5\n : d.points[0].y + xMarginElement\n },\n ]\n }\n })\n\n //connecting funnels with shadows for rendering\n const polygons3d = polygons.concat(polygonsShadows);\n\n //chart rendering with polygons\n chart\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .attr('viewBox', `0 0 ${svgWidth + margin.left + margin.right} ${svgHeight + margin.top + margin.bottom - 30}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n .selectAll('polygon')\n .data(polygons3d)\n .enter()\n .append('polygon')\n .attr('points', (d) => {\n return d.points.map((p) => {\n return [p.x,p.y].join(',');\n })\n .join(' ');\n })\n .style('fill', (d, i) => {\n if(i > (polygons.length - 1)){\n if(colorMapping[d.label]){\n return d3.rgb(colorMapping[d.label]).darker(1.5);\n }\n return d3.rgb(colors[i - (polygons.length)]).darker(1.5);\n }\n if(colorMapping[d.label]){\n return colorMapping[d.label];\n }\n return colors[i];\n })\n .attr('class', (d) => { return d.label; })\n .attr('cursor', 'pointer');\n\n if(lines){\n //rendering lines\n chart\n .selectAll('line')\n .data(polygons)\n .enter()\n .append('line')\n .attr('x1', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', (d) => {\n return d.points[0].x + margin.left - (xMarginElement * 0.8);\n })\n .attr('y2', (d) => { return d.points[0].y + margin.top; })\n .attr('class', 'chart-lines');\n\n //rendering last line\n chart\n .append('line')\n .attr('x1', svgWidth + margin.left + (xMarginElement/4))\n .attr('y1', svgHeight + margin.bottom)\n .attr('x2', polygons[polygons.length-1].points[3].x\n + margin.left + (xMarginElement/4))\n .attr('y2', polygons[polygons.length-1].points[3].y + margin.top)\n .attr('class', 'chart-lines');\n }\n\n //rendering labels when lines are visible\n if(lines){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', svgHeight + (margin.bottom * 0.4) + margin.top)\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering labels when lines are not visible\n if(!lines) {\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[0].x + margin.left + (elemWidth * 0.25)\n })\n .attr('y', (d) => {\n if(d.points[2].y + (elemWidth/4) >\n svgHeight + margin.bottom - 40){\n return svgHeight + margin.bottom - 40 + margin.top;\n }\n if(d.points[2].y + (elemWidth/4) < d.points[1].y){\n return d.points[1].y + 20 + margin.top;\n }\n return d.points[2].y + (elemWidth/4) + 10 + margin.top;\n })\n .attr('class', (d) => { return 'text-label ' + d.label; })\n .text((d) => { return d.name; })\n .call(textWrap, elemWidth)\n .attr('cursor', 'pointer');\n }\n\n //rendering percents for each step\n if(show && !resultValues){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results for each step\n if(resultValues && !show){\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 10)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //rendering results and percenage together\n if(show && resultValues){\n //rendering percents\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2 + margin.top + 16)\n .attr('class', (d) => { return 'text-second ' + d.label; })\n .text((d) => { return d.percent; })\n .attr('cursor', 'pointer');\n\n //rendering results\n chart\n .selectAll('text.label')\n .data(polygons)\n .enter()\n .append('text')\n .style('text-anchor', 'middle')\n .attr('x', (d) => {\n return d.points[1].x + (elemWidth/2.8) + margin.left\n })\n .attr('y', svgHeight/2+ margin.top - 3)\n .attr('class', (d) => { return 'text-main ' + d.label; })\n .text((d) => { return d.result; })\n .attr('cursor', 'pointer');\n }\n\n //hover handling\n if(hover){\n const polygonsHover = chart.selectAll('polygon');\n polygonsHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n const labelHover = chart.selectAll('text');\n labelHover\n .on(\"mouseover\", handleMouseOver)\n .on(\"mouseout\", handleMouseOut);\n\n function handleMouseOver(d) {\n polygonsHover\n .style('opacity', 0.5);\n labelHover\n .style('opacity', 0.5);\n const thisLabel = /[^ ]*$/.exec(d3.select(this).attr('class'))[0];\n chart\n .selectAll(`.${thisLabel}`)\n .style('opacity', 1);\n }\n function handleMouseOut(d) {\n polygonsHover\n .style('opacity', 1);\n labelHover\n .style('opacity', 1);\n }\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll('text');\n\n label.on('click', handleClickToCopy);\n\n function handleClickToCopy(data) {\n const { percent, result } = data;\n if (resultValues) {\n copyToClipboard(result, d3.event);\n } else if (show) {\n copyToClipboard(percent, d3.event);\n }\n }\n }\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(this.el().querySelector('.' + this.config.theme + '-rendering .c3-chart'));\n chartContainer.remove();\n }\n}\n","/* eslint-env browser */\nimport c3 from 'c3';\nimport { each } from '../../utils/each';\nimport { prettyNumber } from '../../utils/pretty-number';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class MetricCombo {\n render() {\n const {\n container,\n metricResults,\n title,\n showTitle,\n subtitle,\n tooltip,\n utils,\n } = this.config;\n\n const colors = ['#c3c4cc'];\n const columns = [];\n columns[0] = [];\n each(this.dataset.selectColumn(0), (c, i) => {\n let cell;\n if (i > 0) {\n cell = new Date(c);\n }\n columns[0][i] = cell;\n });\n columns[0][0] = 'x';\n\n each(this.data()[0], (c, i) => {\n if (i > 0) {\n columns.push(this.dataset.selectColumn(i));\n }\n });\n\n const prevResult = (metricResults && metricResults.previous && metricResults.previous.result)\n || 0;\n const currResult = (metricResults && metricResults.current && metricResults.current.result)\n || 0;\n const count = currResult - prevResult;\n const percentDifference = prevResult === 0 ? '-' : prettyNumber(Math.round((count / prevResult) * 100));\n let labelClass = 'keen-dataviz-metric-green';\n let iconClass = 'arrow-green';\n\n if (percentDifference < 0) {\n labelClass = 'keen-dataviz-metric-red';\n iconClass = 'arrow-red';\n }\n\n const containerTitle = (showTitle && title) ? `
${title}
` : '';\n const containerSubtitle = subtitle ? `
${subtitle}
` : '';\n const containerElement = document.querySelector(container);\n containerElement.innerHTML = `\n
\n
\n
\n ${containerTitle}\n ${containerSubtitle}\n
${percentDifference} %
\n
${prettyNumber(count)}
\n
\n
\n
\n
\n
\n
`;\n const chartRoot = containerElement.querySelector('.c3-chart');\n const chart = c3.generate({\n bindto: chartRoot,\n color: {\n pattern: colors,\n },\n title,\n legend: {\n show: false,\n },\n data: {\n x: 'x',\n columns,\n type: 'area-spline',\n selection: {\n draggable: false,\n enabled: true,\n multiple: true,\n },\n },\n point: {\n r: 0,\n focus: {\n expand: {\n r: 5,\n enabled: true,\n },\n },\n select: {\n r: 5,\n enabled: true,\n },\n },\n axis: {\n y: {\n show: false,\n },\n x: {\n show: false,\n },\n },\n grid: {\n x: {\n show: false,\n },\n y: {\n show: false,\n },\n },\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: -4,\n },\n tooltip,\n });\n\n if (utils && utils.clickToCopyToClipboard) {\n const currentCount = document.querySelector('.current-count').innerText;\n document.querySelector('.keen-dataviz-metric-combo')\n .addEventListener('click', e => copyToClipboard(currentCount, e));\n }\n }\n\n update() {\n this.destroy();\n this.render();\n }\n\n destroy() {\n const { container } = this.config;\n const containerElement = document.querySelector(container);\n const chartContainer = containerElement.querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from 'd3';\nimport Rangeable from 'rangeable';\nimport copyToClipboard from '../../utils/copy-to-clipboard';\n\nexport default class Heatmap {\n render() {\n const {\n colors,\n container,\n heatmap: { showSlider, simpleTooltip },\n } = this.config;\n const {\n matrix,\n meta,\n } = this.dataset;\n const margin = {\n top: 10,\n right: 10,\n bottom: 50,\n left: 50,\n };\n const baseWidth = 600;\n const baseHeight = 600;\n const heatmapContainer = d3.select(container);\n const containerWidth = parseInt(heatmapContainer.style('width'), 10) || baseWidth;\n const containerHeight = parseInt(heatmapContainer.style('height'), 10) || baseHeight;\n const chartContainer = this.el().querySelector('.c3-chart');\n const svgWidth = containerWidth - margin.right - margin.left;\n const svgHeight = containerHeight - margin.top - margin.bottom;\n\n const xLabel = new Set();\n const yLabel = new Set();\n\n const formatData = () => {\n const dateFormat = d3.timeFormat('%B %d');\n const timeFormat = d3.timeFormat('%H:%M');\n const arr = [];\n matrix.forEach((element) => {\n if (meta.type === 'heatmap') {\n if (typeof element[0][2] === 'number') {\n const obj = {\n x: element[0][0],\n y: element[0][1],\n value: element[0][2],\n };\n arr.push(obj);\n }\n } else {\n const timestamp = Date.parse(element[0]);\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(timestamp)) {\n const obj = {\n x: dateFormat(new Date(element[0])),\n y: timeFormat(new Date(element[0])),\n value: element[1],\n };\n arr.push(obj);\n }\n }\n });\n return arr;\n };\n\n const formattedData = formatData();\n\n formattedData.forEach((item) => {\n xLabel.add(item.x);\n yLabel.add(item.y);\n });\n\n const refValue = formattedData[0].value;\n const minRange = formattedData\n .reduce((min, curr) => (curr.value < min ? curr.value : min), refValue);\n const maxRange = formattedData\n .reduce((max, curr) => (curr.value > max ? curr.value : max), refValue);\n\n const getColor = () => {\n const defaultColor = '#00BBDE';\n const baseColor = colors[0];\n let rgb = d3.rgb(defaultColor);\n if (d3.color(baseColor)) {\n rgb = d3.rgb(baseColor);\n }\n return rgb;\n };\n\n const getColorAlpha = d3.scaleLinear()\n .domain([0, d3.max(formattedData, d => d.value)])\n .range([0, 1]);\n\n const convertRGBAtoRGB = (color, bg = [255, 255, 255]) => {\n const opacity = color[3];\n\n return [Math.floor(((1 - opacity) * bg[0]) + (opacity * color[0]) + 0.5),\n Math.floor(((1 - opacity) * bg[1]) + (opacity * color[1]) + 0.5),\n Math.floor(((1 - opacity) * bg[2]) + (opacity * color[2]) + 0.5)];\n };\n\n const getTileColor = (value) => {\n const alpha = getColorAlpha(value);\n const rgb = getColor();\n const solidColor = convertRGBAtoRGB([rgb.r, rgb.g, rgb.b, alpha]);\n const color = `rgb(${solidColor[0]}, ${solidColor[1]}, ${solidColor[2]})`;\n return color;\n };\n\n const svg = d3.select(chartContainer)\n .append('svg')\n .attr('preserveAspectRatio', 'xMidYMid slice')\n .attr('viewBox', `0 0 ${containerWidth} ${containerHeight}`)\n .attr('height', '100%')\n .attr('width', '100%')\n .append('g')\n .attr(\n 'transform',\n `translate(${margin.left},${margin.top})`,\n );\n\n if (showSlider) {\n // eslint-disable-next-line no-unused-vars\n const rangeableInput = d3.select(container)\n .append('input')\n .attr('type', 'range')\n .attr('class', 'keen-dataviz-slider');\n\n const handleSliderChange = (data) => {\n const rects = svg.selectAll('rect');\n const [min, max] = data;\n\n rects.each((d, i, nodes) => {\n d3.select(nodes[i])\n .style('visibility', () => ((d.value > max || d.value < min) ? 'hidden' : 'visible'));\n });\n };\n\n // eslint-disable-next-line no-unused-vars\n const rangeable = new Rangeable('.keen-dataviz-slider', {\n multiple: true,\n min: minRange,\n max: maxRange,\n value: [minRange, maxRange],\n onChange: data => handleSliderChange(data),\n });\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${getColor()};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${getColor()} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${getColor()};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement('style');\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector('script');\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const xLabelBase = 5;\n const yLabelBase = 10;\n\n const getAxisLabelRatio = (base, labelSize) => Math.floor(labelSize / base) + 1;\n const xAxis = d3.scaleBand()\n .range([0, svgWidth])\n .domain([...xLabel])\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .attr('transform', `translate(0, ${svgHeight})`)\n .call(d3.axisBottom(xAxis).tickSize(0))\n .selectAll('text')\n .attr('dy', '1em')\n .filter((d, i) => i % getAxisLabelRatio(xLabelBase, xLabel.size))\n .style('display', 'none');\n\n const yAxis = d3.scaleBand()\n .range([svgHeight, 0])\n .domain([...yLabel].sort())\n .padding(0.02);\n\n svg.append('g')\n .style('font-size', 12)\n .call(d3.axisLeft(yAxis).tickSize(0))\n .selectAll('text')\n .filter((d, i) => i % getAxisLabelRatio(yLabelBase, yLabel.size))\n .style('display', 'none');\n\n const chartTooltip = d3.select(container)\n .append('div')\n .attr('class', 'keen-dataviz-tooltip')\n .style('opacity', 0)\n .style('background-color', 'white')\n .style('border', `2px solid ${getColor().toString()}`)\n .style('font-size', '14px')\n .style('padding', '2px 8px')\n .style('box-shadow', '2px 2px 4px rgba(0,0,0,0.25')\n .style('display', 'none')\n .style('position', 'fixed');\n\n const handleMouseOver = () => {\n d3.select(d3.event.target)\n .raise()\n .style('transition', 'transform 150ms ease-out')\n .style('outline', `1px solid ${getColor()}`)\n .style('transform', 'translate(0px, -4px)');\n\n chartTooltip\n .style('opacity', 1)\n .style('display', 'block');\n };\n\n const handleMouseMove = (d) => {\n let tooltipContent = `\n \n value:\n ${d.value}\n `;\n if (!simpleTooltip) {\n tooltipContent = `\n \n xAxis:\n ${d.x}\n \n \n yAxis:\n ${d.y}\n \n ${tooltipContent}\n `;\n }\n chartTooltip\n .html(`\n \n ${tooltipContent}\n
\n `)\n .style('left', `${d3.event.clientX + 10}px`)\n .style('top', `${d3.event.clientY + 10}px`);\n };\n\n const handleMouseLeave = () => {\n d3.select(d3.event.target)\n .style('outline', 'none')\n .style('transform', 'none');\n\n chartTooltip\n .style('opacity', 0)\n .style('display', 'none');\n };\n\n const handleClick = d => copyToClipboard(d.value);\n\n svg.selectAll()\n .data(formattedData, d => `${d.x}:${d.y}`)\n .enter()\n .append('rect')\n .attr('x', d => xAxis(d.x))\n .attr('y', d => yAxis(d.y))\n .attr('width', xAxis.bandwidth())\n .attr('height', yAxis.bandwidth())\n .style('fill', d => getTileColor(d.value))\n .style('cursor', 'pointer')\n .on('mouseover', handleMouseOver)\n .on('mousemove', handleMouseMove)\n .on('mouseleave', handleMouseLeave)\n .on('click', handleClick);\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = this.el().querySelector('.c3-chart');\n chartContainer.remove();\n }\n}\n","import * as d3 from \"d3\";\nimport Rangeable from \"rangeable\";\nimport { prettyNumber } from \"../../utils/pretty-number\";\nimport copyToClipboard from \"../../utils/copy-to-clipboard\";\n\nexport default class Choropleth {\n render() {\n const { matrix } = this.dataset;\n const {\n colors,\n container,\n utils,\n title,\n choropleth: {\n map,\n borders: { show, size, color },\n showSlider\n }\n } = this.config;\n const opts = this.config;\n const choroplethContainer = d3.select(container);\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n const width = Number(choroplethContainer.style(\"width\").slice(0, -2));\n const height = Number(choroplethContainer.style(\"height\").slice(0, -2));\n let heightChanges = 0;\n if (title) heightChanges += 31;\n if (showSlider) heightChanges += 20;\n const chart = chartContainer\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height - heightChanges);\n\n const onlyValues = matrix.slice(1).map(el => el[1]);\n let minVal = d3.min(onlyValues);\n const maxVal = d3.max(onlyValues);\n if(minVal === maxVal) minVal = 0;\n const lightColor = d3.hsl(colors[0]).brighter(1);\n lightColor.l = 0.95;\n const darkColor = colors[0];\n const ramp = d3\n .scaleLinear()\n .domain([minVal === undefined ? 0 : minVal, maxVal === undefined ? 0 : maxVal])\n .range([lightColor, darkColor]);\n\n d3.json(\n `https://cdn.jsdelivr.net/npm/keen-dataviz-maps@1.0.0/maps/${map}.json`\n ).then(data => {\n const zoom = d3\n .zoom()\n .scaleExtent([1, 5])\n .translateExtent([[0, 0], [width, height - 50]])\n .on(\"zoom\", zoomed);\n\n let projection;\n switch (map) {\n case \"world\":\n projection = d3.geoMercator().fitSize([width, height - 50], data);\n break;\n case \"us\":\n projection = d3\n .geoAlbersUsa()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n\n default:\n projection = d3\n .geoMercator()\n .scale(width)\n .fitSize([width, height - 50], data);\n break;\n }\n\n const path = d3.geoPath().projection(projection);\n\n const usData = data.features.map(el => {\n const theOne = matrix.filter(d => d[0] === el.properties.name);\n if (theOne[0])\n return {\n ...el,\n properties: { ...el.properties, result: theOne[0][1] }\n };\n return {\n ...el,\n properties: { ...el.properties, result: 0 }\n };\n });\n\n if (showSlider) {\n const handleSliderChange = data => {\n const el = chart.selectAll(`.${elementName}`);\n const [min, max] = data;\n\n el.each((d, i, nodes) => {\n d3.select(nodes[i]).style(\"visibility\", () =>\n d.properties.result > max || d.properties.result < min\n ? \"hidden\"\n : \"visible\"\n );\n });\n };\n\n chartContainer\n .style(\"display\", \"flex\")\n .style(\"flex-direction\", \"column\")\n .style(\"justify-content\", \"center\");\n\n const rangeContainer = chartContainer\n .append(\"div\")\n .style(\"width\", \"95%\")\n .style(\"margin\", \"auto\");\n rangeContainer.append(\"input\").attr(\"id\", \"rangeSlider\");\n\n const rangeable = new Rangeable(\"#rangeSlider\", {\n type: \"double\",\n tooltips: true,\n min: 0,\n max: maxVal,\n onChange: data => handleSliderChange(data)\n });\n\n const containerToString = container.className ? `.${container.className.replace(/\\s/g, '.')}` : container;\n const customStyle = `\n ${containerToString} .rangeable-progress,\n ${containerToString} .rangeable-tooltip,\n ${containerToString} .active {\n background-color: ${colors[0]};\n }\n ${containerToString} .rangeable-tooltip::before {\n border-color: ${colors[0]} transparent transparent;\n }\n ${containerToString} .rangeable-handle {\n border-color: ${colors[0]};\n }\n `;\n\n // eslint-disable-next-line no-undef\n const style = document.createElement(\"style\");\n style.innerHTML = customStyle;\n\n // eslint-disable-next-line no-undef\n const scriptRef = document.querySelector(\"script\");\n scriptRef.parentNode.insertBefore(style, scriptRef);\n }\n\n const elementName = map === \"world\" ? \"country\" : \"state\";\n\n chart\n .selectAll(\"path\")\n .data(usData)\n .enter()\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"class\", elementName)\n .attr(\n \"id\",\n d =>\n `${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .attr(\"cursor\", \"pointer\")\n .on(\"mouseover\", handleMouseOver)\n .on(\"mousemove\", handleMouseMove)\n .on(\"mouseout\", handleMouseOut);\n\n //borders\n if (show) {\n chart\n .selectAll(`.${elementName}`)\n .style(\"stroke\", color)\n .style(\"stroke-width\", size);\n }\n\n //tooltip\n const tooltip = d3\n .select(\".c3-chart\")\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"c3-tooltip-container\")\n .style(\"display\", \"none\")\n .style(\"position\", \"fixed\");\n\n //hover handling\n function handleMouseOver(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(1.2 * maxVal))\n .style(\"stroke-width\", 1.5 * size);\n\n tooltip.style(\"opacity\", 1).style(\"display\", \"block\");\n }\n\n function handleMouseMove(d) {\n let result = d.properties.result;\n if (\n (typeof opts[\"prettyNumber\"] === \"undefined\" ||\n opts[\"prettyNumber\"] === true) &&\n !isNaN(parseInt(d.properties.result))\n ) {\n result = prettyNumber(d.properties.result);\n }\n tooltip\n .html(\n `\n \n \n \n \n \n \n \n
${d.properties.name}
${result}
\n `\n )\n .style(\"left\", `${d3.event.clientX + 10}px`)\n .style(\"top\", `${d3.event.clientY + 10}px`);\n }\n function handleMouseOut(d) {\n chart\n .select(\n `#${d.properties.name\n .split(\" \")\n .join(\"-\")\n .split(\".\")\n .join(\"\")}`\n )\n .style(\"fill\", d => ramp(d.properties.result))\n .style(\"stroke-width\", size);\n\n tooltip.style(\"opacity\", 0).style(\"display\", \"none\");\n }\n\n // click to copy\n if (utils && utils.clickToCopyToClipboard) {\n const label = chart.selectAll(`.${elementName}`);\n\n label.on(\"click\", handleClickToCopy);\n\n function handleClickToCopy(data) {\n const {\n properties: { result }\n } = data;\n copyToClipboard(result, d3.event);\n }\n }\n function zoomed() {\n chart\n .selectAll(`.${elementName}`)\n .attr(\"transform\", d3.event.transform);\n }\n chart.call(zoom);\n chart.call(zoom).on(\"mousedown.zoom\", null);\n });\n }\n update() {\n this.destroy();\n this.render();\n }\n destroy() {\n const chartContainer = d3.select(\n this.el().querySelector(`.${this.config.theme}-rendering .c3-chart`)\n );\n chartContainer.remove();\n }\n}\n","import copyToClipboard from './copy-to-clipboard';\n\nfunction removeClassWithTimeOut(element, className = 'copied', ms = 1000) {\n setTimeout(() => {\n element.classList.remove(className);\n }, ms);\n}\n\nfunction handleCopyToClipboard(event) {\n const { target, target: { nodeName } } = event;\n\n let value;\n if (nodeName === 'DD') {\n value = target.innerText;\n if (!target.classList.contains('copied')) {\n target.classList.add('copied');\n removeClassWithTimeOut(target);\n }\n }\n if (nodeName === 'DT') {\n value = target.nextSibling.innerText;\n if (!target.nextSibling.classList.contains('copied')) {\n target.nextSibling.classList.add('copied');\n removeClassWithTimeOut(target.nextSibling);\n }\n }\n\n copyToClipboard(value);\n}\n\nexport default function renderExecutionMetadata({\n element,\n data,\n} = {}) {\n const dataList = document.createElement('dl');\n dataList.classList = 'keen-dataviz-execution-meta';\n\n if (Object.keys(data).length) {\n Object.keys(data).forEach((item) => {\n const dt = document.createElement('dt');\n dt.innerText = item.replace(/_/g, ' ');\n dt.addEventListener('click', e => handleCopyToClipboard(e));\n\n const dd = document.createElement('dd');\n dd.innerText = data[item];\n dd.addEventListener('click', e => handleCopyToClipboard(e));\n\n dataList.append(dt);\n dataList.append(dd);\n });\n } else {\n dataList.innerText = 'No execution metadata available';\n }\n\n element.append(dataList);\n}\n","import autocollector from './autocollector';\nimport modern from './modern';\nimport dracula from './dracula';\n\nexport default {\n autocollector,\n modern,\n dracula,\n};","const palette = {\n colors: [\n '#5E77FF',\n '#9C60FE',\n '#F162FE',\n '#FD65B7',\n '#FD6768',\n '#FDB86A',\n '#F2FC6C',\n '#A5FC6E',\n '#71FB85',\n '#73FBD0',\n '#76DDFA',\n '#76f4fa',\n '#bb76fa',\n '#fa76bf'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#45B2E8',\n '#D9540D',\n '#2CAB72',\n '#2C4BAB',\n '#EDDD02',\n '#E84545',\n '#E845CE',\n '#5FCEC9',\n '#E89F45',\n '#28E43F',\n '#B765C0',\n '#458AE8',\n '#AB2C2C',\n '#AB2C75',\n '#27E5FF',\n '#7168F2',\n '#FF932B',\n '#855D00',\n '#ACE845',\n '#1C91B4'\n ]\n};\n\nexport default palette;","const palette = {\n colors: [\n '#8be9fd',\n '#50fa7b',\n '#ffb86c',\n '#ff79c6',\n '#bd93f9',\n '#ff5555',\n '#f1fa8c',\n ]\n};\n\nexport default palette;"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 379ca50..89294f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "keen-dataviz", - "version": "3.14.4", + "version": "3.14.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 0bddef8..9a235ac 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "keen-dataviz", "description": "Data Visualization SDK for Keen IO", "license": "MIT", - "version": "3.14.4", + "version": "3.14.5", "main": "dist/external_d3_c3/node/keen-dataviz.js", "browser": "dist/external_d3_c3/keen-dataviz.js", "style": "dist/keen-dataviz.css",